+/*
+Produce prodcution builds and stitch toegether d.ts files.
+
+To specific the package to build, simply pass its name and the desired build
+formats to output (defaults to `buildOptions.formats` specified in that package,
+or "esm,cjs"):
+
+```
+# name supports fuzzy match. will build all packages with name containing "dom":
+yarn build dom
+
+# specify the format to output
+yarn build core --formats cjs
+```
+*/
+
const fs = require('fs-extra')
const path = require('path')
const zlib = require('zlib')
const dts = require('dts-bundle')
const { targets, fuzzyMatchTarget } = require('./utils')
-const target = process.argv[2]
-
+const args = require('minimist')(process.argv.slice(2))
+const target = args._[0]
+const formats = args.formats || args.f
;(async () => {
if (!target) {
await buildAll(targets)
}
})()
-async function buildAll (targets) {
+async function buildAll(targets) {
for (const target of targets) {
await build(target)
}
}
-async function build (target) {
+async function build(target) {
const pkgDir = path.resolve(`packages/${target}`)
await fs.remove(`${pkgDir}/dist`)
- await execa('rollup', [
- '-c',
- '--environment',
- `NODE_ENV:production,TARGET:${target}`
- ], { stdio: 'inherit' })
+ await execa(
+ 'rollup',
+ [
+ '-c',
+ '--environment',
+ `NODE_ENV:production,` +
+ `TARGET:${target}` +
+ (formats ? `FORMATS:${formats}` : ``)
+ ],
+ { stdio: 'inherit' }
+ )
const dtsOptions = {
name: target === 'vue' ? target : `@vue/${target}`,
await fs.remove(`${pkgDir}/dist/packages`)
}
-function checkAllSizes (targets) {
+function checkAllSizes(targets) {
console.log()
for (const target of targets) {
checkSize(target)
console.log()
}
-function checkSize (target) {
+function checkSize(target) {
const pkgDir = path.resolve(`packages/${target}`)
const esmProdBuild = `${pkgDir}/dist/${target}.esm-browser.prod.js`
if (fs.existsSync(esmProdBuild)) {
const minSize = (file.length / 1024).toFixed(2) + 'kb'
const gzipped = zlib.gzipSync(file)
const gzipSize = (gzipped.length / 1024).toFixed(2) + 'kb'
- console.log(`${
- chalk.gray(chalk.bold(target))
- } min:${minSize} / gzip:${gzipSize}`)
+ console.log(
+ `${chalk.gray(chalk.bold(target))} min:${minSize} / gzip:${gzipSize}`
+ )
}
}
-// Run Rollup in watch mode for a single package for development.
-// Only the ES modules format will be generated, as it is expected to be tested
-// in a modern browser using <script type="module">.
-// Defaults to watch the `vue` meta package.
-// To specific the package to watch, simply pass its name. e.g.
-// ```
-// yarn dev observer
-// ```
+/*
+Run Rollup in watch mode for development.
+
+To specific the package to watch, simply pass its name and the desired build
+formats to watch (defaults to "umd"):
+
+```
+# name supports fuzzy match. will watch all packages with name containing "dom"
+yarn dev dom
+
+# specify the format to output
+yarn dev core --formats cjs
+```
+*/
const execa = require('execa')
const { targets, fuzzyMatchTarget } = require('./utils')
-const target = fuzzyMatchTarget(process.argv[2] || 'runtime-dom')
+const args = require('minimist')(process.argv.slice(2))
+const target = fuzzyMatchTarget(args._[0] || 'runtime-dom')
+const formats = args.formats || args.f
execa(
'rollup',
- [
- '-wc',
- '--environment',
- `TARGET:${target},FORMATS:umd`
- ],
+ ['-wc', '--environment', `TARGET:${target},FORMATS:${formats || 'umd'}`],
{
stdio: 'inherit'
}