Skip to content

chore(headless,bueno): externalize all packages on node outputs #4921

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 22 commits into from
May 28, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .deployment.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
"disabled": $[IS_NIGHTLY],
"bucket": "{terraform.infra.infra.bucket_binaries}",
"directory": "proda/StaticCDN/headless/v$[HEADLESS_PATCH_VERSION]",
"source": "packages/headless/dist/browser",
"source": "packages/headless/cdn",
"parameters": {
"acl": "public-read"
}
Expand All @@ -82,7 +82,7 @@
"disabled": $[IS_NIGHTLY],
"bucket": "{terraform.infra.infra.bucket_binaries}",
"directory": "proda/StaticCDN/headless/v$[HEADLESS_MINOR_VERSION]",
"source": "packages/headless/dist/browser",
"source": "packages/headless/cdn",
"parameters": {
"acl": "public-read"
}
Expand All @@ -94,7 +94,7 @@
"disabled": $[IS_NIGHTLY],
"bucket": "{terraform.infra.infra.bucket_binaries}",
"directory": "proda/StaticCDN/headless/v$[HEADLESS_MAJOR_VERSION]",
"source": "packages/headless/dist/browser",
"source": "packages/headless/cdn",
"parameters": {
"acl": "public-read"
}
Expand All @@ -106,7 +106,7 @@
"disabled": $[IS_NOT_NIGHTLY],
"bucket": "{terraform.infra.infra.bucket_binaries}",
"directory": "proda/StaticCDN/headless/v$[HEADLESS_MAJOR_VERSION]-nightly",
"source": "packages/headless/dist/browser",
"source": "packages/headless/cdn",
"parameters": {
"acl": "public-read"
}
Expand Down
63 changes: 57 additions & 6 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion packages/atomic-hosted-page/scripts/start.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ const run = async () => {
`Copying headless files to ${devPublicDir}/headless/v${headlessVersion}`
);
await copyFiles(
path.join(headlessDir, 'dist/browser'),
path.join(headlessDir, 'cdn'),
`${devPublicDir}/headless/v${headlessVersion}`
);

Expand Down
2 changes: 1 addition & 1 deletion packages/atomic/playwright.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ export default defineConfig({
? {
command:
process.env.DEPLOYMENT_ENVIRONMENT === 'CDN'
? 'cp -r ../headless/dist/browser ./dist-storybook/headless/ && cp -r ../bueno/cdn ./dist-storybook/bueno/ && npx ws -c ws.config.cjs'
? 'cp -r ../headless/cdn ./dist-storybook/headless/ && cp -r ../bueno/cdn ./dist-storybook/bueno/ && npx ws -c ws.config.cjs'
: 'npx ws -d ./dist-storybook -p 4400',
port: 4400,
timeout: 120 * 1000,
Expand Down
2 changes: 1 addition & 1 deletion packages/atomic/scripts/start-vite.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ const run = async () => {
`Copying headless files to ${devPublicDir}/headless/v${headlessVersion}`
);
await copyFiles(
path.join(headlessDir, 'dist/browser'),
path.join(headlessDir, 'cdn'),
`${devPublicDir}/headless/v${headlessVersion}`
);

Expand Down
2 changes: 1 addition & 1 deletion packages/headless/.eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const {resolve} = require('path');

module.exports = {
ignorePatterns: ['dist', 'temp', 'ponyfills', 'src/external-builds/**/*'],
ignorePatterns: ['dist', 'cdn', 'temp', 'ponyfills', 'src/external-builds/**/*'],
plugins: ['canonical'],
settings: {
'import/parsers': {
Expand Down
1 change: 1 addition & 0 deletions packages/headless/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ temp/
doc-parser/build

src/external-builds
cdn/
17 changes: 4 additions & 13 deletions packages/headless/contributors/adding-a-sub-package.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,19 +44,10 @@ A sub-package groups together exports (i.e. engine, controllers, action loaders,
"exports": {
// ...
"./case-assist": {
"types": "./dist/definitions/case-assist.index.d.ts",
"node": {
"types": "./dist/definitions/case-assist.index.d.ts",
"import": "./dist/case-assist/headless.esm.js",
"require": "./dist/case-assist/headless.cjs"
},
"browser": {
"types": "./dist/definitions/case-assist.index.d.ts",
"import": "./dist/browser/case-assist/headless.esm.js",
"require": "./dist/browser/case-assist/headless.js"
},
"import": "./dist/browser/case-assist/headless.esm.js",
"require": "./dist/browser/case-assist/headless.js"
"types": "./dist/definitions/case-assist.index.d.ts",
"import": "./dist/case-assist/headless.esm.js",
"require": "./dist/case-assist/headless.cjs",
"default": "./dist/case-assist/headless.esm.js"
},
// ...
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ However, due to the internal project architecture, unnecessary code can sometime

During the building process of Headless bundles using esbuild, `metafiles` are generated simultaneously and saved in the "dist" folder. This configuration can be found in `esbuild.mjs`.

After executing the command `npm run build`, you should find the available `metafiles` in the `dist` folder, such as `dist/browser/browser.esm.stats.json` or `dist/browser/case-assist/browser.esm.stats.json`.
After executing the command `npm run build`, you should find the available `metafiles` in the `dist` folder, such as `cdn/browser.esm.stats.json` or `cdn/case-assist/browser.esm.stats.json`.

These files contain metadata about the build process, specifically providing information about the files included in the final bundle and the reasons behind their inclusion.

Expand Down
6 changes: 3 additions & 3 deletions packages/headless/esbuild.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ const base = {

const browserEsm = Object.entries(useCaseEntries).map((entry) => {
const [useCase, entryPoint] = entry;
const outDir = getUseCaseDir('dist/browser', useCase);
const outDir = getUseCaseDir('cdn', useCase);
const outfile = `${outDir}/headless.esm.js`;

let config = {
Expand All @@ -112,7 +112,7 @@ const browserEsm = Object.entries(useCaseEntries).map((entry) => {

const browserUmd = Object.entries(useCaseEntries).map((entry) => {
const [useCase, entryPoint] = entry;
const outDir = getUseCaseDir('dist/browser/', useCase);
const outDir = getUseCaseDir('cdn', useCase);
const outfile = `${outDir}/headless.js`;

const globalName = getUmdGlobalName(useCase);
Expand Down Expand Up @@ -300,7 +300,6 @@ const nodeEsm = Object.entries(useCaseEntries).map((entry) => {
outfile,
sourcemap: true,
format: 'esm',
external: ['pino'],
mainFields: ['module', 'main'],
},
dir
Expand All @@ -316,6 +315,7 @@ async function buildNodeConfig(options, outDir) {
...base,
metafile: true,
platform: 'node',
packages: 'external',
treeShaking: true,
plugins: [
alias({
Expand Down
107 changes: 22 additions & 85 deletions packages/headless/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,113 +7,50 @@
"directory": "packages/headless"
},
"main": "./dist/headless.cjs",
"module": "./dist/browser/headless.esm.js",
"module": "./dist/headless.esm.js",
"type": "module",
"exports": {
".": {
"types": "./dist/definitions/index.d.ts",
"node": {
"types": "./dist/definitions/index.d.ts",
"import": "./dist/headless.esm.js",
"require": "./dist/headless.cjs"
},
"browser": {
"types": "./dist/definitions/index.d.ts",
"import": "./dist/browser/headless.esm.js",
"require": "./dist/browser/headless.js"
},
"import": "./dist/browser/headless.esm.js",
"require": "./dist/browser/headless.js"
"import": "./dist/headless.esm.js",
"require": "./dist/headless.cjs",
"default": "./dist/headless.esm.js"
},
"./case-assist": {
"types": "./dist/definitions/case-assist.index.d.ts",
"node": {
"types": "./dist/definitions/case-assist.index.d.ts",
"import": "./dist/case-assist/headless.esm.js",
"require": "./dist/case-assist/headless.cjs"
},
"browser": {
"types": "./dist/definitions/case-assist.index.d.ts",
"import": "./dist/browser/case-assist/headless.esm.js",
"require": "./dist/browser/case-assist/headless.js"
},
"import": "./dist/browser/case-assist/headless.esm.js",
"require": "./dist/browser/case-assist/headless.js"
"import": "./dist/case-assist/headless.esm.js",
"require": "./dist/case-assist/headless.cjs",
"default": "./dist/case-assist/headless.esm.js"
},
"./commerce": {
"types": "./dist/definitions/commerce.index.d.ts",
"node": {
"types": "./dist/definitions/commerce.index.d.ts",
"import": "./dist/commerce/headless.esm.js",
"require": "./dist/commerce/headless.cjs"
},
"browser": {
"types": "./dist/definitions/commerce.index.d.ts",
"import": "./dist/browser/commerce/headless.esm.js",
"require": "./dist/browser/commerce/headless.js"
},
"import": "./dist/browser/commerce/headless.esm.js",
"require": "./dist/browser/commerce/headless.js"
"import": "./dist/commerce/headless.esm.js",
"require": "./dist/commerce/headless.cjs",
"default": "./dist/commerce/headless.esm.js"
},
"./insight": {
"types": "./dist/definitions/insight.index.d.ts",
"node": {
"types": "./dist/definitions/insight.index.d.ts",
"import": "./dist/insight/headless.esm.js",
"require": "./dist/insight/headless.cjs"
},
"browser": {
"types": "./dist/definitions/insight.index.d.ts",
"import": "./dist/browser/insight/headless.esm.js",
"require": "./dist/browser/insight/headless.js"
},
"import": "./dist/browser/insight/headless.esm.js",
"require": "./dist/browser/insight/headless.js"
"import": "./dist/insight/headless.esm.js",
"require": "./dist/insight/headless.cjs",
"default": "./dist/insight/headless.esm.js"
},
"./recommendation": {
"types": "./dist/definitions/recommendation.index.d.ts",
"node": {
"types": "./dist/definitions/recommendation.index.d.ts",
"import": "./dist/recommendation/headless.esm.js",
"require": "./dist/recommendation/headless.cjs"
},
"browser": {
"types": "./dist/definitions/recommendation.index.d.ts",
"import": "./dist/browser/recommendation/headless.esm.js",
"require": "./dist/browser/recommendation/headless.js"
},
"import": "./dist/browser/recommendation/headless.esm.js",
"require": "./dist/browser/recommendation/headless.js"
"import": "./dist/recommendation/headless.esm.js",
"require": "./dist/recommendation/headless.cjs",
"default": "./dist/recommendation/headless.esm.js"
},
"./ssr": {
"types": "./dist/definitions/ssr.index.d.ts",
"node": {
"types": "./dist/definitions/ssr.index.d.ts",
"import": "./dist/ssr/headless.esm.js",
"require": "./dist/ssr/headless.cjs"
},
"browser": {
"types": "./dist/definitions/ssr.index.d.ts",
"import": "./dist/browser/ssr/headless.esm.js",
"require": "./dist/browser/ssr/headless.js"
},
"import": "./dist/browser/ssr/headless.esm.js",
"require": "./dist/browser/ssr/headless.js"
"import": "./dist/ssr/headless.esm.js",
"require": "./dist/ssr/headless.cjs",
"default": "./dist/ssr/headless.esm.js"
},
"./ssr-commerce": {
"types": "./dist/definitions/ssr-commerce.index.d.ts",
"node": {
"types": "./dist/definitions/ssr-commerce.index.d.ts",
"import": "./dist/ssr-commerce/headless.esm.js",
"require": "./dist/ssr-commerce/headless.cjs"
},
"browser": {
"types": "./dist/definitions/ssr-commerce.index.d.ts",
"import": "./dist/browser/ssr-commerce/headless.esm.js",
"require": "./dist/browser/ssr-commerce/headless.js"
},
"import": "./dist/browser/ssr-commerce/headless.esm.js",
"require": "./dist/browser/ssr-commerce/headless.js"
"import": "./dist/ssr-commerce/headless.esm.js",
"require": "./dist/ssr-commerce/headless.cjs",
"default": "./dist/ssr-commerce/headless.esm.js"
}
},
"types": "./dist/definitions/index.d.ts",
Expand Down
6 changes: 5 additions & 1 deletion packages/headless/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@
"release:phase3": {},
"build": {
"executor": "nx:run-commands",
"outputs": ["{projectRoot}/dist", "{projectRoot}/temp"],
"outputs": [
"{projectRoot}/dist",
"{projectRoot}/cdn",
"{projectRoot}/temp"
],
"cache": true,
"options": {
"commands": ["npm run build:prod"],
Expand Down
2 changes: 1 addition & 1 deletion packages/samples/headless-commerce-react/vite.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ export default defineConfig({
dest: `./bueno/${buenoVersion}`,
},
{
src: '../../headless/dist/browser/*',
src: '../../headless/cdn/*',
dest: `./headless/${headlessVersion}`,
},
],
Expand Down
Loading
Loading