wp-blank-scripts 3.0.0-beta.1 → 3.0.0-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -10
- package/config/lint-staged.config.js +1 -1
- package/logger.js +1 -1
- package/overridable/checkProjectDependencies.js +28 -25
- package/package.json +2 -3
- package/utils/checkNodeVersion.js +3 -1
- package/webpack.base.config.js +10 -12
- package/webpack.react.config.js +33 -47
- package/config/.huskyrc.js +0 -6
package/README.md
CHANGED
|
@@ -2,7 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
CLI and build tool for Wordpress projects.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Upgrade to v3
|
|
6
|
+
|
|
7
|
+
Surprisingly there are no breaking changes.
|
|
8
|
+
|
|
9
|
+
**v3 Warnings**
|
|
10
|
+
|
|
11
|
+
#### Sass division outside of calc() deprecated
|
|
12
|
+
|
|
13
|
+
Deprecation Using / for division outside of calc() is deprecated and will be removed in Dart Sass 2.0.0.
|
|
14
|
+
Recommendation: math.div(-$grid-gutter, 2) or calc(-1 * $grid-gutter / 2). More info and automated migrator: https://sass-lang.com/d/slash-div
|
|
15
|
+
|
|
16
|
+
Fix:
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
npm install -g sass-migrator
|
|
20
|
+
sass-migrator division **/*.scss
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Project Structure
|
|
6
25
|
|
|
7
26
|
```
|
|
8
27
|
/
|
|
@@ -290,21 +309,13 @@ exports.copyFiles = (paths) => {
|
|
|
290
309
|
},
|
|
291
310
|
{
|
|
292
311
|
// Copy files inside a directory the the theme
|
|
293
|
-
from: path.join(sourceDir, 'new-directory'
|
|
312
|
+
from: path.join(sourceDir, 'new-directory'),
|
|
294
313
|
to: themePath,
|
|
295
|
-
transformPath(targetPath) {
|
|
296
|
-
// Need to fix the path
|
|
297
|
-
return targetPath.replace(path.join(sourceDir, 'new-directory'), '');
|
|
298
|
-
},
|
|
299
314
|
},
|
|
300
315
|
{
|
|
301
316
|
// Copy file from a directory to the root directory
|
|
302
317
|
from: path.join(sourceDir, 'directory-file-was-in', 'file.txt'),
|
|
303
318
|
to: '',
|
|
304
|
-
transformPath(targetPath) {
|
|
305
|
-
// Need to fix the path again, otherwise it will stay in the directory
|
|
306
|
-
return targetPath.replace('directory-file-was-in', '');
|
|
307
|
-
},
|
|
308
319
|
},
|
|
309
320
|
{
|
|
310
321
|
// Copy all files from vendor (except vivo-digital & johnpbloch) to the theme/inc/vendor
|
package/logger.js
CHANGED
|
@@ -1,34 +1,12 @@
|
|
|
1
1
|
const fs = require('fs');
|
|
2
2
|
const chalk = require('chalk');
|
|
3
|
+
const rimraf = require('rimraf');
|
|
3
4
|
|
|
4
5
|
const logger = require('../logger');
|
|
5
6
|
const getProjectPath = require('../utils/getProjectPath');
|
|
7
|
+
const execAsync = require('../utils/execAsync');
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
function checkProjectDependencies() {
|
|
10
|
-
const projectPackage = getProjectPath('package.json');
|
|
11
|
-
const pck = JSON.parse(fs.readFileSync(projectPackage, 'utf8'));
|
|
12
|
-
const { dependencies, devDependencies } = pck;
|
|
13
|
-
|
|
14
|
-
// Babel polyfill/runtime check
|
|
15
|
-
if (BABEL.some(name => dependencies[name])) {
|
|
16
|
-
logger.warn(
|
|
17
|
-
`${chalk.bold('babel polyfill or runtimeyfi')} is no longer required with >=0.4.0.
|
|
18
|
-
Please remove it from your project devDependencies: ${chalk.yellow(
|
|
19
|
-
`yarn remove ${BABEL.join(' ')}`
|
|
20
|
-
)}`
|
|
21
|
-
);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
// mamp-cli
|
|
25
|
-
if (devDependencies['mamp-cli']) {
|
|
26
|
-
logger.warn(
|
|
27
|
-
`${chalk.bold('mamp-cli')} is no longer required with >=2.0.0.
|
|
28
|
-
Please remove it from your project devDependencies: ${chalk.yellow('yarn remove mamp-cli')}`
|
|
29
|
-
);
|
|
30
|
-
}
|
|
31
|
-
|
|
9
|
+
async function checkProjectDependencies() {
|
|
32
10
|
const vendorDir = getProjectPath('vendor');
|
|
33
11
|
const hasInstalledComposer = fs.existsSync(vendorDir);
|
|
34
12
|
if (!hasInstalledComposer) {
|
|
@@ -45,6 +23,31 @@ function checkProjectDependencies() {
|
|
|
45
23
|
// Warn if fx-classes < v2 is being used
|
|
46
24
|
logger.warn('You are using an old version of fx-classes, please upgrade to at least v2.');
|
|
47
25
|
}
|
|
26
|
+
|
|
27
|
+
// Husky pre-commit hooks activation and migration from v4 to v8
|
|
28
|
+
const huskyDirectory = getProjectPath('.husky');
|
|
29
|
+
const oldHuskyConfig = getProjectPath('.huskyrc.js');
|
|
30
|
+
|
|
31
|
+
// Delete old config if it exists
|
|
32
|
+
if (fs.existsSync(oldHuskyConfig)) {
|
|
33
|
+
try {
|
|
34
|
+
rimraf.sync(oldHuskyConfig);
|
|
35
|
+
logger.info('Old Husky config deleted');
|
|
36
|
+
} catch (err) {
|
|
37
|
+
console.warn('Error while deleting old Husky config:', err);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (!fs.existsSync(huskyDirectory)) {
|
|
42
|
+
// Husky now requires a "one-time" explicit git hook activation
|
|
43
|
+
const husky = `node_modules/.bin/husky`;
|
|
44
|
+
|
|
45
|
+
await execAsync(`${husky} install`);
|
|
46
|
+
logger.info('Upgrading Husky git hooks config');
|
|
47
|
+
await execAsync(`${husky} add .husky/pre-commit 'npx lint-staged'`);
|
|
48
|
+
await execAsync(`${husky} add .husky/post-merge 'wp-scripts hooks --type="post-merge"'`);
|
|
49
|
+
logger.success('Husky upgrade successful!');
|
|
50
|
+
}
|
|
48
51
|
}
|
|
49
52
|
|
|
50
53
|
module.exports = checkProjectDependencies;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wp-blank-scripts",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.5",
|
|
4
4
|
"description": "Personal Wordpress Scripts",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
11
11
|
},
|
|
12
12
|
"engines": {
|
|
13
|
-
"node": ">=
|
|
13
|
+
"node": ">=10"
|
|
14
14
|
},
|
|
15
15
|
"files": [
|
|
16
16
|
"cli",
|
|
@@ -79,7 +79,6 @@
|
|
|
79
79
|
"style-loader": "^3.3.3",
|
|
80
80
|
"tempy": "^0.2.1",
|
|
81
81
|
"terser-webpack-plugin": "^5.3.9",
|
|
82
|
-
"time-fix-plugin": "^2.0.7",
|
|
83
82
|
"webpack": "^5.87.0",
|
|
84
83
|
"webpack-dev-middleware": "^6.1.1",
|
|
85
84
|
"webpack-hot-middleware": "^2.25.3",
|
|
@@ -34,7 +34,9 @@ async function checkNodeVerion() {
|
|
|
34
34
|
const currentVersion = await getCurrentNodeVersion();
|
|
35
35
|
|
|
36
36
|
if (projectVersion && !isValidNodeVersion(projectVersion, currentVersion)) {
|
|
37
|
-
logger.warn(
|
|
37
|
+
logger.warn(
|
|
38
|
+
`Your node version (v${currentVersion}) is not valid. This project requires node ${projectVersion}.`
|
|
39
|
+
);
|
|
38
40
|
}
|
|
39
41
|
}
|
|
40
42
|
|
package/webpack.base.config.js
CHANGED
|
@@ -5,7 +5,6 @@ const CopyPlugin = require('copy-webpack-plugin');
|
|
|
5
5
|
const RemoveEmptyScriptsPlugin = require('webpack-remove-empty-scripts');
|
|
6
6
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
|
7
7
|
const TerserPlugin = require('terser-webpack-plugin');
|
|
8
|
-
const TimeFixPlugin = require('time-fix-plugin');
|
|
9
8
|
const cssnano = require('cssnano');
|
|
10
9
|
const glob = require('glob');
|
|
11
10
|
const postcssPresetEnv = require('postcss-preset-env');
|
|
@@ -35,6 +34,7 @@ function makeBaseConfig(options) {
|
|
|
35
34
|
const themePath = path.join(buildPath, themeDir);
|
|
36
35
|
|
|
37
36
|
const fxFiles = getFxFiles(copyFx());
|
|
37
|
+
const fontsDir = path.join(sourceDir, 'assets', 'fonts');
|
|
38
38
|
|
|
39
39
|
const sourceFiles = [
|
|
40
40
|
{
|
|
@@ -51,11 +51,15 @@ function makeBaseConfig(options) {
|
|
|
51
51
|
to: path.join(themePath, 'assets', 'img'),
|
|
52
52
|
globOptions: { ignore: ['.DS_Store'] },
|
|
53
53
|
},
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
...(fs.existsSync(fontsDir)
|
|
55
|
+
? [
|
|
56
|
+
{
|
|
57
|
+
from: fontsDir,
|
|
58
|
+
to: path.join(themePath, 'assets', 'fonts'),
|
|
59
|
+
globOptions: { ignore: ['.DS_Store'] },
|
|
60
|
+
},
|
|
61
|
+
]
|
|
62
|
+
: []),
|
|
59
63
|
{
|
|
60
64
|
from: path.join(sourceDir, 'templates'),
|
|
61
65
|
to: themePath,
|
|
@@ -173,7 +177,6 @@ function makeBaseConfig(options) {
|
|
|
173
177
|
loader: 'esbuild-loader',
|
|
174
178
|
options: {
|
|
175
179
|
loader: 'jsx',
|
|
176
|
-
// TODO: Remove in react build
|
|
177
180
|
jsxFactory: 'wp.element.createElement',
|
|
178
181
|
target: 'es2015',
|
|
179
182
|
},
|
|
@@ -248,11 +251,6 @@ function makeBaseConfig(options) {
|
|
|
248
251
|
],
|
|
249
252
|
resolve: {
|
|
250
253
|
symlinks: false,
|
|
251
|
-
alias: {
|
|
252
|
-
scrollmagic: path.resolve(
|
|
253
|
-
'node_modules/scrollmagic/scrollmagic/minified/ScrollMagic.min.js'
|
|
254
|
-
),
|
|
255
|
-
},
|
|
256
254
|
},
|
|
257
255
|
devtool: isProd ? undefined : 'cheap-module-source-map',
|
|
258
256
|
performance: {
|
package/webpack.react.config.js
CHANGED
|
@@ -35,7 +35,7 @@ function makeReactWebpackConfig(options) {
|
|
|
35
35
|
main: entryPath,
|
|
36
36
|
},
|
|
37
37
|
output: {
|
|
38
|
-
filename: chunkData => {
|
|
38
|
+
filename: (chunkData) => {
|
|
39
39
|
if (chunkData.chunk.name === 'adminScripts') {
|
|
40
40
|
return path.join(themeDir, 'assets', 'js', 'admin.js');
|
|
41
41
|
}
|
|
@@ -46,16 +46,24 @@ function makeReactWebpackConfig(options) {
|
|
|
46
46
|
},
|
|
47
47
|
module: {
|
|
48
48
|
rules: [
|
|
49
|
+
{
|
|
50
|
+
test: /\.[jt]sx?$/,
|
|
51
|
+
exclude: /node_modules\/(?!(dom7|swiper)\/)/,
|
|
52
|
+
use: {
|
|
53
|
+
loader: 'esbuild-loader',
|
|
54
|
+
options: {
|
|
55
|
+
loader: 'jsx',
|
|
56
|
+
jsxFactory: 'React.createElement',
|
|
57
|
+
target: 'es2015',
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
},
|
|
49
61
|
{
|
|
50
62
|
test: /\.css$/,
|
|
51
63
|
include: [sourcePath],
|
|
52
64
|
use: [
|
|
53
65
|
{
|
|
54
|
-
loader: MiniCssExtractPlugin.loader,
|
|
55
|
-
options: {
|
|
56
|
-
hmr: !isProd,
|
|
57
|
-
reloadAll: true,
|
|
58
|
-
},
|
|
66
|
+
loader: !isProd ? 'style-loader' : MiniCssExtractPlugin.loader,
|
|
59
67
|
},
|
|
60
68
|
{
|
|
61
69
|
loader: 'css-loader',
|
|
@@ -64,14 +72,15 @@ function makeReactWebpackConfig(options) {
|
|
|
64
72
|
{
|
|
65
73
|
loader: 'postcss-loader',
|
|
66
74
|
options: {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
75
|
+
postcssOptions: {
|
|
76
|
+
plugins() {
|
|
77
|
+
if (isProd) {
|
|
78
|
+
return [postcssPresetEnv(), cssnano()];
|
|
79
|
+
}
|
|
80
|
+
return [postcssPresetEnv({ browsers: 'last 2 versions' })];
|
|
81
|
+
},
|
|
82
|
+
sourceMap: !isProd,
|
|
73
83
|
},
|
|
74
|
-
sourceMap: true,
|
|
75
84
|
},
|
|
76
85
|
},
|
|
77
86
|
],
|
|
@@ -79,13 +88,9 @@ function makeReactWebpackConfig(options) {
|
|
|
79
88
|
{
|
|
80
89
|
test: /\.scss$/,
|
|
81
90
|
include: [sourcePath],
|
|
82
|
-
|
|
91
|
+
use: [
|
|
83
92
|
{
|
|
84
|
-
loader: MiniCssExtractPlugin.loader,
|
|
85
|
-
options: {
|
|
86
|
-
hmr: !isProd,
|
|
87
|
-
reloadAll: true,
|
|
88
|
-
},
|
|
93
|
+
loader: !isProd ? 'style-loader' : MiniCssExtractPlugin.loader,
|
|
89
94
|
},
|
|
90
95
|
{
|
|
91
96
|
loader: 'css-loader',
|
|
@@ -97,14 +102,15 @@ function makeReactWebpackConfig(options) {
|
|
|
97
102
|
{
|
|
98
103
|
loader: 'postcss-loader',
|
|
99
104
|
options: {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
105
|
+
postcssOptions: {
|
|
106
|
+
plugins() {
|
|
107
|
+
if (isProd) {
|
|
108
|
+
return [postcssPresetEnv(), cssnano()];
|
|
109
|
+
}
|
|
110
|
+
return [postcssPresetEnv({ browsers: 'last 2 versions' })];
|
|
111
|
+
},
|
|
112
|
+
sourceMap: !isProd,
|
|
106
113
|
},
|
|
107
|
-
sourceMap: true,
|
|
108
114
|
},
|
|
109
115
|
},
|
|
110
116
|
{
|
|
@@ -121,19 +127,6 @@ function makeReactWebpackConfig(options) {
|
|
|
121
127
|
},
|
|
122
128
|
],
|
|
123
129
|
},
|
|
124
|
-
{
|
|
125
|
-
test: /\.(eot|ttf|woff|woff2)$/,
|
|
126
|
-
include: [sourcePath],
|
|
127
|
-
use: [
|
|
128
|
-
{
|
|
129
|
-
loader: 'file-loader',
|
|
130
|
-
options: {
|
|
131
|
-
name: '[contenthash].[ext]',
|
|
132
|
-
outputPath: path.join(themeDir, 'assets', 'fonts'),
|
|
133
|
-
},
|
|
134
|
-
},
|
|
135
|
-
],
|
|
136
|
-
},
|
|
137
130
|
{
|
|
138
131
|
test: /.*\.(gif|png|svg|jpe?g)$/i,
|
|
139
132
|
include: [sourcePath],
|
|
@@ -164,20 +157,13 @@ function makeReactWebpackConfig(options) {
|
|
|
164
157
|
excludeChunks: ['adminScripts', 'admin.style'],
|
|
165
158
|
}),
|
|
166
159
|
new MiniCssExtractPlugin({
|
|
167
|
-
|
|
160
|
+
filename({ name }) {
|
|
168
161
|
if (name === 'admin.style') {
|
|
169
162
|
return path.join(themeDir, 'assets', 'css', 'admin.style.css');
|
|
170
163
|
}
|
|
171
164
|
|
|
172
165
|
return path.join(themeDir, 'assets', 'css', isProd ? '[contenthash].css' : '[name].css');
|
|
173
166
|
},
|
|
174
|
-
fallback: 'style-loader',
|
|
175
|
-
use: [
|
|
176
|
-
{
|
|
177
|
-
loader: 'css-loader',
|
|
178
|
-
options: { minimize: isProd, url: false, sourceMap: !isProd },
|
|
179
|
-
},
|
|
180
|
-
],
|
|
181
167
|
}),
|
|
182
168
|
],
|
|
183
169
|
optimization: {
|