const require = createRequire(import.meta.url)
const __dirname = dirname(fileURLToPath(import.meta.url))
const args = minimist(process.argv.slice(2))
-const target = args._[0] || 'vue'
+const targets = args._ || ['vue']
const format = args.f || 'global'
const prod = args.p || false
const inlineDeps = args.i || args.inline
-const pkg = require(`../packages/${target}/package.json`)
// resolve output
const outputFormat = format.startsWith('global')
? `runtime.${format.replace(/-runtime$/, '')}`
: format
-const outfile = resolve(
- __dirname,
- `../packages/${target}/dist/${
- target === 'vue-compat' ? `vue` : target
- }.${postfix}.${prod ? `prod.` : ``}js`,
-)
-const relativeOutfile = relative(process.cwd(), outfile)
+for (const target of targets) {
+ const pkg = require(`../packages/${target}/package.json`)
+ const outfile = resolve(
+ __dirname,
+ `../packages/${target}/dist/${
+ target === 'vue-compat' ? `vue` : target
+ }.${postfix}.${prod ? `prod.` : ``}js`,
+ )
+ const relativeOutfile = relative(process.cwd(), outfile)
-// resolve externals
-// TODO this logic is largely duplicated from rollup.config.js
-/** @type {string[]} */
-let external = []
-if (!inlineDeps) {
- // cjs & esm-bundler: external all deps
- if (format === 'cjs' || format.includes('esm-bundler')) {
- external = [
- ...external,
- ...Object.keys(pkg.dependencies || {}),
- ...Object.keys(pkg.peerDependencies || {}),
- // for @vue/compiler-sfc / server-renderer
- 'path',
- 'url',
- 'stream',
- ]
- }
+ // resolve externals
+ // TODO this logic is largely duplicated from rollup.config.js
+ /** @type {string[]} */
+ let external = []
+ if (!inlineDeps) {
+ // cjs & esm-bundler: external all deps
+ if (format === 'cjs' || format.includes('esm-bundler')) {
+ external = [
+ ...external,
+ ...Object.keys(pkg.dependencies || {}),
+ ...Object.keys(pkg.peerDependencies || {}),
+ // for @vue/compiler-sfc / server-renderer
+ 'path',
+ 'url',
+ 'stream',
+ ]
+ }
- if (target === 'compiler-sfc') {
- const consolidatePkgPath = require.resolve(
- '@vue/consolidate/package.json',
- {
- paths: [resolve(__dirname, `../packages/${target}/`)],
- },
- )
- const consolidateDeps = Object.keys(
- require(consolidatePkgPath).devDependencies,
- )
- external = [
- ...external,
- ...consolidateDeps,
- 'fs',
- 'vm',
- 'crypto',
- 'react-dom/server',
- 'teacup/lib/express',
- 'arc-templates/dist/es5',
- 'then-pug',
- 'then-jade',
- ]
+ if (target === 'compiler-sfc') {
+ const consolidatePkgPath = require.resolve(
+ '@vue/consolidate/package.json',
+ {
+ paths: [resolve(__dirname, `../packages/${target}/`)],
+ },
+ )
+ const consolidateDeps = Object.keys(
+ require(consolidatePkgPath).devDependencies,
+ )
+ external = [
+ ...external,
+ ...consolidateDeps,
+ 'fs',
+ 'vm',
+ 'crypto',
+ 'react-dom/server',
+ 'teacup/lib/express',
+ 'arc-templates/dist/es5',
+ 'then-pug',
+ 'then-jade',
+ ]
+ }
}
-}
-/** @type {Array<import('esbuild').Plugin>} */
-const plugins = [
- {
- name: 'log-rebuild',
- setup(build) {
- build.onEnd(() => {
- console.log(`built: ${relativeOutfile}`)
- })
+ /** @type {Array<import('esbuild').Plugin>} */
+ const plugins = [
+ {
+ name: 'log-rebuild',
+ setup(build) {
+ build.onEnd(() => {
+ console.log(`built: ${relativeOutfile}`)
+ })
+ },
},
- },
-]
+ ]
-if (format !== 'cjs' && pkg.buildOptions?.enableNonBrowserBranches) {
- plugins.push(polyfillNode())
-}
+ if (format !== 'cjs' && pkg.buildOptions?.enableNonBrowserBranches) {
+ plugins.push(polyfillNode())
+ }
-esbuild
- .context({
- entryPoints: [resolve(__dirname, `../packages/${target}/src/index.ts`)],
- outfile,
- bundle: true,
- external,
- sourcemap: true,
- format: outputFormat,
- globalName: pkg.buildOptions?.name,
- platform: format === 'cjs' ? 'node' : 'browser',
- plugins,
- define: {
- __COMMIT__: `"dev"`,
- __VERSION__: `"${pkg.version}"`,
- __DEV__: prod ? `false` : `true`,
- __TEST__: `false`,
- __BROWSER__: String(
- format !== 'cjs' && !pkg.buildOptions?.enableNonBrowserBranches,
- ),
- __GLOBAL__: String(format === 'global'),
- __ESM_BUNDLER__: String(format.includes('esm-bundler')),
- __ESM_BROWSER__: String(format.includes('esm-browser')),
- __CJS__: String(format === 'cjs'),
- __SSR__: String(format === 'cjs' || format.includes('esm-bundler')),
- __COMPAT__: String(target === 'vue-compat'),
- __FEATURE_SUSPENSE__: `true`,
- __FEATURE_OPTIONS_API__: `true`,
- __FEATURE_PROD_DEVTOOLS__: `false`,
- __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__: `false`,
- },
- })
- .then(ctx => ctx.watch())
+ esbuild
+ .context({
+ entryPoints: [resolve(__dirname, `../packages/${target}/src/index.ts`)],
+ outfile,
+ bundle: true,
+ external,
+ sourcemap: true,
+ format: outputFormat,
+ globalName: pkg.buildOptions?.name,
+ platform: format === 'cjs' ? 'node' : 'browser',
+ plugins,
+ define: {
+ __COMMIT__: `"dev"`,
+ __VERSION__: `"${pkg.version}"`,
+ __DEV__: prod ? `false` : `true`,
+ __TEST__: `false`,
+ __BROWSER__: String(
+ format !== 'cjs' && !pkg.buildOptions?.enableNonBrowserBranches,
+ ),
+ __GLOBAL__: String(format === 'global'),
+ __ESM_BUNDLER__: String(format.includes('esm-bundler')),
+ __ESM_BROWSER__: String(format.includes('esm-browser')),
+ __CJS__: String(format === 'cjs'),
+ __SSR__: String(format === 'cjs' || format.includes('esm-bundler')),
+ __COMPAT__: String(target === 'vue-compat'),
+ __FEATURE_SUSPENSE__: `true`,
+ __FEATURE_OPTIONS_API__: `true`,
+ __FEATURE_PROD_DEVTOOLS__: `false`,
+ __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__: `false`,
+ },
+ })
+ .then(ctx => ctx.watch())
+}