UNPKG

13.9 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/cli/opts.js"],"names":["argv","exploded","arg","startsWith","file","slice","fileopts","split","explode","concat","console","error","message","process","exit","push","keys","Object","pkg","alwaysExclude","defaults","out","relative","name","pop","lib","directories","src","optimize","copy","debug","interactive","production","include","exclude","log","flags","defaultFlags","map","f","rawArgs","targetNode","targetBrowsers","cli","version","module","option","concatGlobs","setOptimization","Boolean","concatFlags","opts","parse","forEach","key","rawCommand","join","conclude","length","Number","rawFlags","flag","reduce","validFlags","value","some","valid","js","css","env","NODE_ENV","undefined","types","assign","Set","pipe","val","lines","pattern","line","setting","JSON","e","level","Math","max","list","prep","replace"],"mappings":"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","file":"opts.js","sourcesContent":["import { Command as CLI } from 'commander'\nimport { slurp } from '../util/file'\nimport readPkg from 'pkginfo'\n\nconst keys = Object.keys\n\nexport default async function parse(pkg, argv) {\n const alwaysExclude =\n [ `node_modules`\n , `package.json`\n , `.*`\n , `*-min.js`\n , `*-min.js.map`\n , `*-min.css`\n , `*-min.css.map`\n , `*-debug.log`\n , `optimised-modules.json`\n , `dependencies.json`\n ]\n\n const defaults =\n { out: pkg.relative(`${pkg.name.split('/').pop()}-min`)\n , lib: pkg.relative(pkg.directories.lib || 'lib')\n , src: pkg.relative(pkg.directories.src || 'src')\n , optimize: 0\n , copy: true\n , debug: true\n , interactive: false\n , production: false\n , include: ['js:**/*.js', 'css:**/*.css']\n , exclude: [...alwaysExclude]\n , log: 'normal'\n , flags: keys(defaultFlags).map(f => `${f}:${defaultFlags[f]}`)\n , rawArgs: []\n , targetNode: false\n , targetBrowsers: ['last 3 versions']\n }\n\n const cli = new CLI()\n .version(readPkg(module).version)\n .option('-i, --src <dir>', `the root directory from which all sources are relative [${defaults.src}]`, pkg.relative, defaults.src)\n .option('-o, --out <prefix>', `write optimized output to files with the specified prefix [${defaults.out}]`, pkg.relative, defaults.out)\n .option('-L, --lib <dir>', `write unoptimized files to the specified directory [${defaults.lib}]`, pkg.relative, defaults.lib)\n .option('-I, --include [js|css:]<path>', `include a path or glob (relative to source root) [${defaults.include}]`, concatGlobs, [])\n .option('-X, --exclude [js|css:]<path>', `exclude a path or glob (relative to source root) [${defaults.exclude}]`, concatGlobs, [])\n .option('-O, --optimize <level>', `optimization level (0 = none) [${defaults.optimize}]`, setOptimization, defaults.optimize)\n .option('--no-copy', `disable copying of non-code files to ${defaults.lib}`, Boolean, !defaults.copy)\n .option('--no-debug', 'disable source map generation', Boolean, !defaults.debug)\n .option('--log <normal|json>', `log output format [${defaults.log}]`, /^(json|normal)$/i, defaults.log)\n .option('--interactive', `watch for and recompile on changes (implies -O 0)`)\n .option('--production', `enable production options (implies -O 1)`)\n .option('--target-browsers <spec|false>', `define target browser environments: [${defaults.targetBrowsers}]`, concatFlags, [])\n .option('--target-node <current|number|false>', `define target node environment: [${defaults.targetNode}]`, defaults.targetNode)\n .option('--flags <flags>', `toggle flags [${defaults.flags}]`, concatFlags, [])\n .option('@<path>', 'read options from the file at <path> (relative to cwd)')\n\n const opts = cli.parse(await explode(argv))\n\n Object.keys(opts).forEach(key => {\n if (key in defaults === false) {\n delete opts[key]\n }\n })\n\n opts.rawCommand = opts.rawArgs.join(' ')\n\n opts.include = conclude(['js', 'css'], defaults.include, opts.include)\n opts.exclude = conclude(['js', 'css'], defaults.exclude, opts.exclude)\n\n if (opts.targetBrowsers.length === 0) {\n opts.targetBrowsers = defaults.targetBrowsers\n } else if (opts.targetBrowsers.length === 1 && opts.targetBrowsers[0] === 'false') {\n opts.targetBrowsers = false\n }\n\n if (opts.targetNode !== 'current') {\n opts.targetNode = (Number(opts.targetNode) || false)\n }\n\n const rawFlags = flag(defaults.flags, opts.flags)\n\n opts.flags = keys(rawFlags).reduce((flags, name) => {\n if (name in validFlags) {\n let value = rawFlags[name]\n\n if (validFlags[name].some(valid => value === valid)) {\n flags[name] = value\n } else if (defaultFlags[name]) {\n flags[name] = defaultFlags[name]\n }\n }\n\n return flags\n }, {})\n\n opts.include['copy-files'] = ['**/*']\n opts.exclude['copy-files'] = [...opts.include.js, ...opts.include.css, ...opts.exclude['*']]\n\n if (process.env.NODE_ENV === 'production' && !opts.interactive) {\n opts.production = true\n }\n\n opts.optimize\n = opts.production? 1\n : opts.interactive? 0\n : opts.optimize\n\n opts.interactive = opts.production? false : opts.interactive\n\n return opts\n}\n\nexport const validFlags =\n { 'react': [ undefined, true, false ]\n , 'modules': [ 'umd', 'amd', 'ecmascript', 'commonjs', 'systemjs' ]\n , 'es-stage': [ 0, 1, 2, 3 ]\n , 'add-module-exports': [ undefined, true, false ]\n }\n\nexport const defaultFlags = { 'modules': 'umd' }\n\nfunction conclude(types, defaults, opts) {\n return Object.assign\n ( [... new Set(defaults)].reduce(parse, {})\n , [... new Set(opts)].reduce(parse, {})\n )\n\n function parse(pipe, val) {\n let [lines, pattern] = val.split(':')\n\n if (pattern) {\n lines = [lines]\n } else {\n pattern = lines\n lines = ['*', ...types]\n }\n\n lines.forEach(line => {\n pipe[line] = (pipe[line] || []).concat(pattern)\n })\n\n return pipe\n }\n}\n\nfunction flag(defaults, opts) {\n return Object.assign\n ( [... new Set(defaults)].reduce(parse, {})\n , [... new Set(opts)].reduce(parse, {})\n )\n\n function parse(flags, val) {\n let [flag, setting] = val.split(':')\n\n if (setting) {\n try {\n flags[flag] = JSON.parse(setting)\n } catch (e) {\n flags[flag] = setting\n }\n } else {\n flags[flag] = true\n }\n\n return flags\n }\n}\n\nfunction setOptimization(level) {\n return Math.max(level | 0, 0)\n}\n\nfunction concatGlobs(val, list) {\n let prep = val.replace(/,([^,:]+:)/g, \"\\0$1\")\n return list.concat(prep.split('\\0'))\n}\n\nfunction concatFlags(val, list) {\n return list.concat(val.split(/\\s*,\\s*/))\n}\n\nasync function explode(argv) {\n let exploded = []\n\n for (let arg of argv) {\n if (arg.startsWith('@')) {\n let file = arg.slice(1)\n\n try {\n let fileopts = (await slurp(file, 'utf8')).split(/\\s/)\n exploded = exploded.concat(await explode(fileopts))\n } catch (e) {\n console.error(e.message)\n process.exit(1)\n }\n } else if (arg) {\n exploded.push(arg)\n }\n }\n\n return exploded\n}"]}
\No newline at end of file