@ideasonpurpose/build-tools-wordpress 2.3.2 → 2.5.0
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/.github/workflows/npm-publish.yml +8 -5
- package/CHANGELOG.md +26 -0
- package/README.md +9 -2
- package/config/webpack.config.js +48 -8
- package/package.json +38 -38
|
@@ -4,6 +4,10 @@ on:
|
|
|
4
4
|
push:
|
|
5
5
|
tags: ["v*"]
|
|
6
6
|
|
|
7
|
+
permissions:
|
|
8
|
+
id-token: write # Required for OIDC
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
7
11
|
jobs:
|
|
8
12
|
publish:
|
|
9
13
|
name: Build and publish to npm
|
|
@@ -16,10 +20,9 @@ jobs:
|
|
|
16
20
|
# https://github.com/actions/setup-node
|
|
17
21
|
- uses: actions/setup-node@v4
|
|
18
22
|
with:
|
|
19
|
-
node-version:
|
|
20
|
-
registry-url: https://registry.npmjs.org
|
|
23
|
+
node-version: '24'
|
|
24
|
+
registry-url: 'https://registry.npmjs.org'
|
|
21
25
|
|
|
22
26
|
# - run: npm ci
|
|
23
|
-
- run: npm publish
|
|
24
|
-
|
|
25
|
-
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
|
|
27
|
+
- run: npm publish --provenance --access public
|
|
28
|
+
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,32 @@ All notable changes to this project will be documented in this file. Dates are d
|
|
|
4
4
|
|
|
5
5
|
Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
6
6
|
|
|
7
|
+
#### v2.4.2
|
|
8
|
+
|
|
9
|
+
> 22 December 2025
|
|
10
|
+
|
|
11
|
+
- Update npm publish command with options
|
|
12
|
+
|
|
13
|
+
#### v2.4.1
|
|
14
|
+
|
|
15
|
+
> 22 December 2025
|
|
16
|
+
|
|
17
|
+
- update workflow for trusted publishing
|
|
18
|
+
|
|
19
|
+
#### v2.4.0
|
|
20
|
+
|
|
21
|
+
> 21 December 2025
|
|
22
|
+
|
|
23
|
+
- bump deps
|
|
24
|
+
- Enable loading Sass files from node_modules
|
|
25
|
+
|
|
26
|
+
#### v2.3.2
|
|
27
|
+
|
|
28
|
+
> 3 November 2025
|
|
29
|
+
|
|
30
|
+
- bump deps
|
|
31
|
+
- watch tweaks, debugging, formatting and cleanup
|
|
32
|
+
|
|
7
33
|
#### v2.3.1
|
|
8
34
|
|
|
9
35
|
> 21 October 2025
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @ideasonpurpose/build-tools-wordpress
|
|
2
2
|
|
|
3
|
-
#### Version 2.
|
|
3
|
+
#### Version 2.5.0
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@ideasonpurpose/build-tools-wordpress)
|
|
6
6
|
[](https://github.com/ideasonpurpose/build-tools-wordpress#readme)
|
|
@@ -50,6 +50,14 @@ npm chokidar-cli "../../build-tools-wordpress/**/*" -c "npm install"
|
|
|
50
50
|
|
|
51
51
|
This project expects an entirely ES Module based environment and specifies all dependencies using standard ESM import syntax. Projects importing this file should set `"type": "module"` in their package.json files.
|
|
52
52
|
|
|
53
|
+
#### Sass imports
|
|
54
|
+
|
|
55
|
+
Sass can import stylesheet files directly from npm packages. Use the full path from node_modules like this:
|
|
56
|
+
|
|
57
|
+
```scss
|
|
58
|
+
@use "@ideasonpurpose/build-tools-wordpress/example/package-style";
|
|
59
|
+
```
|
|
60
|
+
|
|
53
61
|
#### Publishing to [npm](https://www.npmjs.com/package/@ideasonpurpose/build-tools-wordpress)
|
|
54
62
|
|
|
55
63
|
A GitHub action will auto-publish version-tagged releases to npm. In order to publish, the repository must have an `NPM_TOKEN` secret set with the token from npm. [Log into npmjs.org](https://www.npmjs.com/login) with a publish-authorized account, then find the token page linked from the Profile page sidebar. Generate a new token and update the repository secret.
|
|
@@ -63,4 +71,3 @@ A GitHub action will auto-publish version-tagged releases to npm. In order to pu
|
|
|
63
71
|
<a href="https://www.ideasonpurpose.com"><img src="https://raw.githubusercontent.com/ideasonpurpose/ideasonpurpose/master/iop-logo-white-on-black-88px.png" height="44" align="top" alt="IOP Logo"></a><img src="https://raw.githubusercontent.com/ideasonpurpose/ideasonpurpose/master/spacer.png" align="middle" width="4" height="54"> This project is actively developed and used in production at <a href="https://www.ideasonpurpose.com">Ideas On Purpose</a>.
|
|
64
72
|
|
|
65
73
|
<!-- END IOP CREDIT BLURB -->
|
|
66
|
-
```
|
package/config/webpack.config.js
CHANGED
|
@@ -79,6 +79,9 @@ const stats = {
|
|
|
79
79
|
loggingDebug: ["sass-loader"],
|
|
80
80
|
};
|
|
81
81
|
|
|
82
|
+
/**
|
|
83
|
+
* @param {Record<string, any>} env - Environment variables from Webpack CLI
|
|
84
|
+
*/
|
|
82
85
|
export default async (env) => {
|
|
83
86
|
// const siteDir = new URL(import.meta.url).pathname;
|
|
84
87
|
const siteDir = process.cwd();
|
|
@@ -89,6 +92,15 @@ export default async (env) => {
|
|
|
89
92
|
|
|
90
93
|
const proxy = isProduction ? {} : await devserverProxy(config);
|
|
91
94
|
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Simple helper for encoding SVGs as data urls with proper encoding for special characters
|
|
98
|
+
* @param {Buffer} content
|
|
99
|
+
* @returns {string} - Encoded SVG data URL
|
|
100
|
+
*/
|
|
101
|
+
const svgDataUrlHelper = (content) =>
|
|
102
|
+
`data:image/svg+xml,${encodeURIComponent(content.toString())}`;
|
|
103
|
+
|
|
92
104
|
// console.log({config});
|
|
93
105
|
// console.log({entry: config.entry});
|
|
94
106
|
/**
|
|
@@ -101,11 +113,11 @@ export default async (env) => {
|
|
|
101
113
|
*
|
|
102
114
|
* TODO: Why so much dancing around defaults when this could just inherit from default.config?
|
|
103
115
|
*/
|
|
104
|
-
const usePolling = Boolean(config.usePolling); // likely undefined, coerced to false
|
|
105
|
-
const pollInterval = Math.max(
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
);
|
|
116
|
+
// const usePolling = Boolean(config.usePolling); // likely undefined, coerced to false
|
|
117
|
+
// const pollInterval = Math.max(
|
|
118
|
+
// parseInt(config.pollInterval, 10) || parseInt(config.usePolling, 10) || 400,
|
|
119
|
+
// 400,
|
|
120
|
+
// );
|
|
109
121
|
|
|
110
122
|
const devtool = config.devtool || false;
|
|
111
123
|
|
|
@@ -172,7 +184,10 @@ export default async (env) => {
|
|
|
172
184
|
sassOptions: {
|
|
173
185
|
api: "modern-compiler",
|
|
174
186
|
|
|
175
|
-
loadPaths: [
|
|
187
|
+
loadPaths: [
|
|
188
|
+
path.resolve(config.src, "sass"),
|
|
189
|
+
path.resolve(siteDir, "node_modules"),
|
|
190
|
+
],
|
|
176
191
|
},
|
|
177
192
|
},
|
|
178
193
|
},
|
|
@@ -197,17 +212,35 @@ export default async (env) => {
|
|
|
197
212
|
/**
|
|
198
213
|
* SVGs can be imported as asset urls or React components
|
|
199
214
|
*
|
|
215
|
+
* In SCSS files, SVGs will be treated as assets and inlined as data urls
|
|
216
|
+
* unless they are larger than 4kb
|
|
217
|
+
*
|
|
200
218
|
* To import an SVG file as a src url, append ?url to the filename:
|
|
201
219
|
* import svg from './assets/file.svg?url'
|
|
202
220
|
*
|
|
203
|
-
* To import an SVG file as a React component
|
|
204
|
-
|
|
205
221
|
* @link https://react-svgr.com/docs/webpack/#use-svgr-and-asset-svg-in-the-same-project
|
|
206
222
|
*/
|
|
223
|
+
{
|
|
224
|
+
test: /\.svg$/i,
|
|
225
|
+
issuer: /\.scss$/,
|
|
226
|
+
type: "asset",
|
|
227
|
+
parser: {
|
|
228
|
+
dataUrlCondition: { maxSize: 4096 },
|
|
229
|
+
},
|
|
230
|
+
generator: {
|
|
231
|
+
dataUrl: svgDataUrlHelper,
|
|
232
|
+
},
|
|
233
|
+
},
|
|
207
234
|
{
|
|
208
235
|
test: /\.svg$/i,
|
|
209
236
|
type: "asset",
|
|
210
237
|
resourceQuery: /url/, // *.svg?url
|
|
238
|
+
parser: {
|
|
239
|
+
dataUrlCondition: { maxSize: 4096 },
|
|
240
|
+
},
|
|
241
|
+
generator: {
|
|
242
|
+
dataUrl: svgDataUrlHelper,
|
|
243
|
+
},
|
|
211
244
|
},
|
|
212
245
|
{
|
|
213
246
|
test: /\.svg$/i,
|
|
@@ -356,6 +389,9 @@ export default async (env) => {
|
|
|
356
389
|
// return true;
|
|
357
390
|
// },
|
|
358
391
|
|
|
392
|
+
/**
|
|
393
|
+
* @param {Object} devServer - The devServer instance
|
|
394
|
+
*/
|
|
359
395
|
onListening: (devServer) => {
|
|
360
396
|
const port = devServer.server.address().port;
|
|
361
397
|
devServer.compiler.options.devServer.port =
|
|
@@ -365,6 +401,10 @@ export default async (env) => {
|
|
|
365
401
|
console.log("Listening on port:", port);
|
|
366
402
|
},
|
|
367
403
|
|
|
404
|
+
/**
|
|
405
|
+
* @param {Array<Function>} middlewares - Array of middleware functions
|
|
406
|
+
* @param {Object} devServer - The devServer instance
|
|
407
|
+
*/
|
|
368
408
|
setupMiddlewares: (middlewares, devServer) => {
|
|
369
409
|
/**
|
|
370
410
|
* The `/inform` route is an annoying bit of code. Here's why:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ideasonpurpose/build-tools-wordpress",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.0",
|
|
4
4
|
"description": "Build scripts and dependencies for IOP's WordPress development environments.",
|
|
5
5
|
"homepage": "https://github.com/ideasonpurpose/build-tools-wordpress#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -36,69 +36,69 @@
|
|
|
36
36
|
"@ideasonpurpose/prettier-config": "^1.0.1",
|
|
37
37
|
"@ideasonpurpose/stylelint-config": "^1.1.4",
|
|
38
38
|
"@prettier/plugin-php": "^0.24.0",
|
|
39
|
-
"@rollup/plugin-commonjs": "^29.0.
|
|
39
|
+
"@rollup/plugin-commonjs": "^29.0.2",
|
|
40
40
|
"@rollup/plugin-json": "^6.1.0",
|
|
41
41
|
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
42
42
|
"@svgr/webpack": "^8.1.0",
|
|
43
|
-
"@wordpress/dependency-extraction-webpack-plugin": "^6.
|
|
43
|
+
"@wordpress/dependency-extraction-webpack-plugin": "^6.41.0",
|
|
44
44
|
"ansi-html": "^0.0.9",
|
|
45
45
|
"archiver": "^7.0.1",
|
|
46
46
|
"auto-changelog": "^2.5.0",
|
|
47
|
-
"autoprefixer": "^10.4.
|
|
48
|
-
"babel-loader": "^10.
|
|
49
|
-
"caniuse-lite": "^1.0.
|
|
47
|
+
"autoprefixer": "^10.4.27",
|
|
48
|
+
"babel-loader": "^10.1.0",
|
|
49
|
+
"caniuse-lite": "^1.0.30001777",
|
|
50
50
|
"chalk": "^5.6.2",
|
|
51
51
|
"chalk-cli": "^6.0.0",
|
|
52
52
|
"classnames": "^2.5.1",
|
|
53
|
-
"cli-truncate": "^5.
|
|
54
|
-
"copy-webpack-plugin": "^
|
|
55
|
-
"cosmiconfig": "^9.0.
|
|
53
|
+
"cli-truncate": "^5.2.0",
|
|
54
|
+
"copy-webpack-plugin": "^14.0.0",
|
|
55
|
+
"cosmiconfig": "^9.0.1",
|
|
56
56
|
"cross-env": "^10.1.0",
|
|
57
|
-
"css-loader": "^7.1.
|
|
58
|
-
"cssnano": "^7.1.
|
|
59
|
-
"dotenv": "^17.
|
|
60
|
-
"esbuild-loader": "^4.4.
|
|
61
|
-
"eslint": "^
|
|
57
|
+
"css-loader": "^7.1.4",
|
|
58
|
+
"cssnano": "^7.1.3",
|
|
59
|
+
"dotenv": "^17.3.1",
|
|
60
|
+
"esbuild-loader": "^4.4.2",
|
|
61
|
+
"eslint": "^10.0.3",
|
|
62
62
|
"filesize": "^11.0.13",
|
|
63
|
-
"fs-extra": "^11.3.
|
|
64
|
-
"globby": "^
|
|
65
|
-
"html-webpack-plugin": "^5.6.
|
|
63
|
+
"fs-extra": "^11.3.4",
|
|
64
|
+
"globby": "^16.1.1",
|
|
65
|
+
"html-webpack-plugin": "^5.6.6",
|
|
66
66
|
"http-proxy": "^1.18.1",
|
|
67
|
-
"humanize-duration": "^3.33.
|
|
68
|
-
"image-minimizer-webpack-plugin": "^
|
|
67
|
+
"humanize-duration": "^3.33.2",
|
|
68
|
+
"image-minimizer-webpack-plugin": "^5.0.0",
|
|
69
69
|
"is-text-path": "^3.0.0",
|
|
70
|
-
"lodash": "^4.17.
|
|
71
|
-
"mini-css-extract-plugin": "^2.
|
|
72
|
-
"ora": "^9.
|
|
73
|
-
"postcss": "^8.5.
|
|
74
|
-
"postcss-loader": "^8.2.
|
|
70
|
+
"lodash": "^4.17.23",
|
|
71
|
+
"mini-css-extract-plugin": "^2.10.0",
|
|
72
|
+
"ora": "^9.3.0",
|
|
73
|
+
"postcss": "^8.5.8",
|
|
74
|
+
"postcss-loader": "^8.2.1",
|
|
75
75
|
"postcss-scss": "^4.0.9",
|
|
76
|
-
"prettier": "^3.
|
|
76
|
+
"prettier": "^3.8.1",
|
|
77
77
|
"pretty-hrtime": "^1.0.3",
|
|
78
|
-
"read-package-up": "^
|
|
78
|
+
"read-package-up": "^12.0.0",
|
|
79
79
|
"replacestream": "^4.0.3",
|
|
80
|
-
"sass-embedded": "^1.
|
|
81
|
-
"sass-loader": "^16.0.
|
|
82
|
-
"semver": "^7.7.
|
|
83
|
-
"sharp": "^0.34.
|
|
84
|
-
"sort-package-json": "^3.
|
|
85
|
-
"string-length": "^
|
|
80
|
+
"sass-embedded": "^1.97.3",
|
|
81
|
+
"sass-loader": "^16.0.7",
|
|
82
|
+
"semver": "^7.7.4",
|
|
83
|
+
"sharp": "^0.34.5",
|
|
84
|
+
"sort-package-json": "^3.6.1",
|
|
85
|
+
"string-length": "^7.0.1",
|
|
86
86
|
"style-loader": "^4.0.0",
|
|
87
|
-
"svgo": "^4.0.
|
|
87
|
+
"svgo": "^4.0.1",
|
|
88
88
|
"svgo-loader": "^4.0.0",
|
|
89
89
|
"version-everything": "^0.11.4",
|
|
90
|
-
"webpack": "^5.
|
|
91
|
-
"webpack-bundle-analyzer": "^
|
|
90
|
+
"webpack": "^5.105.4",
|
|
91
|
+
"webpack-bundle-analyzer": "^5.2.0",
|
|
92
92
|
"webpack-dev-middleware": "^7.4.5",
|
|
93
|
-
"webpack-dev-server": "^5.2.
|
|
93
|
+
"webpack-dev-server": "^5.2.3",
|
|
94
94
|
"webpack-manifest-plugin": "^6.0.1"
|
|
95
95
|
},
|
|
96
96
|
"peerDependencies": {
|
|
97
97
|
"webpack-cli": "^6.0.1"
|
|
98
98
|
},
|
|
99
99
|
"devDependencies": {
|
|
100
|
-
"@vitest/coverage-v8": "^4.0.
|
|
101
|
-
"vitest": "^4.0.
|
|
100
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
101
|
+
"vitest": "^4.0.18"
|
|
102
102
|
},
|
|
103
103
|
"version-everything": {
|
|
104
104
|
"files": [
|