Skip to content
Open
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
45 changes: 15 additions & 30 deletions rollup.config.mjs
Original file line number Diff line number Diff line change
@@ -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'
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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)

Expand All @@ -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()]

Expand Down Expand Up @@ -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,
Expand Down