@caweb/webpack 1.3.0 → 1.3.2

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,70 +1,126 @@
1
1
  {
2
- "name": "@caweb/html-webpack-plugin",
3
- "version": "1.5.1",
4
- "description": "CAWebPublishing Sample Page and Configurations",
5
- "main": "index.js",
6
- "type": "module",
7
- "files": [
8
- "build",
9
- "entry",
10
- "sample",
11
- "index.js",
12
- "README.md",
13
- "webpack.config.js"
14
- ],
15
- "scripts": {
16
- "webpack": "webpack",
17
- "build": "npm run build:compressed && npm run build:uncompressed",
18
- "build:uncompressed": "webpack build --config ./webpack.config.js ./scripts/create-entrypoints.js --merge --mode development",
19
- "build:compressed": "webpack build --config ./webpack.config.js ./scripts/create-entrypoints.js --merge --mode production",
20
- "build:oceanside": "npm run build:oceanside:prod && npm run build:oceanside:dev",
21
- "build:oceanside:prod": "webpack build --config ./webpack.config.js ./entry/oceanside.js --merge --mode production",
22
- "build:oceanside:dev": "webpack build --config ./webpack.config.js ./entry/oceanside.js --merge --mode development",
23
- "postbuild": "npm run create-entrypoint && npm run generate-json",
24
- "create-entrypoint": "node ./scripts/create-entrypoints.js",
25
- "generate-json": "node ./scripts/icon.js",
26
- "serve": "webpack serve --config ./webpack.config.js ./entry/oceanside.js ./scripts/webpack.test.js --merge",
27
- "serve:quick": "set NODE_OPTIONS='--no-jshint --no-audit --no-a11y' && webpack serve --config ./webpack.config.js ./entry/oceanside.js ./scripts/webpack.test.js --merge",
28
- "test": "echo \"Error: run tests from root\" && exit 0"
29
- },
30
- "repository": {
31
- "type": "git",
32
- "url": "git+https://github.com/CAWebPublishing/webpack.git",
33
- "directory": "plugins/html"
34
- },
35
- "keywords": [
36
- "caweb",
37
- "cagov",
38
- "webpack"
39
- ],
40
- "author": "CAWebPublishing",
41
- "license": "ISC",
42
- "bugs": {
43
- "url": "https://github.com/CAWebPublishing/webpack/issues"
44
- },
45
- "publishConfig": {
46
- "access": "public"
47
- },
48
- "homepage": "https://github.com/CAWebPublishing/webpack/plugins/html#readme",
49
- "devDependencies": {
50
- "animate.css": "^4.1.1",
51
- "bootstrap": "^5.3.3",
52
- "bootstrap-forced-colors-css": "^1.0.7",
53
- "fast-xml-parser": "^4.5.0",
54
- "mini-css-extract-plugin": "^2.9.2",
55
- "rtlcss-webpack-plugin": "^4.0.7"
56
- },
57
- "dependencies": {
58
- "@caweb/a11y-webpack-plugin": "^1.0.9",
59
- "@caweb/css-audit-webpack-plugin": "^1.0.12",
60
- "@caweb/jshint-webpack-plugin": "^1.0.9",
61
- "@wordpress/scripts": "^30.4.0",
62
- "css-minimizer-webpack-plugin": "^7.0.0",
63
- "handlebars-loader": "^1.7.3",
64
- "html-webpack-link-type-plugin": "^1.1.1",
65
- "html-webpack-plugin": "^5.6.3",
66
- "html-webpack-skip-assets-plugin": "^1.0.4",
67
- "webpack": "^5.96.1",
68
- "webpack-cli": "^5.1.4"
69
- }
70
- }
2
+ "name": "@caweb/html-webpack-plugin",
3
+ "version": "1.5.3",
4
+ "description": "CAWebPublishing Sample Page and Configurations",
5
+ "main": "index.js",
6
+ "type": "module",
7
+ "files": [
8
+ "build",
9
+ "entry",
10
+ "sample",
11
+ "index.js",
12
+ "README.md",
13
+ "webpack.config.js"
14
+ ],
15
+ "scripts": {
16
+ "webpack": "webpack",
17
+ "postbuild": "npm run create-entrypoint && npm run generate-json",
18
+ "create-entrypoint": "node ./scripts/create-entrypoints.js",
19
+ "generate-json": "node ./scripts/icon.js",
20
+ "update-scripts": "node ./scripts/update-scripts.js",
21
+ "test": "echo \"Error: run tests from root\" && exit 0",
22
+ "build": "npm run build:compressed && npm run build:uncompressed",
23
+ "build:uncompressed": "webpack build --config ./webpack.config.js ./scripts/create-entrypoints.js --merge --mode development",
24
+ "build:compressed": "webpack build --config ./webpack.config.js ./scripts/create-entrypoints.js --merge --mode production",
25
+ "build:delta": "npm run build:delta:prod && npm run build:delta:dev",
26
+ "build:delta:prod": "webpack build --config ./webpack.config.js ./entry/delta.js --merge --mode production",
27
+ "build:delta:dev": "webpack build --config ./webpack.config.js ./entry/delta.js --merge --mode development",
28
+ "serve:delta": "webpack serve --config ./webpack.config.js ./entry/delta.js ./scripts/webpack.test.js --merge",
29
+ "serve:delta:quick": "set NODE_OPTIONS='--no-jshint --no-audit --no-a11y' && webpack serve --config ./webpack.config.js ./entry/delta.js ./scripts/webpack.test.js --merge",
30
+ "build:eureka": "npm run build:eureka:prod && npm run build:eureka:dev",
31
+ "build:eureka:prod": "webpack build --config ./webpack.config.js ./entry/eureka.js --merge --mode production",
32
+ "build:eureka:dev": "webpack build --config ./webpack.config.js ./entry/eureka.js --merge --mode development",
33
+ "serve:eureka": "webpack serve --config ./webpack.config.js ./entry/eureka.js ./scripts/webpack.test.js --merge",
34
+ "serve:eureka:quick": "set NODE_OPTIONS='--no-jshint --no-audit --no-a11y' && webpack serve --config ./webpack.config.js ./entry/eureka.js ./scripts/webpack.test.js --merge",
35
+ "build:mono": "npm run build:mono:prod && npm run build:mono:dev",
36
+ "build:mono:prod": "webpack build --config ./webpack.config.js ./entry/mono.js --merge --mode production",
37
+ "build:mono:dev": "webpack build --config ./webpack.config.js ./entry/mono.js --merge --mode development",
38
+ "serve:mono": "webpack serve --config ./webpack.config.js ./entry/mono.js ./scripts/webpack.test.js --merge",
39
+ "serve:mono:quick": "set NODE_OPTIONS='--no-jshint --no-audit --no-a11y' && webpack serve --config ./webpack.config.js ./entry/mono.js ./scripts/webpack.test.js --merge",
40
+ "build:oceanside": "npm run build:oceanside:prod && npm run build:oceanside:dev",
41
+ "build:oceanside:prod": "webpack build --config ./webpack.config.js ./entry/oceanside.js --merge --mode production",
42
+ "build:oceanside:dev": "webpack build --config ./webpack.config.js ./entry/oceanside.js --merge --mode development",
43
+ "serve:oceanside": "webpack serve --config ./webpack.config.js ./entry/oceanside.js ./scripts/webpack.test.js --merge",
44
+ "serve:oceanside:quick": "set NODE_OPTIONS='--no-jshint --no-audit --no-a11y' && webpack serve --config ./webpack.config.js ./entry/oceanside.js ./scripts/webpack.test.js --merge",
45
+ "build:orangecounty": "npm run build:orangecounty:prod && npm run build:orangecounty:dev",
46
+ "build:orangecounty:prod": "webpack build --config ./webpack.config.js ./entry/orangecounty.js --merge --mode production",
47
+ "build:orangecounty:dev": "webpack build --config ./webpack.config.js ./entry/orangecounty.js --merge --mode development",
48
+ "serve:orangecounty": "webpack serve --config ./webpack.config.js ./entry/orangecounty.js ./scripts/webpack.test.js --merge",
49
+ "serve:orangecounty:quick": "set NODE_OPTIONS='--no-jshint --no-audit --no-a11y' && webpack serve --config ./webpack.config.js ./entry/orangecounty.js ./scripts/webpack.test.js --merge",
50
+ "build:pasorobles": "npm run build:pasorobles:prod && npm run build:pasorobles:dev",
51
+ "build:pasorobles:prod": "webpack build --config ./webpack.config.js ./entry/pasorobles.js --merge --mode production",
52
+ "build:pasorobles:dev": "webpack build --config ./webpack.config.js ./entry/pasorobles.js --merge --mode development",
53
+ "serve:pasorobles": "webpack serve --config ./webpack.config.js ./entry/pasorobles.js ./scripts/webpack.test.js --merge",
54
+ "serve:pasorobles:quick": "set NODE_OPTIONS='--no-jshint --no-audit --no-a11y' && webpack serve --config ./webpack.config.js ./entry/pasorobles.js ./scripts/webpack.test.js --merge",
55
+ "build:sacramento": "npm run build:sacramento:prod && npm run build:sacramento:dev",
56
+ "build:sacramento:prod": "webpack build --config ./webpack.config.js ./entry/sacramento.js --merge --mode production",
57
+ "build:sacramento:dev": "webpack build --config ./webpack.config.js ./entry/sacramento.js --merge --mode development",
58
+ "serve:sacramento": "webpack serve --config ./webpack.config.js ./entry/sacramento.js ./scripts/webpack.test.js --merge",
59
+ "serve:sacramento:quick": "set NODE_OPTIONS='--no-jshint --no-audit --no-a11y' && webpack serve --config ./webpack.config.js ./entry/sacramento.js ./scripts/webpack.test.js --merge",
60
+ "build:santabarbara": "npm run build:santabarbara:prod && npm run build:santabarbara:dev",
61
+ "build:santabarbara:prod": "webpack build --config ./webpack.config.js ./entry/santabarbara.js --merge --mode production",
62
+ "build:santabarbara:dev": "webpack build --config ./webpack.config.js ./entry/santabarbara.js --merge --mode development",
63
+ "serve:santabarbara": "webpack serve --config ./webpack.config.js ./entry/santabarbara.js ./scripts/webpack.test.js --merge",
64
+ "serve:santabarbara:quick": "set NODE_OPTIONS='--no-jshint --no-audit --no-a11y' && webpack serve --config ./webpack.config.js ./entry/santabarbara.js ./scripts/webpack.test.js --merge",
65
+ "build:santacruz": "npm run build:santacruz:prod && npm run build:santacruz:dev",
66
+ "build:santacruz:prod": "webpack build --config ./webpack.config.js ./entry/santacruz.js --merge --mode production",
67
+ "build:santacruz:dev": "webpack build --config ./webpack.config.js ./entry/santacruz.js --merge --mode development",
68
+ "serve:santacruz": "webpack serve --config ./webpack.config.js ./entry/santacruz.js ./scripts/webpack.test.js --merge",
69
+ "serve:santacruz:quick": "set NODE_OPTIONS='--no-jshint --no-audit --no-a11y' && webpack serve --config ./webpack.config.js ./entry/santacruz.js ./scripts/webpack.test.js --merge",
70
+ "build:shasta": "npm run build:shasta:prod && npm run build:shasta:dev",
71
+ "build:shasta:prod": "webpack build --config ./webpack.config.js ./entry/shasta.js --merge --mode production",
72
+ "build:shasta:dev": "webpack build --config ./webpack.config.js ./entry/shasta.js --merge --mode development",
73
+ "serve:shasta": "webpack serve --config ./webpack.config.js ./entry/shasta.js ./scripts/webpack.test.js --merge",
74
+ "serve:shasta:quick": "set NODE_OPTIONS='--no-jshint --no-audit --no-a11y' && webpack serve --config ./webpack.config.js ./entry/shasta.js ./scripts/webpack.test.js --merge",
75
+ "build:sierra": "npm run build:sierra:prod && npm run build:sierra:dev",
76
+ "build:sierra:prod": "webpack build --config ./webpack.config.js ./entry/sierra.js --merge --mode production",
77
+ "build:sierra:dev": "webpack build --config ./webpack.config.js ./entry/sierra.js --merge --mode development",
78
+ "serve:sierra": "webpack serve --config ./webpack.config.js ./entry/sierra.js ./scripts/webpack.test.js --merge",
79
+ "serve:sierra:quick": "set NODE_OPTIONS='--no-jshint --no-audit --no-a11y' && webpack serve --config ./webpack.config.js ./entry/sierra.js ./scripts/webpack.test.js --merge",
80
+ "build:trinity": "npm run build:trinity:prod && npm run build:trinity:dev",
81
+ "build:trinity:prod": "webpack build --config ./webpack.config.js ./entry/trinity.js --merge --mode production",
82
+ "build:trinity:dev": "webpack build --config ./webpack.config.js ./entry/trinity.js --merge --mode development",
83
+ "serve:trinity": "webpack serve --config ./webpack.config.js ./entry/trinity.js ./scripts/webpack.test.js --merge",
84
+ "serve:trinity:quick": "set NODE_OPTIONS='--no-jshint --no-audit --no-a11y' && webpack serve --config ./webpack.config.js ./entry/trinity.js ./scripts/webpack.test.js --merge"
85
+ },
86
+ "repository": {
87
+ "type": "git",
88
+ "url": "git+https://github.com/CAWebPublishing/webpack.git",
89
+ "directory": "plugins/html"
90
+ },
91
+ "keywords": [
92
+ "caweb",
93
+ "cagov",
94
+ "webpack"
95
+ ],
96
+ "author": "CAWebPublishing",
97
+ "license": "ISC",
98
+ "bugs": {
99
+ "url": "https://github.com/CAWebPublishing/webpack/issues"
100
+ },
101
+ "publishConfig": {
102
+ "access": "public"
103
+ },
104
+ "homepage": "https://github.com/CAWebPublishing/webpack/plugins/html#readme",
105
+ "devDependencies": {
106
+ "animate.css": "^4.1.1",
107
+ "bootstrap": "^5.3.3",
108
+ "bootstrap-forced-colors-css": "^1.0.7",
109
+ "fast-xml-parser": "^4.5.0",
110
+ "mini-css-extract-plugin": "^2.9.2",
111
+ "rtlcss-webpack-plugin": "^4.0.7"
112
+ },
113
+ "dependencies": {
114
+ "@caweb/a11y-webpack-plugin": "^1.0.9",
115
+ "@caweb/css-audit-webpack-plugin": "^1.0.12",
116
+ "@caweb/jshint-webpack-plugin": "^1.0.9",
117
+ "@wordpress/scripts": "^30.4.0",
118
+ "css-minimizer-webpack-plugin": "^7.0.0",
119
+ "handlebars-loader": "^1.7.3",
120
+ "html-webpack-link-type-plugin": "^1.1.1",
121
+ "html-webpack-plugin": "^5.6.3",
122
+ "html-webpack-skip-assets-plugin": "^1.0.4",
123
+ "webpack": "^5.96.1",
124
+ "webpack-cli": "^5.1.4"
125
+ }
126
+ }
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * External dependencies
5
+ */
6
+ import fs from 'fs';
7
+ import path from 'path';
8
+ import { fileURLToPath } from 'url';
9
+
10
+ const pkg = JSON.parse( fs.readFileSync(path.resolve('package.json')) );
11
+
12
+ let scripts = {
13
+ "webpack": "webpack",
14
+ "postbuild": "npm run create-entrypoint && npm run generate-json",
15
+ "create-entrypoint": "node ./scripts/create-entrypoints.js",
16
+ "generate-json": "node ./scripts/icon.js",
17
+ "update-scripts": "node ./scripts/update-scripts.js",
18
+ "test": "echo \"Error: run tests from root\" && exit 0",
19
+ "build": "npm run build:compressed && npm run build:uncompressed",
20
+ "build:uncompressed": "webpack build --config ./webpack.config.js ./scripts/create-entrypoints.js --merge --mode development",
21
+ "build:compressed": "webpack build --config ./webpack.config.js ./scripts/create-entrypoints.js --merge --mode production",
22
+ };
23
+
24
+ // iterate over all colorschemes
25
+ fs.readdirSync(path.resolve('src', 'styles', 'colorschemes')).forEach((c) => {
26
+ let scheme = c.substring(0, c.indexOf('.')).replace(' ', '');
27
+
28
+ // add build scripts for each colorscheme
29
+ scripts[`build:${scheme}`] = `npm run build:${scheme}:prod && npm run build:${scheme}:dev`;
30
+ scripts[`build:${scheme}:prod`] = `webpack build --config ./webpack.config.js ./entry/${scheme}.js --merge --mode production`;
31
+ scripts[`build:${scheme}:dev`] = `webpack build --config ./webpack.config.js ./entry/${scheme}.js --merge --mode development`;
32
+
33
+ // add serve scripts for each colorscheme
34
+ scripts[`serve:${scheme}`] = `webpack serve --config ./webpack.config.js ./entry/${scheme}.js ./scripts/webpack.test.js --merge`;
35
+ scripts[`serve:${scheme}:quick`] = `set NODE_OPTIONS='--no-jshint --no-audit --no-a11y --scheme false' && webpack serve --config ./webpack.config.js ./entry/${scheme}.js ./scripts/webpack.test.js --merge`;
36
+
37
+ })
38
+
39
+ // update scripts in package.json
40
+ pkg.scripts = scripts;
41
+
42
+ // write package.json file
43
+ fs.writeFileSync(
44
+ 'package.json',
45
+ JSON.stringify( pkg, null, 4 )
46
+ )
@@ -50,10 +50,13 @@ function processArgs( arr ){
50
50
  return tmp
51
51
  }
52
52
 
53
- function getArgVal(flag){
54
- return flags.includes(flag) ? flags[flags.indexOf(flag) + 1] : false;
53
+ function flagExists(flag){
54
+ return flags.includes(flag)
55
55
  }
56
56
 
57
+ function getArgVal(flag){
58
+ return flagExists(flag) ? flags[flags.indexOf(flag) + 1] : false;
59
+ }
57
60
 
58
61
  // Update some of the default WordPress webpack rules.
59
62
  baseConfig.module.rules.forEach((rule, i) => {
@@ -97,12 +100,14 @@ delete baseConfig.devServer;
97
100
  let mode = getArgVal('--mode') ? getArgVal('--mode') : baseConfig.mode;
98
101
 
99
102
  let webpackConfig = {
103
+ ...baseConfig,
100
104
  mode,
101
105
  name: 'uncompressed',
102
106
  target: 'web',
103
107
  cache: false,
104
108
  stats: 'errors',
105
109
  output: {
110
+ ...baseConfig.output,
106
111
  clean: mode === 'production'
107
112
  },
108
113
  performance: {
@@ -110,7 +115,9 @@ let webpackConfig = {
110
115
  maxEntrypointSize: 500000
111
116
  },
112
117
  module:{
118
+ ...baseConfig.module,
113
119
  rules: [
120
+ ...baseConfig.module.rules,
114
121
  /**
115
122
  * Default template loader for html is lodash,
116
123
  * lets switch to handlebars
@@ -230,11 +237,11 @@ if( 'serve' === webpackCommand ){
230
237
  }
231
238
 
232
239
  // Page Template and additional plugins
233
- webpackConfig.plugins = [
240
+ webpackConfig.plugins.push(
234
241
  new CAWebHTMLPlugin({
235
242
  template,
236
243
  templateParameters: {
237
- scheme: 'false' !== scheme ? scheme : false
244
+ scheme
238
245
  },
239
246
  skipAssets: [
240
247
  /.*-rtl.css/, // we skip the Right-to-Left Styles
@@ -246,34 +253,35 @@ if( 'serve' === webpackCommand ){
246
253
  }),
247
254
  new HtmlWebpackSkipAssetsPlugin(),
248
255
  new HtmlWebpackLinkTypePlugin(),
249
- ! getArgVal('--no-jshint') ? new JSHintPlugin() : false,
250
- ! getArgVal('--no-audit') ? new CSSAuditPlugin() : false,
251
- ! getArgVal('--no-a11y') ? new A11yPlugin() : false
252
- ]
256
+ ! flagExists('--no-jshint') ? new JSHintPlugin() : false,
257
+ ! flagExists('--no-audit') ? new CSSAuditPlugin() : false,
258
+ ! flagExists('--no-a11y') ? new A11yPlugin() : false
259
+ )
253
260
  }
254
261
 
255
- export default [
256
- baseConfig,
257
- webpackConfig,
258
- mode === 'production' ?
259
- {
260
- name: 'compressed',
261
- dependencies: ['uncompressed'],
262
- devtool: false,
263
- output: {
264
- filename: '[name].min.js',
265
- chunkFilename: '[name].min.js?v=[chunkhash]',
266
- },
267
- plugins: [
268
- new MiniCSSExtractPlugin( { filename: '[name].min.css' } ),
269
- new RtlCssPlugin( { filename: '[name]-rtl.min.css' } ),
270
- ],
271
- optimization:{
272
- minimize: true,
273
- minimizer: [
274
- `...`,
275
- new CssMinimizerPlugin({test: /\.min\.css$/})
276
- ]
277
- }
278
- } : false
279
- ].filter(Boolean);
262
+ /**
263
+ * Production only
264
+ */
265
+ if( mode === 'production' ){
266
+ // Config
267
+ webpackConfig.name = 'compressed';
268
+ webpackConfig.devtool = false;
269
+
270
+ // Output
271
+ webpackConfig.output.filename = '[name].min.js';
272
+ webpackConfig.output.chunkFilename = '[name].min.js?v=[chunkhash]';
273
+
274
+ // Plugins
275
+ webpackConfig.plugins.push(
276
+ new MiniCSSExtractPlugin( { filename: '[name].min.css' } ),
277
+ new RtlCssPlugin( { filename: '[name]-rtl.min.css' } )
278
+ )
279
+
280
+ // Optimization
281
+ webpackConfig.optimization.minimize = true;
282
+ webpackConfig.optimization.minimizer.push(
283
+ new CssMinimizerPlugin({test: /\.min\.css$/})
284
+ )
285
+ }
286
+
287
+ export default webpackConfig;