@ideasonpurpose/build-tools-wordpress 2.3.1 → 2.4.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.
@@ -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: 22
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
- env:
25
- NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
27
+ - run: npm publish --provenance --access public
28
+
package/CHANGELOG.md CHANGED
@@ -4,6 +4,33 @@ 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.1
8
+
9
+ > 22 December 2025
10
+
11
+ - update workflow for trusted publishing
12
+
13
+ #### v2.4.0
14
+
15
+ > 21 December 2025
16
+
17
+ - bump deps
18
+ - Enable loading Sass files from node_modules
19
+
20
+ #### v2.3.2
21
+
22
+ > 3 November 2025
23
+
24
+ - bump deps
25
+ - watch tweaks, debugging, formatting and cleanup
26
+
27
+ #### v2.3.1
28
+
29
+ > 21 October 2025
30
+
31
+ - liveReload workaround for mini-css-extract-plugin HMR issues
32
+ - WIP updates
33
+
7
34
  #### v2.3.0
8
35
 
9
36
  > 19 October 2025
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @ideasonpurpose/build-tools-wordpress
2
2
 
3
- #### Version 2.3.1
3
+ #### Version 2.4.2
4
4
 
5
5
  [![NPM Version](https://img.shields.io/npm/v/%40ideasonpurpose%2Fbuild-tools-wordpress?logo=npm)](https://www.npmjs.com/package/@ideasonpurpose/build-tools-wordpress)
6
6
  [![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/ideasonpurpose/build-tools-wordpress/npm-publish.yml?logo=github&logoColor=white)](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
- ```
@@ -172,7 +172,10 @@ export default async (env) => {
172
172
  sassOptions: {
173
173
  api: "modern-compiler",
174
174
 
175
- loadPaths: [path.resolve(config.src, "sass")],
175
+ loadPaths: [
176
+ path.resolve(config.src, "sass"),
177
+ path.resolve(siteDir, "node_modules"),
178
+ ],
176
179
  },
177
180
  },
178
181
  },
@@ -267,6 +270,12 @@ export default async (env) => {
267
270
  port: "auto",
268
271
 
269
272
  hot: true, // Enable hot module replacement with fallback to full reload
273
+
274
+ // hot: "only",
275
+ static: {
276
+ watch: false,
277
+ },
278
+
270
279
  client: {
271
280
  logging: "verbose",
272
281
  // logging: "info",
@@ -287,6 +296,10 @@ export default async (env) => {
287
296
  index: false, // enable root proxying
288
297
 
289
298
  writeToDisk: (filePath) => {
299
+ // // // SHORT_CIRCUIT FOR TESTING
300
+ // // console.log("DEBUG writeToDisk:", { filePath });
301
+ // return true;
302
+
290
303
  /**
291
304
  * Note: If this is an async function, it will write everything to disk
292
305
  *
@@ -331,9 +344,9 @@ export default async (env) => {
331
344
  }
332
345
 
333
346
  // SHORT_CIRCUIT FOR TESTING
334
- return true;
347
+ // return true;
335
348
 
336
- console.log("DEBUG writeToDisk:", { filePath });
349
+ // console.log("DEBUG writeToDisk:", { filePath });
337
350
  return false;
338
351
  },
339
352
  // stats,
@@ -397,9 +410,6 @@ export default async (env) => {
397
410
  paths: [
398
411
  // Watch all PHP, HTML, SVG, and JSON files in the theme directory
399
412
  path.resolve(config.src, "..") + "/**/*.{php,html,svg,json}",
400
- // Watch CSS files in dist to workaround a bug in mini-css-extract-plugin
401
- // @link https://github.com/webpack/mini-css-extract-plugin/issues/730
402
- path.resolve(config.dist, "..") + "/**/*.css",
403
413
  ],
404
414
  options: {
405
415
  ignored: [
@@ -407,12 +417,10 @@ export default async (env) => {
407
417
  "**/vendor/**",
408
418
  "**/node_modules/**",
409
419
  "**/dist/**",
410
- "!**/dist/**/*.css",
411
420
  ],
412
- ignoreInitial: false, // Allow initial file discovery
421
+ ignoreInitial: false,
413
422
  ignorePermissionErrors: true,
414
423
  usePolling: false,
415
- // interval: pollIntervalDebug,
416
424
  },
417
425
  },
418
426
 
@@ -13,15 +13,26 @@ export class DependencyManifestPlugin {
13
13
  }
14
14
 
15
15
  apply(compiler) {
16
+
17
+ // TODO: Switch this to tapPromise and make the function async
16
18
  compiler.hooks.emit.tapAsync(this.name, (compilation, callback) => {
17
19
  // const logger = compilation.getLogger("dependency-manifest-plugin");
18
-
19
20
  // logger.info(compilation.namedChunkGroups.keys());
20
21
 
22
+ // console.log(
23
+ // "in DependencyManifestPlugin emit hook",
24
+ // Object.keys(compilation),
25
+ // );
26
+
27
+ console.log(Array.from(compilation.namedChunkGroups.keys()))
28
+
21
29
  Array.from(compilation.namedChunkGroups.entries()).forEach(
22
30
  ([key, group]) => {
23
31
  this.manifest[key] = group.chunks.reduce(
24
32
  (entry, chunk) => {
33
+
34
+ // console.log({ files: Array.from(chunk.files) });
35
+
25
36
  Array.from(chunk.files)
26
37
  /**
27
38
  * hot-update files will stomp on the main file, filter them out
@@ -29,13 +40,19 @@ export class DependencyManifestPlugin {
29
40
  .filter((file) => !file.includes("hot-update"))
30
41
  .forEach((file) => {
31
42
  const { chunkGraph } = compilation;
43
+
44
+ // console.log({file})
32
45
  const ext = path.extname(file);
33
46
 
34
47
  const filepath = path.resolve(
35
48
  compiler.options.output.publicPath,
36
- file
49
+ file,
37
50
  );
38
51
 
52
+ // const fullPath = path.resolve(compiler.options.output.path, file);
53
+ // const stats = fs.statSync(fullPath);
54
+ // console.log({ file, size: stats.size });
55
+
39
56
  let silo, fileKey;
40
57
  /**
41
58
  * If the chunk has one or more entryModules, it's a file
@@ -51,13 +68,16 @@ export class DependencyManifestPlugin {
51
68
 
52
69
  entry[silo][fileKey] = filepath;
53
70
  });
71
+ // console.log({entry})
54
72
  return entry;
55
73
  },
56
- { files: {}, dependencies: {} }
74
+ { files: {}, dependencies: {} },
57
75
  );
58
- }
76
+ },
59
77
  );
60
78
 
79
+ console.log(this.manifest);
80
+
61
81
  callback();
62
82
  });
63
83
 
@@ -66,7 +86,7 @@ export class DependencyManifestPlugin {
66
86
  return await fs.outputJSON(
67
87
  path.resolve(compiler.options.output.path, this.config.manifestFile),
68
88
  this.manifest,
69
- { spaces: 2 }
89
+ { spaces: 2 },
70
90
  );
71
91
  }
72
92
  console.log("in DependencyManifestPlugin afterEmit");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ideasonpurpose/build-tools-wordpress",
3
- "version": "2.3.1",
3
+ "version": "2.4.2",
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,34 +36,35 @@
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": "^28.0.8",
39
+ "@rollup/plugin-commonjs": "^29.0.0",
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.33.0",
43
+ "@wordpress/dependency-extraction-webpack-plugin": "^6.36.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.21",
47
+ "autoprefixer": "^10.4.23",
48
48
  "babel-loader": "^10.0.0",
49
- "caniuse-lite": "^1.0.30001751",
49
+ "caniuse-lite": "^1.0.30001761",
50
50
  "chalk": "^5.6.2",
51
51
  "chalk-cli": "^6.0.0",
52
52
  "classnames": "^2.5.1",
53
- "cli-truncate": "^5.1.0",
53
+ "cli-truncate": "^5.1.1",
54
54
  "copy-webpack-plugin": "^13.0.1",
55
55
  "cosmiconfig": "^9.0.0",
56
56
  "cross-env": "^10.1.0",
57
57
  "css-loader": "^7.1.2",
58
- "cssnano": "^7.1.1",
58
+ "cssnano": "^7.1.2",
59
59
  "dotenv": "^17.2.3",
60
- "esbuild-loader": "^4.4.0",
61
- "eslint": "^9.38.0",
60
+ "esbuild-loader": "^4.4.1",
61
+ "eslint": "^9.39.2",
62
62
  "filesize": "^11.0.13",
63
- "fs-extra": "^11.3.2",
64
- "globby": "^15.0.0",
63
+ "fs-extra": "^11.3.3",
64
+ "globby": "^16.0.0",
65
+ "html-webpack-plugin": "^5.6.5",
65
66
  "http-proxy": "^1.18.1",
66
- "humanize-duration": "^3.33.1",
67
+ "humanize-duration": "^3.33.2",
67
68
  "image-minimizer-webpack-plugin": "^4.1.4",
68
69
  "is-text-path": "^3.0.0",
69
70
  "lodash": "^4.17.21",
@@ -72,31 +73,32 @@
72
73
  "postcss": "^8.5.6",
73
74
  "postcss-loader": "^8.2.0",
74
75
  "postcss-scss": "^4.0.9",
75
- "prettier": "^3.6.2",
76
+ "prettier": "^3.7.4",
76
77
  "pretty-hrtime": "^1.0.3",
77
- "read-package-up": "^11.0.0",
78
+ "read-package-up": "^12.0.0",
78
79
  "replacestream": "^4.0.3",
79
- "sass-embedded": "^1.93.2",
80
- "sass-loader": "^16.0.5",
80
+ "sass-embedded": "^1.97.1",
81
+ "sass-loader": "^16.0.6",
81
82
  "semver": "^7.7.3",
82
- "sharp": "^0.34.4",
83
- "sort-package-json": "^3.4.0",
83
+ "sharp": "^0.34.5",
84
+ "sort-package-json": "^3.6.0",
84
85
  "string-length": "^6.0.0",
85
86
  "style-loader": "^4.0.0",
86
87
  "svgo": "^4.0.0",
87
88
  "svgo-loader": "^4.0.0",
88
89
  "version-everything": "^0.11.4",
89
- "webpack": "^5.102.1",
90
- "webpack-bundle-analyzer": "^4.10.2",
90
+ "webpack": "^5.104.1",
91
+ "webpack-bundle-analyzer": "^5.1.0",
91
92
  "webpack-dev-middleware": "^7.4.5",
92
- "webpack-dev-server": "^5.2.2"
93
+ "webpack-dev-server": "^5.2.2",
94
+ "webpack-manifest-plugin": "^6.0.1"
93
95
  },
94
96
  "peerDependencies": {
95
97
  "webpack-cli": "^6.0.1"
96
98
  },
97
99
  "devDependencies": {
98
- "@vitest/coverage-v8": "^3.2.4",
99
- "vitest": "^3.2.4"
100
+ "@vitest/coverage-v8": "^4.0.16",
101
+ "vitest": "^4.0.16"
100
102
  },
101
103
  "version-everything": {
102
104
  "files": [