diff --git a/rollup.config.mjs b/rollup.config.mjs index 0d8f921da0..800fd82c26 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -1,5 +1,5 @@ // @ts-check -import { dirname, resolve } from 'node:path' +import { dirname, parse, resolve } from 'node:path' import { fileURLToPath } from 'node:url' import { readFileSync } from 'node:fs' import ts from 'rollup-plugin-typescript2' @@ -23,7 +23,6 @@ const packageDir = resolve(packagesDir, process.env.TARGET) const pkg = JSON.parse( readFileSync(resolve(packageDir, `package.json`), 'utf-8') ) -const name = pkg.name function getAuthors(pkg) { const { contributors, author } = pkg @@ -68,18 +67,10 @@ const outputConfigs = { }, } -const packageBuilds = Object.keys(outputConfigs) -const packageConfigs = packageBuilds.map((format) => - createConfig(format, outputConfigs[format]) -) - -// only add the production ready if we are bundling the options -packageBuilds.forEach((buildName) => { - if (buildName === 'cjs') { - packageConfigs.push(createProductionConfig(buildName)) - } else if (buildName === 'global') { - packageConfigs.push(createMinifiedConfig(buildName)) - } +const packageConfigs = [] +Object.entries(outputConfigs).forEach(([buildName, output]) => { + packageConfigs.push(createConfig(buildName, output)) + packageConfigs.push(createProductionConfig(buildName, output)) }) export default packageConfigs @@ -101,7 +92,8 @@ function createConfig(buildName, output, plugins = []) { const isGlobalBuild = buildName === 'global' const isRawESMBuild = buildName === 'browser' const isNodeBuild = buildName === 'cjs' - const isBundlerESMBuild = buildName === 'browser' || buildName === 'mjs' + const isBundlerESMBuild = + !isProductionBuild && (buildName === 'browser' || buildName === 'mjs') if (isGlobalBuild) output.name = pascalcase(pkg.name) @@ -125,7 +117,8 @@ function createConfig(buildName, output, plugins = []) { // during a single build. hasTSChecked = true - const external = ['vue', '@vue/devtools-api'] + const external = ['vue'] + if (!isProductionBuild) external.push('@vue/devtools-api') const nodePlugins = [nodeResolve(), commonjs()] @@ -208,25 +201,17 @@ function createReplacePlugin( }) } -function createProductionConfig(format) { - const extension = format === 'cjs' ? 'cjs' : 'js' - const descriptor = format === 'cjs' ? '' : `.${format}` - return createConfig(format, { - file: `dist/${name}${descriptor}.prod.${extension}`, - format: outputConfigs[format].format, - }) -} - -function createMinifiedConfig(format) { +function createProductionConfig(buildName, output) { + const parsedPath = parse(output.file) return createConfig( - format, + buildName, { - file: `dist/${name}.${format === 'global' ? 'iife' : format}.prod.js`, - format: outputConfigs[format].format, + file: `${parsedPath.dir}/${parsedPath.name}.prod${parsedPath.ext}`, + format: output.format, }, [ terser({ - module: /^esm/.test(format), + module: output.format === 'es', compress: { ecma: 2015, pure_getters: true,