diff --git a/packages/@glimmer-workspace/build/lib/config.js b/packages/@glimmer-workspace/build/lib/config.js index fd0eea7ed6..1c7da2a781 100644 --- a/packages/@glimmer-workspace/build/lib/config.js +++ b/packages/@glimmer-workspace/build/lib/config.js @@ -186,13 +186,14 @@ export class Package { /** * @param {ImportMeta | string} meta + * @param {Formats} [formats] * @returns {import("./config.js").RollupExport} */ - static config(meta) { + static config(meta, formats) { const pkg = Package.at(meta); if (pkg) { - return pkg.config(); + return pkg.config(formats); } else { return []; } @@ -242,10 +243,25 @@ export class Package { } /** + * @typedef {object} Formats + * @property {boolean} [ esm ] enabled by default + * @property {boolean} [ cjs ] disabled by default + * * @returns {import("rollup").RollupOptions[] | import("rollup").RollupOptions} */ - config() { - return [...this.rollupESM({ env: 'dev' }), ...this.rollupESM({ env: 'prod' })]; + config(formats = {}) { + let builds = []; + + if (formats.esm ?? true) { + builds.push(...this.rollupESM({ env: 'dev' })); + builds.push(...this.rollupESM({ env: 'prod' })); + } + + if (formats.cjs) { + builds.push(...this.rollupCJS({ env: 'dev' })); + } + + return builds; } /** @@ -300,6 +316,30 @@ export class Package { })); } + /** + * @param {RollupConfigurationOptions} options + * @returns {import("rollup").RollupOptions[]} + */ + rollupCJS({ env }) { + return this.#shared('cjs', env).map((options) => ({ + ...options, + external: this.#external, + plugins: [ + inline(), + nodePolyfills(), + commonjs(), + nodeResolve(), + ...this.replacements(env), + postcss(), + typescript(this.#package, { + target: ScriptTarget.ES2021, + module: ModuleKind.CommonJS, + moduleResolution: ModuleResolutionKind.NodeJs, + }), + ], + })); + } + /** * We only want importMeta stripped for production builds * @param {'dev' | 'prod'} env diff --git a/packages/@glimmer/compiler/package.json b/packages/@glimmer/compiler/package.json index 1006c90129..f9879df579 100644 --- a/packages/@glimmer/compiler/package.json +++ b/packages/@glimmer/compiler/package.json @@ -22,8 +22,10 @@ ".": { "types": "./dist/dev/index.d.ts", "development": { + "require": "./dist/dev/index.cjs", "default": "./dist/dev/index.js" }, + "require": "./dist/dev/index.cjs", "default": "./dist/prod/index.js" } } diff --git a/packages/@glimmer/compiler/rollup.config.mjs b/packages/@glimmer/compiler/rollup.config.mjs index efe98fb212..ec9b2b447d 100644 --- a/packages/@glimmer/compiler/rollup.config.mjs +++ b/packages/@glimmer/compiler/rollup.config.mjs @@ -1,3 +1,3 @@ import { Package } from '@glimmer-workspace/build-support'; -export default Package.config(import.meta); +export default Package.config(import.meta, { esm: true, cjs: true }); diff --git a/packages/@glimmer/syntax/package.json b/packages/@glimmer/syntax/package.json index af60a41f64..99c45e52e3 100644 --- a/packages/@glimmer/syntax/package.json +++ b/packages/@glimmer/syntax/package.json @@ -37,8 +37,10 @@ ".": { "types": "./dist/dev/index.d.ts", "development": { + "require": "./dist/dev/index.cjs", "default": "./dist/dev/index.js" }, + "require": "./dist/dev/index.cjs", "default": "./dist/prod/index.js" } } diff --git a/packages/@glimmer/syntax/rollup.config.mjs b/packages/@glimmer/syntax/rollup.config.mjs index efe98fb212..ec9b2b447d 100644 --- a/packages/@glimmer/syntax/rollup.config.mjs +++ b/packages/@glimmer/syntax/rollup.config.mjs @@ -1,3 +1,3 @@ import { Package } from '@glimmer-workspace/build-support'; -export default Package.config(import.meta); +export default Package.config(import.meta, { esm: true, cjs: true });