diff --git a/scripts/build.js b/scripts/build.js index 0ade7371..b4d63ab2 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -20,19 +20,21 @@ const zlib = require('zlib') const chalk = require('chalk') const execa = require('execa') const { compress } = require('brotli') -const { targets, fuzzyMatchTarget } = require('./utils') +const { targets: allTargets, fuzzyMatchTarget } = require('./utils') const args = require('minimist')(process.argv.slice(2)) -const target = args._[0] +const targets = args._ const formats = args.formats || args.f +const devOnly = args.devOnly || args.d +const prodOnly = !devOnly && (args.prodOnly || args.p) const buildAllMatching = args.all || args.a ;(async () => { - if (!target) { - await buildAll(targets) - checkAllSizes(targets) + if (!targets.length) { + await buildAll(allTargets) + checkAllSizes(allTargets) } else { - await buildAll(fuzzyMatchTarget(target, buildAllMatching)) - checkAllSizes(fuzzyMatchTarget(target, buildAllMatching)) + await buildAll(fuzzyMatchTarget(targets, buildAllMatching)) + checkAllSizes(fuzzyMatchTarget(targets, buildAllMatching)) } })() @@ -53,11 +55,11 @@ async function build(target) { [ '-c', '--environment', - `NODE_ENV:production,` + + `NODE_ENV:${devOnly ? 'development' : 'production'},` + `TARGET:${target}` + (formats ? `,FORMATS:${formats}` : ``) + (args.types ? `,TYPES:true` : ``) + - (args.p ? `,PROD_ONLY:true` : ``) + (prodOnly ? `,PROD_ONLY:true` : ``) ], { stdio: 'inherit' } ) diff --git a/scripts/utils.js b/scripts/utils.js index 9816d795..d703474c 100644 --- a/scripts/utils.js +++ b/scripts/utils.js @@ -11,16 +11,18 @@ const targets = (exports.targets = fs.readdirSync('packages').filter(f => { return true })) -exports.fuzzyMatchTarget = (partialTarget, includeAllMatching) => { +exports.fuzzyMatchTarget = (partialTargets, includeAllMatching) => { const matched = [] - for (const target of targets) { - if (target.match(partialTarget)) { - matched.push(target) - if (!includeAllMatching) { - return matched + partialTargets.some(partialTarget => { + for (const target of targets) { + if (target.match(partialTarget)) { + matched.push(target) + if (!includeAllMatching) { + break + } } } - } + }) if (matched.length) { return matched } else {