Commit 976fb241363 for woocommerce
commit 976fb241363e074a8a2eca8fd5e63c2df949426a
Author: Christopher Allford <6451942+ObliviousHarmony@users.noreply.github.com>
Date: Tue May 26 00:13:02 2026 -0700
Only Emit CJS for Publishing (#64876)
* Have Jest Transform Monorepo Sources
To make Jest independent of compiled artifacts in sibling packages, the
shared preset rewrites @woocommerce/* imports to package source. The
internal-js-tests setup files use require() instead of import so they
execute under Node directly without needing a transform pass.
* Build CJS only at publish time for @woocommerce/sanitize
* Build CJS only at publish time for @woocommerce/number
* Build CJS only at publish time for @woocommerce/date
* Build CJS only at publish time for @woocommerce/navigation
* Build CJS only at publish time for @woocommerce/tracks
* Build CJS only at publish time for @woocommerce/csv-export
* Build CJS only at publish time for @woocommerce/expression-evaluation
* Build CJS only at publish time for @woocommerce/explat
* Build CJS only at publish time for @woocommerce/integrate-plugin
* Build CJS only at publish time for @woocommerce/e2e-utils-playwright
* Build CJS only at publish time for @woocommerce/email-editor
* Build CJS only at publish time for @woocommerce/block-templates
* Build CJS only at publish time for @woocommerce/currency
* Build CJS only at publish time for @woocommerce/data
* Build CJS only at publish time for @woocommerce/remote-logging
* Build CJS only at publish time for @woocommerce/notices
* Configure ts-jest to compile cross-package source files
* Build CJS only at publish time for @woocommerce/experimental
* Build CJS only at publish time for @woocommerce/components
* Build CJS only at publish time for @woocommerce/admin-layout
* Build CJS only at publish time for @woocommerce/customer-effort-score
* Build CJS only at publish time for @woocommerce/onboarding
* Build CJS only at publish time for @woocommerce/experimental-products-app
* Build CJS only at publish time for @woocommerce/product-editor
* Build CJS only at publish time for @woocommerce/settings-editor
* Fixed CJS Import Paths
Some direct imports were referencing the CJS build. This wasn't
actually necessary and we've swapped it for the proper build.
* Use a shared Jest tsconfig so admin and blocks transform monorepo source
* Fixed Product Editor Cache Outputs
Previously, we were accidentally caching the product
editor output with the CJS build. This updates the
cache outputs for the webpack build so that they
are cached correctly.
* Restore Certain CJS Package Builds
In some cases, the CJS build is the main output of
the package's build path. In those cases, we want
to make sure we're building both.
* Changelog
* Reorder blocks Jest mapper so @woocommerce/* aliases win
* Restore CJS build for @woocommerce/product-editor
* Consolidate internal-js-tests changelog entries
---------
Co-authored-by: Vladimir Reznichenko <kalessil@gmail.com>
diff --git a/packages/js/admin-layout/changelog/dev-cjs-prepack-only b/packages/js/admin-layout/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/admin-layout/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/admin-layout/package.json b/packages/js/admin-layout/package.json
index f872bc6ed69..e9f8bc5c3d2 100644
--- a/packages/js/admin-layout/package.json
+++ b/packages/js/admin-layout/package.json
@@ -37,19 +37,18 @@
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
"build:project:bundle": "wireit",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"lint": "pnpm --if-present '/^lint:lang:.*$/'",
"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
"lint:fix:lang:js": "eslint src --fix",
"lint:lang:js": "eslint src",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
"watch:build:project:bundle": "wireit",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"dependencies": {
@@ -116,25 +115,6 @@
"command": "webpack --watch",
"service": true
},
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/packages/js/block-templates/changelog/dev-cjs-prepack-only b/packages/js/block-templates/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/block-templates/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/block-templates/package.json b/packages/js/block-templates/package.json
index 690af6d17ab..9c0a63617b3 100644
--- a/packages/js/block-templates/package.json
+++ b/packages/js/block-templates/package.json
@@ -34,20 +34,19 @@
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
"build:project:bundle": "wireit",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"lint": "pnpm --if-present '/^lint:lang:.*$/'",
"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
"lint:fix:lang:js": "eslint src --fix",
"lint:lang:js": "eslint src",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"test:js": "jest --config ./jest.config.json --passWithNoTests",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
"watch:build:project:bundle": "wireit",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"dependencies": {
@@ -149,25 +148,6 @@
"command": "webpack --watch",
"service": true
},
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/packages/js/components/changelog/dev-cjs-prepack-only b/packages/js/components/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/components/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/components/package.json b/packages/js/components/package.json
index d9bd15bfe33..a02918e2b59 100644
--- a/packages/js/components/package.json
+++ b/packages/js/components/package.json
@@ -38,20 +38,19 @@
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
"build:project:bundle": "wireit",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"lint": "pnpm --if-present '/^lint:lang:.*$/'",
"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
"lint:fix:lang:js": "eslint --ext=js,ts,tsx src --fix",
"lint:lang:js": "eslint --ext=js,ts,tsx src",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"test:js": "jest --config ./jest.config.json --passWithNoTests",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
"watch:build:project:bundle": "wireit",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"lint-staged": {
@@ -224,25 +223,6 @@
"command": "webpack --watch",
"service": true
},
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/packages/js/csv-export/changelog/dev-cjs-prepack-only b/packages/js/csv-export/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/csv-export/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/csv-export/package.json b/packages/js/csv-export/package.json
index bab4ed087d3..6abc7bcc56a 100644
--- a/packages/js/csv-export/package.json
+++ b/packages/js/csv-export/package.json
@@ -32,19 +32,18 @@
"scripts": {
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"lint": "pnpm --if-present '/^lint:lang:.*$/'",
"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
"lint:fix:lang:js": "eslint src --fix",
"lint:lang:js": "eslint src",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"test:js": "jest --config ./jest.config.json --passWithNoTests",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"dependencies": {
@@ -101,25 +100,6 @@
}
},
"wireit": {
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/packages/js/currency/changelog/dev-cjs-prepack-only b/packages/js/currency/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/currency/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/currency/package.json b/packages/js/currency/package.json
index 0e14d19986d..64ef7490520 100644
--- a/packages/js/currency/package.json
+++ b/packages/js/currency/package.json
@@ -32,19 +32,18 @@
"scripts": {
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"lint": "pnpm --if-present '/^lint:lang:.*$/'",
"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
"lint:fix:lang:js": "eslint src --fix",
"lint:lang:js": "eslint src",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"test:js": "jest --config ./jest.config.json --passWithNoTests",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"lint-staged": {
@@ -106,25 +105,6 @@
}
},
"wireit": {
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/packages/js/customer-effort-score/changelog/dev-cjs-prepack-only b/packages/js/customer-effort-score/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/customer-effort-score/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/customer-effort-score/package.json b/packages/js/customer-effort-score/package.json
index 9e2f14f3ee9..436d5afcc7f 100644
--- a/packages/js/customer-effort-score/package.json
+++ b/packages/js/customer-effort-score/package.json
@@ -33,20 +33,19 @@
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
"build:project:bundle": "wireit",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"lint": "pnpm --if-present '/^lint:lang:.*$/'",
"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
"lint:fix:lang:js": "eslint src --fix",
"lint:lang:js": "eslint src",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"test:js": "jest --config ./jest.config.json --passWithNoTests",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
"watch:build:project:bundle": "wireit",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"lint-staged": {
@@ -154,25 +153,6 @@
"command": "webpack --watch",
"service": true
},
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/packages/js/data/changelog/dev-cjs-prepack-only b/packages/js/data/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/data/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/data/package.json b/packages/js/data/package.json
index 535ac093d15..3ccf1e43c27 100644
--- a/packages/js/data/package.json
+++ b/packages/js/data/package.json
@@ -31,19 +31,18 @@
"scripts": {
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"lint": "pnpm --if-present '/^lint:lang:.*$/'",
"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
"lint:fix:lang:js": "eslint src --fix",
"lint:lang:js": "eslint src",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"test:js": "jest --config ./jest.config.json --passWithNoTests",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"lint-staged": {
@@ -129,25 +128,6 @@
}
},
"wireit": {
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/packages/js/date/changelog/dev-cjs-prepack-only b/packages/js/date/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/date/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/date/package.json b/packages/js/date/package.json
index e9dc0210c0c..e9052b2d88a 100644
--- a/packages/js/date/package.json
+++ b/packages/js/date/package.json
@@ -65,19 +65,18 @@
"scripts": {
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"lint": "pnpm --if-present '/^lint:lang:.*$/'",
"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
"lint:fix:lang:js": "eslint src --fix",
"lint:lang:js": "eslint src",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"test:js": "jest --config ./jest.config.json --passWithNoTests",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"lint-staged": {
@@ -112,25 +111,6 @@
}
},
"wireit": {
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/packages/js/e2e-utils-playwright/changelog/dev-cjs-prepack-only b/packages/js/e2e-utils-playwright/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/e2e-utils-playwright/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/email-editor/changelog/dev-cjs-prepack-only b/packages/js/email-editor/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/email-editor/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/email-editor/package.json b/packages/js/email-editor/package.json
index d12bee5bef4..c34ae81abfa 100644
--- a/packages/js/email-editor/package.json
+++ b/packages/js/email-editor/package.json
@@ -38,8 +38,8 @@
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
"build:project:bundle": "wireit",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"format": "prettier --write 'src/**/*.{js,jsx,json,ts,tsx,yml,yaml,scss}'",
@@ -50,12 +50,11 @@
"lint:fix:lang:style": "stylelint 'src/**/*.{css,scss}' --fix",
"lint:lang:js": "eslint --ext=js,ts,tsx src",
"lint:lang:style": "stylelint 'src/**/*.{css,scss}'",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"test:js": "jest --config ./jest.config.json --passWithNoTests",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
"watch:build:project:bundle": "wireit",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"lint-staged": {
@@ -189,25 +188,6 @@
"command": "webpack --watch",
"service": true
},
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/packages/js/experimental-products-app/changelog/dev-cjs-prepack-only b/packages/js/experimental-products-app/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/experimental-products-app/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/experimental-products-app/package.json b/packages/js/experimental-products-app/package.json
index 130d7786b41..ea115b962e9 100644
--- a/packages/js/experimental-products-app/package.json
+++ b/packages/js/experimental-products-app/package.json
@@ -98,20 +98,19 @@
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
"build:project:bundle": "wireit",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"lint": "pnpm --if-present '/^lint:lang:.*$/'",
"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
"lint:fix:lang:js": "eslint src --fix",
"lint:lang:js": "eslint src",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"test:js": "jest --config ./jest.config.json --passWithNoTests",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
"watch:build:project:bundle": "wireit",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"peerDependencies": {
@@ -170,25 +169,6 @@
"command": "webpack --watch",
"service": true
},
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/packages/js/experimental/changelog/dev-cjs-prepack-only b/packages/js/experimental/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/experimental/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/experimental/package.json b/packages/js/experimental/package.json
index 80d502749f6..57dc8ad4fc3 100644
--- a/packages/js/experimental/package.json
+++ b/packages/js/experimental/package.json
@@ -91,20 +91,19 @@
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
"build:project:bundle": "wireit",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"lint": "pnpm --if-present '/^lint:lang:.*$/'",
"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
"lint:fix:lang:js": "eslint src --fix",
"lint:lang:js": "eslint src",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"test:js": "jest --config ./jest.config.json --passWithNoTests",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
"watch:build:project:bundle": "wireit",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"lint-staged": {
@@ -163,25 +162,6 @@
"command": "webpack --watch",
"service": true
},
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/packages/js/explat/changelog/dev-cjs-prepack-only b/packages/js/explat/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/explat/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/explat/package.json b/packages/js/explat/package.json
index 09a3f687abe..e242efb39fb 100644
--- a/packages/js/explat/package.json
+++ b/packages/js/explat/package.json
@@ -32,19 +32,18 @@
"scripts": {
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"lint": "pnpm --if-present '/^lint:lang:.*$/'",
"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
"lint:fix:lang:js": "eslint src --fix",
"lint:lang:js": "eslint src",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"test:js": "jest --config ./jest.config.json --passWithNoTests",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"lint-staged": {
@@ -109,25 +108,6 @@
}
},
"wireit": {
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/packages/js/expression-evaluation/changelog/dev-cjs-prepack-only b/packages/js/expression-evaluation/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/expression-evaluation/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/expression-evaluation/package.json b/packages/js/expression-evaluation/package.json
index cf05abd6c21..583badb7f22 100644
--- a/packages/js/expression-evaluation/package.json
+++ b/packages/js/expression-evaluation/package.json
@@ -40,18 +40,17 @@
"scripts": {
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"lint": "pnpm --if-present '/^lint:lang:.*$/'",
"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
"lint:fix:lang:js": "eslint src --fix",
"lint:lang:js": "eslint src",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"devDependencies": {
@@ -84,25 +83,6 @@
}
},
"wireit": {
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/packages/js/integrate-plugin/changelog/dev-cjs-prepack-only b/packages/js/integrate-plugin/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/integrate-plugin/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/internal-js-tests/changelog/dev-cjs-prepack-only b/packages/js/internal-js-tests/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..1b9e1d8d356
--- /dev/null
+++ b/packages/js/internal-js-tests/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack and route @woocommerce/* Jest imports through package sources so tests don't depend on built artifacts.
diff --git a/packages/js/internal-js-tests/jest-preset.js b/packages/js/internal-js-tests/jest-preset.js
index c71fd931cb7..7b888d6d260 100644
--- a/packages/js/internal-js-tests/jest-preset.js
+++ b/packages/js/internal-js-tests/jest-preset.js
@@ -47,24 +47,43 @@ const wpModulesMapper = mapWpModules.reduce( ( acc, module ) => {
module.exports = {
moduleNameMapper: {
- tinymce: path.resolve( __dirname, 'build/mocks/tinymce' ),
+ tinymce: path.resolve( __dirname, 'src/mocks/tinymce' ),
'@woocommerce/settings': path.resolve(
__dirname,
- 'build/mocks/woocommerce-settings'
+ 'src/mocks/woocommerce-settings'
),
'@woocommerce/tracks': path.resolve(
__dirname,
- 'build/mocks/woocommerce-tracks'
+ 'src/mocks/woocommerce-tracks'
),
+ // Route all monorepo @woocommerce/* imports through source so tests
+ // don't depend on sibling packages having been built. internal-js-tests
+ // is a special case — its main is build/util/index.js so the source
+ // entry is src/util, not src/index. Subpaths that explicitly point
+ // at a build directory (src/, build/, build-module/, build-types/)
+ // are stripped of that segment so they resolve under src/. Bare
+ // subpaths get prefixed with src/. Order matters: targeted overrides
+ // first, then most specific to least.
+ '^@woocommerce/internal-js-tests$': path.resolve(
+ __dirname,
+ 'src/util'
+ ),
+ '^@woocommerce/([^/]+)/(?:src|build|build-module|build-types)/(.+)$':
+ path.resolve( __dirname, '../$1/src/$2' ),
+ '^@woocommerce/([^/]+)/(.+)$': path.resolve(
+ __dirname,
+ '../$1/src/$2'
+ ),
+ '^@woocommerce/([^/]+)$': path.resolve( __dirname, '../$1/src' ),
'~/(.*)': path.resolve(
__dirname,
'../../../plugins/woocommerce/client/admin/client/$1'
),
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':
- path.resolve( __dirname, 'build/mocks/static' ),
+ path.resolve( __dirname, 'src/mocks/static' ),
'\\.(scss|css)$': path.resolve(
__dirname,
- 'build/mocks/style-mock.js'
+ 'src/mocks/style-mock.js'
),
// Force some modules to resolve with the CJS entry point, because Jest does not support package.json.exports.
'lib0/webcrypto': require.resolve( 'lib0/webcrypto' ), // use the CJS entry point so that it uses the node:crypto API as jsdom doesn't have a crypto API
@@ -74,11 +93,11 @@ module.exports = {
},
restoreMocks: true,
setupFiles: [
- path.resolve( __dirname, 'build/setup-window-globals.js' ),
- path.resolve( __dirname, 'build/setup-globals.js' ),
+ path.resolve( __dirname, 'src/setup-window-globals.js' ),
+ path.resolve( __dirname, 'src/setup-globals.js' ),
],
setupFilesAfterEnv: [
- path.resolve( __dirname, 'build/setup-react-testing-library.js' ),
+ path.resolve( __dirname, 'src/setup-react-testing-library.js' ),
],
testMatch: [
'**/__tests__/**/*.[jt]s?(x)',
@@ -93,7 +112,6 @@ module.exports = {
'node_modules/(?!(?:\\.pnpm|' +
Object.keys( transformModules ).join( '|' ) +
')/)',
- __dirname,
],
// The values for the transformed modules contain an object with the transforms to apply.
transform: Object.entries( transformModules ).reduce(
@@ -106,7 +124,22 @@ module.exports = {
return acc;
},
{
- '(?:src|client|assets/js)/.*\\.[jt]sx?$': 'ts-jest',
+ '(?:src|client|assets/js)/.*\\.[jt]sx?$': [
+ 'ts-jest',
+ {
+ // A dedicated test tsconfig sidesteps per-package
+ // include/exclude/rootDir restrictions that block
+ // ts-jest from compiling cross-package source files
+ // (resolved via the @woocommerce/* moduleNameMapper).
+ // The compiler emits CJS so Jest's runtime can execute
+ // it; package builds keep their own tsconfigs for
+ // publishing.
+ tsconfig: require.resolve(
+ '@woocommerce/internal-ts-config/tsconfig-jest.json'
+ ),
+ diagnostics: false,
+ },
+ ],
}
),
testEnvironment: 'jest-environment-jsdom',
diff --git a/packages/js/internal-js-tests/package.json b/packages/js/internal-js-tests/package.json
index a7883095b06..528e5901421 100644
--- a/packages/js/internal-js-tests/package.json
+++ b/packages/js/internal-js-tests/package.json
@@ -27,18 +27,17 @@
"scripts": {
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"lint": "pnpm --if-present '/^lint:lang:.*$/'",
"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
"lint:fix:lang:js": "eslint src --fix",
"lint:lang:js": "eslint src",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"dependencies": {
@@ -83,25 +82,6 @@
}
},
"wireit": {
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/packages/js/internal-js-tests/src/setup-globals.js b/packages/js/internal-js-tests/src/setup-globals.js
index 68686994952..ade69b24bb9 100644
--- a/packages/js/internal-js-tests/src/setup-globals.js
+++ b/packages/js/internal-js-tests/src/setup-globals.js
@@ -1,9 +1,9 @@
/**
* External dependencies
*/
-import { setLocaleData } from '@wordpress/i18n';
-import { registerStore } from '@wordpress/data';
-import 'regenerator-runtime/runtime';
+const { setLocaleData } = require( '@wordpress/i18n' );
+const { registerStore } = require( '@wordpress/data' );
+require( 'regenerator-runtime/runtime' );
// Due to the dependency @wordpress/compose which introduces the use of
// ResizeObserver this global mock is required for some tests to work.
diff --git a/packages/js/internal-js-tests/src/setup-react-testing-library.js b/packages/js/internal-js-tests/src/setup-react-testing-library.js
index 9bfaa3d54ff..4141030c359 100644
--- a/packages/js/internal-js-tests/src/setup-react-testing-library.js
+++ b/packages/js/internal-js-tests/src/setup-react-testing-library.js
@@ -1,8 +1,8 @@
/**
* External dependencies
*/
-import '@wordpress/jest-console';
-import '@testing-library/jest-dom';
+require( '@wordpress/jest-console' );
+require( '@testing-library/jest-dom' );
/**
* Ignore messages that match the pattern `Store ".*" is already registered.`
diff --git a/packages/js/internal-ts-config/package.json b/packages/js/internal-ts-config/package.json
index 257176319d1..8d6718c7e78 100644
--- a/packages/js/internal-ts-config/package.json
+++ b/packages/js/internal-ts-config/package.json
@@ -11,6 +11,7 @@
"files": [
"tsconfig.json",
"tsconfig-cjs.json",
+ "tsconfig-jest.json",
"types"
],
"scripts": {
diff --git a/packages/js/internal-ts-config/tsconfig-jest.json b/packages/js/internal-ts-config/tsconfig-jest.json
new file mode 100644
index 00000000000..c1764ea37f7
--- /dev/null
+++ b/packages/js/internal-ts-config/tsconfig-jest.json
@@ -0,0 +1,6 @@
+{
+ "extends": "./tsconfig-cjs.json",
+ "compilerOptions": {
+ "jsx": "react-jsx"
+ }
+}
diff --git a/packages/js/navigation/changelog/dev-cjs-prepack-only b/packages/js/navigation/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/navigation/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/navigation/package.json b/packages/js/navigation/package.json
index bf44f404a34..db85109acb1 100644
--- a/packages/js/navigation/package.json
+++ b/packages/js/navigation/package.json
@@ -32,19 +32,18 @@
"scripts": {
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"lint": "pnpm --if-present '/^lint:lang:.*$/'",
"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
"lint:fix:lang:js": "eslint src --fix",
"lint:lang:js": "eslint src",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"test:js": "jest --config ./jest.config.json --passWithNoTests",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"lint-staged": {
@@ -115,25 +114,6 @@
}
},
"wireit": {
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/packages/js/notices/changelog/dev-cjs-prepack-only b/packages/js/notices/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/notices/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/notices/package.json b/packages/js/notices/package.json
index 1b09a54cf5c..ee340896e15 100644
--- a/packages/js/notices/package.json
+++ b/packages/js/notices/package.json
@@ -33,18 +33,17 @@
"scripts": {
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"lint": "pnpm --if-present '/^lint:lang:.*$/'",
"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
"lint:fix:lang:js": "eslint src --fix",
"lint:lang:js": "eslint src",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"lint-staged": {
@@ -90,25 +89,6 @@
}
},
"wireit": {
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/packages/js/number/changelog/dev-cjs-prepack-only b/packages/js/number/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/number/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/number/package.json b/packages/js/number/package.json
index a8bf59e4205..06ea0c9be46 100644
--- a/packages/js/number/package.json
+++ b/packages/js/number/package.json
@@ -37,19 +37,18 @@
"scripts": {
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"lint": "pnpm --if-present '/^lint:lang:.*$/'",
"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
"lint:fix:lang:js": "eslint src --fix",
"lint:lang:js": "eslint src",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"test:js": "jest --config ./jest.config.json --passWithNoTests",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"devDependencies": {
@@ -101,25 +100,6 @@
}
},
"wireit": {
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/packages/js/onboarding/changelog/dev-cjs-prepack-only b/packages/js/onboarding/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/onboarding/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/onboarding/package.json b/packages/js/onboarding/package.json
index af4650124b5..abe9acb7a5e 100644
--- a/packages/js/onboarding/package.json
+++ b/packages/js/onboarding/package.json
@@ -34,20 +34,19 @@
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
"build:project:bundle": "wireit",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"lint": "pnpm --if-present '/^lint:lang:.*$/'",
"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
"lint:fix:lang:js": "eslint src --fix",
"lint:lang:js": "eslint src",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"test:js": "jest --config ./jest.config.json --passWithNoTests",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
"watch:build:project:bundle": "wireit",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"lint-staged": {
@@ -149,25 +148,6 @@
"command": "webpack --watch",
"service": true
},
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/packages/js/product-editor/changelog/dev-cjs-prepack-only b/packages/js/product-editor/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/product-editor/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/product-editor/package.json b/packages/js/product-editor/package.json
index 5c897a350fc..96248a2bd5c 100644
--- a/packages/js/product-editor/package.json
+++ b/packages/js/product-editor/package.json
@@ -186,7 +186,9 @@
},
"files": [
"webpack.config.js",
- "src/**/*.scss"
+ "config/**/*.js",
+ "src/**/*.scss",
+ "src/**/block.json"
],
"output": [
"build-style"
diff --git a/packages/js/remote-logging/changelog/dev-cjs-prepack-only b/packages/js/remote-logging/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/remote-logging/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/remote-logging/package.json b/packages/js/remote-logging/package.json
index 34a721954b4..a4aeb227a50 100644
--- a/packages/js/remote-logging/package.json
+++ b/packages/js/remote-logging/package.json
@@ -31,19 +31,18 @@
"scripts": {
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"lint": "pnpm --if-present '/^lint:lang:.*$/'",
"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
"lint:fix:lang:js": "eslint src --fix",
"lint:lang:js": "eslint src",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"test:js": "jest --config ./jest.config.json --passWithNoTests",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"lint-staged": {
@@ -105,25 +104,6 @@
}
},
"wireit": {
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/packages/js/sanitize/changelog/dev-cjs-prepack-only b/packages/js/sanitize/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/sanitize/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/sanitize/package.json b/packages/js/sanitize/package.json
index c81f96e5701..ee7f20461e0 100644
--- a/packages/js/sanitize/package.json
+++ b/packages/js/sanitize/package.json
@@ -62,19 +62,18 @@
"scripts": {
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"lint": "pnpm --if-present '/^lint:lang:.*$/'",
"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
"lint:fix:lang:js": "eslint src --fix",
"lint:lang:js": "eslint src",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"test:js": "jest --config ./jest.config.json --passWithNoTests",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"lint-staged": {
@@ -107,25 +106,6 @@
}
},
"wireit": {
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/packages/js/settings-editor/changelog/dev-cjs-prepack-only b/packages/js/settings-editor/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/settings-editor/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/settings-editor/package.json b/packages/js/settings-editor/package.json
index 1084bbd697c..67eda0166a7 100644
--- a/packages/js/settings-editor/package.json
+++ b/packages/js/settings-editor/package.json
@@ -116,20 +116,19 @@
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
"build:project:bundle": "wireit",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"lint": "pnpm --if-present '/^lint:lang:.*$/'",
"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
"lint:fix:lang:js": "eslint src --fix",
"lint:lang:js": "eslint src",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"test:js": "jest --config ./jest.config.json --passWithNoTests",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
"watch:build:project:bundle": "wireit",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"peerDependencies": {
@@ -189,25 +188,6 @@
"command": "webpack --watch",
"service": true
},
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/packages/js/tracks/changelog/dev-cjs-prepack-only b/packages/js/tracks/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..0f64fecf28c
--- /dev/null
+++ b/packages/js/tracks/changelog/dev-cjs-prepack-only
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/tracks/package.json b/packages/js/tracks/package.json
index ecb4462ae9e..a0ab432db44 100644
--- a/packages/js/tracks/package.json
+++ b/packages/js/tracks/package.json
@@ -38,19 +38,18 @@
"scripts": {
"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
"build:project": "pnpm --if-present '/^build:project:.*$/'",
- "build:project:cjs": "wireit",
"build:project:esm": "wireit",
+ "build:publish:project": "pnpm build && tsc --project tsconfig-cjs.json --noCheck",
"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
"update:php": "XDEBUG_MODE=off composer update --quiet",
"lint": "pnpm --if-present '/^lint:lang:.*$/'",
"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
"lint:fix:lang:js": "eslint src --fix",
"lint:lang:js": "eslint src",
- "prepack": "pnpm build",
+ "prepack": "pnpm build:publish:project",
"test:js": "jest --config ./jest.config.json --passWithNoTests",
"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
- "watch:build:project:cjs": "wireit",
"watch:build:project:esm": "wireit"
},
"devDependencies": {
@@ -84,25 +83,6 @@
}
},
"wireit": {
- "build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --noCheck",
- "clean": "if-file-deleted",
- "files": [
- "tsconfig-cjs.json",
- "src/**/*.{js,jsx,ts,tsx}",
- "typings/**/*.ts"
- ],
- "output": [
- "build"
- ],
- "dependencies": [
- "dependencyOutputs"
- ]
- },
- "watch:build:project:cjs": {
- "command": "tsc --project tsconfig-cjs.json --watch --noCheck",
- "service": true
- },
"build:project:esm": {
"command": "tsc --project tsconfig.json",
"clean": "if-file-deleted",
diff --git a/plugins/woocommerce/changelog/dev-cjs-prepack-only b/plugins/woocommerce/changelog/dev-cjs-prepack-only
new file mode 100644
index 00000000000..ac80fdad23e
--- /dev/null
+++ b/plugins/woocommerce/changelog/dev-cjs-prepack-only
@@ -0,0 +1,3 @@
+Significance: patch
+Type: dev
+Comment: Internal build refactor only; updates admin imports off CJS build paths now that CJS only builds at prepack time.
diff --git a/plugins/woocommerce/client/admin/client/core-profiler/components/multiple-selector/render-menu.tsx b/plugins/woocommerce/client/admin/client/core-profiler/components/multiple-selector/render-menu.tsx
index 1b1b9a294f2..2e2436775bb 100644
--- a/plugins/woocommerce/client/admin/client/core-profiler/components/multiple-selector/render-menu.tsx
+++ b/plugins/woocommerce/client/admin/client/core-profiler/components/multiple-selector/render-menu.tsx
@@ -7,7 +7,7 @@ import {
__experimentalSelectControlMenu as Menu,
__experimentalSelectControlMenuItem as MenuItem,
} from '@woocommerce/components';
-import { ChildrenProps } from '@woocommerce/components/build-types/experimental-select-control/types';
+import type { ChildrenProps } from '@woocommerce/components/build-types/experimental-select-control/types';
import clsx from 'clsx';
type Props = {
diff --git a/plugins/woocommerce/client/admin/client/jest.config.js b/plugins/woocommerce/client/admin/client/jest.config.js
index b099b037c80..adee33958b0 100644
--- a/plugins/woocommerce/client/admin/client/jest.config.js
+++ b/plugins/woocommerce/client/admin/client/jest.config.js
@@ -2,17 +2,4 @@ module.exports = {
rootDir: '../',
roots: [ '<rootDir>/client' ],
preset: './node_modules/@woocommerce/internal-js-tests/jest-preset.js',
- globals: {
- 'ts-jest': {
- diagnostics: {
- warnOnly: true,
- ignoreCodes: [
- 6059, // (TS6059: rootDir is expected to contain all source files) - disabled because some of our tests import directly from ../packages
- 18002, // these two are defaults from https://kulshekhar.github.io/ts-jest/docs/getting-started/options/diagnostics
- 18003,
- ],
- },
- tsconfig: '<rootDir>/client/tsconfig.test.json',
- },
- },
};
diff --git a/plugins/woocommerce/client/admin/client/marketplace/components/my-subscriptions/table/rows/functions.tsx b/plugins/woocommerce/client/admin/client/marketplace/components/my-subscriptions/table/rows/functions.tsx
index 5b4a1780eff..9e00bed2281 100644
--- a/plugins/woocommerce/client/admin/client/marketplace/components/my-subscriptions/table/rows/functions.tsx
+++ b/plugins/woocommerce/client/admin/client/marketplace/components/my-subscriptions/table/rows/functions.tsx
@@ -1,7 +1,7 @@
/**
* External dependencies
*/
-import { TableRow } from '@woocommerce/components/build-types/table/types';
+import type { TableRow } from '@woocommerce/components/build-types/table/types';
import { gmdateI18n } from '@wordpress/date';
import { __, sprintf } from '@wordpress/i18n';
import { Icon, plugins } from '@wordpress/icons';
diff --git a/plugins/woocommerce/client/admin/client/marketplace/components/my-subscriptions/table/table-rows.tsx b/plugins/woocommerce/client/admin/client/marketplace/components/my-subscriptions/table/table-rows.tsx
index 993acb78434..a2407427ba0 100644
--- a/plugins/woocommerce/client/admin/client/marketplace/components/my-subscriptions/table/table-rows.tsx
+++ b/plugins/woocommerce/client/admin/client/marketplace/components/my-subscriptions/table/table-rows.tsx
@@ -1,7 +1,7 @@
/**
* External dependencies
*/
-import { TableRow } from '@woocommerce/components/build-types/table/types';
+import type { TableRow } from '@woocommerce/components/build-types/table/types';
/**
* Internal dependencies
*/
diff --git a/plugins/woocommerce/client/admin/client/marketplace/components/my-subscriptions/table/table.tsx b/plugins/woocommerce/client/admin/client/marketplace/components/my-subscriptions/table/table.tsx
index 89735f2c087..c52d1a23bf1 100644
--- a/plugins/woocommerce/client/admin/client/marketplace/components/my-subscriptions/table/table.tsx
+++ b/plugins/woocommerce/client/admin/client/marketplace/components/my-subscriptions/table/table.tsx
@@ -2,7 +2,7 @@
* External dependencies
*/
import { EmptyTable, Table, TablePlaceholder } from '@woocommerce/components';
-import {
+import type {
TableHeader,
TableRow,
} from '@woocommerce/components/build-types/table/types';
diff --git a/plugins/woocommerce/client/admin/client/settings-email/settings-email-preview-send.tsx b/plugins/woocommerce/client/admin/client/settings-email/settings-email-preview-send.tsx
index cb4b1152c2b..af8d42ec34d 100644
--- a/plugins/woocommerce/client/admin/client/settings-email/settings-email-preview-send.tsx
+++ b/plugins/woocommerce/client/admin/client/settings-email/settings-email-preview-send.tsx
@@ -7,7 +7,7 @@ import apiFetch from '@wordpress/api-fetch';
import { useState } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
import { recordEvent } from '@woocommerce/tracks';
-import { isValidEmail } from '@woocommerce/product-editor/build/utils/validate-email'; // Import from the build directory so we don't load the entire product editor since we only need this one function.
+import { isValidEmail } from '@woocommerce/product-editor/build-module/utils/validate-email'; // Deep import so we don't load the entire product editor since we only need this one function.
/**
* Internal dependencies
diff --git a/plugins/woocommerce/client/admin/client/tsconfig.test.json b/plugins/woocommerce/client/admin/client/tsconfig.test.json
deleted file mode 100644
index 991b75edcaf..00000000000
--- a/plugins/woocommerce/client/admin/client/tsconfig.test.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "extends": "../tsconfig.json",
- "compilerOptions": {
- "jsx": "react-jsx",
- "module": "commonjs"
- },
- "rootDir": "./"
-}
diff --git a/plugins/woocommerce/client/blocks/tests/js/jest.config.js b/plugins/woocommerce/client/blocks/tests/js/jest.config.js
index ffd0bda9276..3c7ab6ebdb9 100644
--- a/plugins/woocommerce/client/blocks/tests/js/jest.config.js
+++ b/plugins/woocommerce/client/blocks/tests/js/jest.config.js
@@ -53,10 +53,6 @@ module.exports = {
'@wordpress/core-data/build/(.*)$':
'<rootDir>/node_modules/@wordpress/core-data/build/$1',
- // WooCommerce workspace aliases
- '@woocommerce/data': '<rootDir>/node_modules/@woocommerce/data/build',
- '@woocommerce/sanitize':
- '<rootDir>/node_modules/@woocommerce/sanitize/src',
'@woocommerce/atomic-blocks': 'assets/js/atomic/blocks',
'@woocommerce/atomic-utils': 'assets/js/atomic/utils',
'@woocommerce/icons': 'assets/js/icons',
@@ -88,6 +84,17 @@ module.exports = {
'@woocommerce/stores/(.*)$': 'assets/js/base/stores/$1',
'^react$': '<rootDir>/node_modules/react',
'^react-dom$': '<rootDir>/node_modules/react-dom',
+ // Catch-all for monorepo @woocommerce/* packages: route bare and
+ // subpath imports through source so tests don't depend on built
+ // artifacts. Must come after all blocks-internal aliases above and
+ // before the generic build-module rewrite so @woocommerce/* subpaths
+ // (e.g. @woocommerce/product-editor/build-module/utils/...) land on
+ // src/ instead of build/.
+ '^@woocommerce/([^/]+)/(?:src|build|build-module|build-types)/(.+)$':
+ '<rootDir>/../../../../packages/js/$1/src/$2',
+ '^@woocommerce/([^/]+)/(.+)$':
+ '<rootDir>/../../../../packages/js/$1/src/$2',
+ '^@woocommerce/([^/]+)$': '<rootDir>/../../../../packages/js/$1/src',
'^(.+)/build-module/(.*)$': '$1/build/$2',
},
preset: '@wordpress/jest-preset-default',