@lipemat/js-boilerplate 10.3.0-beta.1 → 10.3.0-beta.3

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.
@@ -1,19 +1,17 @@
1
- const {getDefaultBrowsersList} = require( '../helpers/config' );
1
+ const {getBrowsersList} = require( '../helpers/config' );
2
2
 
3
3
  const presetEnv = {
4
+ bugfixes: true,
4
5
  corejs: {
5
- version: '3.8',
6
+ version: '3.31',
6
7
  },
7
8
  shippedProposals: true,
9
+ targets: {
10
+ browsers: getBrowsersList(),
11
+ },
8
12
  useBuiltIns: 'usage',
9
13
  };
10
14
 
11
- /**
12
- * Use shared browserslist configurations.
13
- */
14
- if ( getDefaultBrowsersList() ) {
15
- presetEnv.targets = getDefaultBrowsersList();
16
- }
17
15
 
18
16
  module.exports = {
19
17
  cacheDirectory: true,
@@ -1,10 +1,11 @@
1
1
  const path = require( 'path' );
2
2
  const fs = require( 'fs' );
3
3
  const postcssPresetEnv = require( 'postcss-preset-env' );
4
- const {getDefaultBrowsersList} = require( '../helpers/config' );
4
+ const {getBrowsersList} = require( '../helpers/config' );
5
5
  const packageConfig = require( '../helpers/package-config' );
6
6
 
7
7
  const presetEnv = {
8
+ browsers: getBrowsersList(),
8
9
  features: {
9
10
  /**
10
11
  * Fixes `focus-visible` feature for CSS modules (included by preset-env anywhere
@@ -27,15 +28,6 @@ const presetEnv = {
27
28
  },
28
29
  };
29
30
 
30
- /**
31
- * If browserslist is not specified, we fall back to WordPress defaults.
32
- *
33
- * @link https://github.com/csstools/postcss-preset-env#browsers
34
- */
35
- if ( getDefaultBrowsersList() ) {
36
- presetEnv.browsers = getDefaultBrowsersList();
37
- }
38
-
39
31
  /**
40
32
  * If a media-queries files exist, automatically load them.
41
33
  *
@@ -4,7 +4,7 @@ const path = require( 'path' );
4
4
  const ForkTsCheckerWebpackPlugin = require( 'fork-ts-checker-webpack-plugin' );
5
5
  const config = require( '../helpers/package-config' );
6
6
  const {getEntries} = require( '../helpers/entries' );
7
- const {getConfig, getTsConfigFile} = require( '../helpers/config' );
7
+ const {getConfig, getTsConfigFile, getBrowsersList} = require( '../helpers/config' );
8
8
 
9
9
  const postcssOptions = getConfig( 'postcss.config.js' );
10
10
  const babelOptions = getConfig( 'babel.config.js' );
@@ -44,6 +44,7 @@ module.exports = {
44
44
  externals: {
45
45
  jquery: 'jQuery',
46
46
  },
47
+ target: 'browserslist:' + getBrowsersList().join( ', ' ),
47
48
  output: {
48
49
  path: path.resolve( config.workingDirectory, 'dist' ),
49
50
  filename: '[name].js',
@@ -5,9 +5,10 @@ const MiniCssExtractPlugin = require( 'mini-css-extract-plugin' );
5
5
  const {CleanWebpackPlugin} = require( 'clean-webpack-plugin' );
6
6
  const WebpackAssetsManifest = require( 'webpack-assets-manifest' );
7
7
  const {SubresourceIntegrityPlugin} = require( 'webpack-subresource-integrity' );
8
+ const ForkTsCheckerWebpackPlugin = require( 'fork-ts-checker-webpack-plugin' );
8
9
 
9
10
  const WebpackAssetsHash = require( '../helpers/WebpackAssetsHash' );
10
- const {getConfig} = require( '../helpers/config' );
11
+ const {getConfig, getTsConfigFile, getBrowsersList} = require( '../helpers/config' );
11
12
  const moduleHelpers = require( '../helpers/modules' );
12
13
  const config = require( '../helpers/package-config' );
13
14
  const {getEntries} = require( '../helpers/entries' );
@@ -35,6 +36,12 @@ const plugins = [
35
36
  // Remove all files except the `.running` file created by "Start".
36
37
  cleanOnceBeforeBuildPatterns: [ '**/*', '!.running' ],
37
38
  } ),
39
+ new ForkTsCheckerWebpackPlugin( {
40
+ formatter: 'basic',
41
+ typescript: {
42
+ configFile: getTsConfigFile(),
43
+ },
44
+ } ),
38
45
  new SubresourceIntegrityPlugin( {
39
46
  hashFuncNames: [ 'sha384' ],
40
47
  } ),
@@ -89,7 +96,7 @@ module.exports = {
89
96
  externals: {
90
97
  jquery: 'jQuery',
91
98
  },
92
- target: [ 'web', 'es5' ],
99
+ target: 'browserslist:' + getBrowsersList().join( ', ' ),
93
100
  output: {
94
101
  path: path.resolve( config.workingDirectory, 'dist' ),
95
102
  filename: '[name].js',
package/helpers/config.js CHANGED
@@ -132,12 +132,34 @@ function getTsConfigFile() {
132
132
  return tsConfig;
133
133
  }
134
134
 
135
+ /**
136
+ * Get the browserslist from the current project.
137
+ *
138
+ * - If specified using standard browserslist config, we will use that.
139
+ * - Fallback to WordPress defaults except for "> 1%".
140
+ */
141
+ function getBrowsersList() {
142
+ const projectBrowsersList = browserslist();
143
+ if ( browserslist( browserslist.defaults ) === projectBrowsersList ) {
144
+ return require( '@wordpress/browserslist-config' ).map( range => {
145
+ // Swap out "> 1%" for "> 2%".
146
+ return '> 1%' === range ? '> 2%' : range;
147
+ } );
148
+ }
149
+ return projectBrowsersList;
150
+ }
135
151
 
136
152
  /**
137
153
  * If browserslist is not specified, we fall back to WordPress defaults
138
154
  * except for > 1% we don't support by default.
139
155
  *
140
- * Return false if a browserslist is specified in the current project.
156
+ * - Return the default browserslist if the current project does not specify one.
157
+ * - Return false if a browserslist is specified, or JEST is running.
158
+ *
159
+ * Used in cases where we can fall back to standard browserslist config if the project
160
+ * has not specified one.
161
+ *
162
+ * @deprecated Use getBrowsersList instead.
141
163
  *
142
164
  * @link https://github.com/browserslist/browserslist#config-file
143
165
  *
@@ -160,6 +182,7 @@ const getDefaultBrowsersList = once( () => {
160
182
 
161
183
 
162
184
  module.exports = {
185
+ getBrowsersList,
163
186
  getConfig,
164
187
  getDefaultBrowsersList,
165
188
  getExtensionsConfig,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lipemat/js-boilerplate",
3
- "version": "10.3.0-beta.1",
3
+ "version": "10.3.0-beta.3",
4
4
  "description": "Dependencies and scripts for a no config JavaScript app",
5
5
  "author": "Mat Lipe",
6
6
  "license": "MIT",
@@ -39,7 +39,7 @@
39
39
  "@babel/core": "^7.4.3",
40
40
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
41
41
  "@babel/plugin-transform-react-jsx-source": "^7.12.1",
42
- "@babel/preset-env": "^7.12.11",
42
+ "@babel/preset-env": "^7.22.9",
43
43
  "@babel/preset-react": "^7.12.10",
44
44
  "@babel/preset-typescript": "^7.12.7",
45
45
  "@lipemat/css-mqpacker": "^9.0.0",
@@ -53,7 +53,7 @@
53
53
  "clean-css": "^5.3.0",
54
54
  "clean-webpack-plugin": "^4.0.0",
55
55
  "compression-webpack-plugin": "^10.0.0",
56
- "core-js": "^3.8.3",
56
+ "core-js": "^3.31.1",
57
57
  "cross-spawn": "^6.0.5",
58
58
  "css-loader": "6.7.1",
59
59
  "fork-ts-checker-webpack-plugin": "^7.2.13",
@@ -84,5 +84,8 @@
84
84
  "webpack-dev-server": "^4.7.2",
85
85
  "webpack-subresource-integrity": "^5.1.0"
86
86
  },
87
+ "devDependencies": {
88
+ "@types/jest": "^29.5.3"
89
+ },
87
90
  "packageManager": "yarn@3.6.0"
88
91
  }
@@ -1,6 +1,5 @@
1
- const path = require( 'path' );
2
1
  const browserslist = require( 'browserslist' );
3
- const {getDefaultBrowsersList} = require( '../helpers/config' );
2
+ const {getBrowsersList} = require( '../helpers/config' );
4
3
 
5
4
  const help = `
6
5
  List browsers being targeted by Babel and PostCSS.
@@ -19,9 +18,7 @@ if ( args[ 0 ] && ( '-h' === args[ 0 ] || '--help' === args[ 0 ] ) ) {
19
18
  }
20
19
 
21
20
 
22
- const provided = getDefaultBrowsersList() || browserslist.loadConfig( {
23
- path: path.resolve( '.' ),
24
- } );
21
+ const provided = getBrowsersList();
25
22
 
26
23
  console.log( '' );
27
24
  console.log( 'JS Provided Browserslist' );
package/scripts/dist.js CHANGED
@@ -14,10 +14,8 @@ async function build( config ) {
14
14
  throw err;
15
15
  }
16
16
 
17
- const info = stats.toJson();
18
-
19
17
  if ( stats.hasErrors() ) {
20
- console.error( info.errors );
18
+ console.error( stats.toString( config.stats ) );
21
19
  process.exit( 1 );
22
20
  } else {
23
21
  console.log( stats.toString( config.stats ) );