From 961cea42f31fedfec8507809e8fc24a577bbeef0 Mon Sep 17 00:00:00 2001 From: Chris Manson Date: Tue, 21 Jan 2025 15:41:43 +0000 Subject: [PATCH] move broccoli wrapper into @embroider/compat --- packages/compat/src/default-pipeline.ts | 16 +++++++++++++--- packages/vite/index.ts | 2 +- packages/vite/package.json | 1 - packages/vite/src/broccoli-builder.ts | 16 ---------------- packages/vite/src/build-once.ts | 16 ++++++++++++++++ pnpm-lock.yaml | 3 --- tests/app-template/ember-cli-build.js | 4 ++-- 7 files changed, 32 insertions(+), 26 deletions(-) delete mode 100644 packages/vite/src/broccoli-builder.ts create mode 100644 packages/vite/src/build-once.ts diff --git a/packages/compat/src/default-pipeline.ts b/packages/compat/src/default-pipeline.ts index 8f9f9b1a1..eb78aad81 100644 --- a/packages/compat/src/default-pipeline.ts +++ b/packages/compat/src/default-pipeline.ts @@ -5,7 +5,7 @@ import type { Variant, EmberAppInstance } from '@embroider/core'; import type { Node } from 'broccoli-node-api'; import writeFile from 'broccoli-file-creator'; import mergeTrees from 'broccoli-merge-trees'; -import type Plugin from 'broccoli-plugin'; +import Plugin from 'broccoli-plugin'; export interface PipelineOptions extends Options { packagerOptions?: PackagerOptions; @@ -37,10 +37,20 @@ export function prebuild(emberApp: EmberAppInstance, options?: Options): Node { return mergeTrees([embroiderApp.asStage(addons).tree, writeFile('.stage2-output', () => outputPath)]); } -export function compatBuild(emberApp: EmberAppInstance, Builder: typeof Plugin, options?: Options): Node { +export function compatBuild( + emberApp: EmberAppInstance, + buildOnce: (outputPath: string, emberEnv: 'development' | 'test' | 'production') => Promise, + options?: Options +): Node { if (process.env.EMBROIDER_PREBUILD) { return prebuild(emberApp, options); } - return new Builder([]); + class Builder extends Plugin { + build(): Promise { + return buildOnce(this.outputPath, emberApp.env); + } + } + + return new Builder([], {}); } diff --git a/packages/vite/index.ts b/packages/vite/index.ts index a011d52b3..623e7af7f 100644 --- a/packages/vite/index.ts +++ b/packages/vite/index.ts @@ -9,4 +9,4 @@ export * from './src/assets.js'; export * from './src/content-for.js'; export * from './src/classic-ember-support.js'; export * from './src/ember.js'; -export * from './src/broccoli-builder.js'; +export * from './src/build-once.js'; diff --git a/packages/vite/package.json b/packages/vite/package.json index 0ee637f98..40e40a248 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -21,7 +21,6 @@ "@embroider/reverse-exports": "workspace:*", "@rollup/pluginutils": "^5.1.0", "assert-never": "^1.2.1", - "broccoli-plugin": "^4.0.7", "browserslist": "*", "browserslist-to-esbuild": "^2.1.1", "content-tag": "^2.0.2", diff --git a/packages/vite/src/broccoli-builder.ts b/packages/vite/src/broccoli-builder.ts deleted file mode 100644 index d217331f8..000000000 --- a/packages/vite/src/broccoli-builder.ts +++ /dev/null @@ -1,16 +0,0 @@ -import Plugin from 'broccoli-plugin'; -import { spawn } from 'child_process'; - -export class Builder extends Plugin { - build(): Promise { - return new Promise((resolve, reject) => { - const child = spawn(`npx vite build --outDir ${this.outputPath}`, { - cwd: process.cwd(), - shell: true, - stdio: 'inherit', - env: { ...process.env, FORCE_BUILD_TESTS: 'true' }, - }); - child.on('exit', code => (code === 0 ? resolve() : reject(new Error('vite build failed')))); - }); - } -} diff --git a/packages/vite/src/build-once.ts b/packages/vite/src/build-once.ts new file mode 100644 index 000000000..fa8cf00f4 --- /dev/null +++ b/packages/vite/src/build-once.ts @@ -0,0 +1,16 @@ +import { spawn } from 'child_process'; + +export function buildOnce(outputPath: string, emberEnv: 'development' | 'test' | 'production'): Promise { + return new Promise((resolve, reject) => { + const child = spawn( + `npx vite build --outDir ${outputPath} --mode ${emberEnv === 'production' ? 'production' : 'development'}`, + { + cwd: process.cwd(), + shell: true, + stdio: 'inherit', + env: { ...process.env }, + } + ); + child.on('exit', code => (code === 0 ? resolve() : reject(new Error('vite build failed')))); + }); +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a6fae6a20..44c31def3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1072,9 +1072,6 @@ importers: assert-never: specifier: ^1.2.1 version: 1.4.0 - broccoli-plugin: - specifier: ^4.0.7 - version: 4.0.7 browserslist: specifier: ^4.14.0 version: 4.24.4 diff --git a/tests/app-template/ember-cli-build.js b/tests/app-template/ember-cli-build.js index eb602ced1..d955a205a 100644 --- a/tests/app-template/ember-cli-build.js +++ b/tests/app-template/ember-cli-build.js @@ -4,8 +4,8 @@ const EmberApp = require('ember-cli/lib/broccoli/ember-app'); const { compatBuild } = require('@embroider/compat'); module.exports = async function (defaults) { - const { Builder } = await import('@embroider/vite'); + const { buildOnce } = await import('@embroider/vite'); let app = new EmberApp(defaults, {}); - return compatBuild(app, Builder); + return compatBuild(app, buildOnce); };