UNPKG

17.2 kBSource Map (JSON)View Raw
1{"version":3,"file":"bundlib-cli.js","sources":["../src/api/tools/read-pkg.ts","../src/cli/events.ts","../src/cli/one-by-one.ts","../src/cli/build.ts","../src/cli/watch.ts","../src/cli/bundlib.ts","../src/cli/console.ts","../src/cli/action.ts","../src/cli/index.ts"],"sourcesContent":["import loadJsonFile from 'load-json-file';\r\nimport { join as pathJoin } from 'path';\r\n\r\nexport function readPkg<T>(cwd: string): Promise<T> {\r\n return loadJsonFile<T>(pathJoin(cwd, 'package.json'));\r\n}\r\n","export const END = 'end' as const;\r\nexport const BUILD_END = 'build-end' as const;\r\nexport const REBUILD = 'rebuild' as const;\r\nexport const WARN = 'warn' as const;\r\nexport const ERROR = 'error' as const;\r\n","type OneByOneNext = (error?: unknown) => void;\r\ntype OneByOneCallback<T> = (item: T, next: OneByOneNext) => unknown;\r\n\r\nexport function oneByOne<T>(arr: ArrayLike<T>, callback: OneByOneCallback<T>, done: OneByOneNext): void {\r\n\r\n let index = 0;\r\n const len = arr.length;\r\n\r\n const next: OneByOneNext = (error) => {\r\n\r\n if (error) {\r\n return done(error);\r\n }\r\n\r\n if (index >= len) {\r\n return done();\r\n }\r\n\r\n callback(\r\n arr[index],\r\n next,\r\n );\r\n\r\n index++;\r\n\r\n };\r\n\r\n next();\r\n\r\n}\r\n","import { statSync } from 'fs';\r\nimport { rollup } from 'rollup';\r\nimport type { RollupCache, RollupError } from 'rollup';\r\nimport type { BundlibRollupModuleOutputOptions, BundlibRollupOptions } from '../api/types/types';\r\nimport { BUILD_END, END, ERROR } from './events';\r\nimport { oneByOne } from './one-by-one';\r\nimport type { BundlibEventEmitter } from './types';\r\n\r\nexport function build(\r\n configs: Array<BundlibRollupOptions<BundlibRollupModuleOutputOptions>>,\r\n emitter: BundlibEventEmitter,\r\n): void {\r\n\r\n const cache: Partial<Record<string, RollupCache>> = {};\r\n\r\n oneByOne(\r\n configs,\r\n async (config, next) => {\r\n\r\n const { input, output } = config;\r\n const { file: outputFile, format } = output;\r\n\r\n const cacheKey = `${format}:${input}`;\r\n config.cache = cache[cacheKey];\r\n\r\n try {\r\n\r\n const currentTime = Date.now();\r\n\r\n const buildResult = await rollup(config);\r\n config.cache = cache[cacheKey] = buildResult.cache;\r\n await buildResult.write(output);\r\n\r\n const { size } = statSync(outputFile);\r\n const totalTime = Date.now() - currentTime;\r\n\r\n emitter.emit(BUILD_END, outputFile, size, totalTime);\r\n\r\n } catch (err) {\r\n next(err);\r\n throw err;\r\n }\r\n\r\n next();\r\n\r\n },\r\n (error) => {\r\n if (error) {\r\n emitter.emit(ERROR, error as RollupError);\r\n } else {\r\n emitter.emit(END);\r\n }\r\n },\r\n );\r\n\r\n}\r\n","import { statSync } from 'fs';\r\nimport { RollupOptions, RollupWatcherEvent, watch as rollupWatch } from 'rollup';\r\nimport { BUILD_END, END, ERROR, REBUILD } from './events';\r\nimport { BundlibEventEmitter } from './types';\r\n\r\nexport function watch(\r\n configs: RollupOptions[],\r\n emitter: BundlibEventEmitter,\r\n): void {\r\n\r\n let buildIndex = 0;\r\n\r\n const handlers: { [K in RollupWatcherEvent['code']]?: (event: Extract<RollupWatcherEvent, { code: K }>) => void } = {\r\n\r\n START() {\r\n if (buildIndex) {\r\n emitter.emit(REBUILD, buildIndex);\r\n }\r\n buildIndex++;\r\n },\r\n\r\n END() {\r\n emitter.emit(END);\r\n },\r\n\r\n BUNDLE_END(e) {\r\n const { length: len } = e.output;\r\n for (let i = 0; i < len; i++) {\r\n const stats = statSync(e.output[i]);\r\n emitter.emit(\r\n BUILD_END,\r\n e.output[i],\r\n stats.size,\r\n e.duration,\r\n );\r\n }\r\n },\r\n\r\n ERROR(e) {\r\n emitter.emit(\r\n ERROR,\r\n e.error,\r\n );\r\n },\r\n\r\n };\r\n\r\n rollupWatch(configs).on('event', (event) => {\r\n const handleEvent = handlers[event.code];\r\n if (handleEvent) {\r\n handleEvent(event as never);\r\n }\r\n });\r\n\r\n}\r\n","import { WarningHandlerWithDefault } from 'rollup';\r\nimport { BundlibPkgJson, configsFromPkg } from '../api';\r\nimport { build } from './build';\r\nimport { WARN } from './events';\r\nimport { BundlibEventEmitter } from './types';\r\nimport { watch as watchBuild } from './watch';\r\n\r\nexport async function bundlib(\r\n cwd: string,\r\n dev: boolean,\r\n watch: boolean,\r\n emitter: BundlibEventEmitter,\r\n pkg?: BundlibPkgJson,\r\n): Promise<void> {\r\n\r\n const onwarn: WarningHandlerWithDefault = (warning) => {\r\n emitter.emit(WARN, warning);\r\n };\r\n\r\n (watch ? watchBuild : build)(\r\n await configsFromPkg(cwd, { dev, watch, onwarn }, pkg),\r\n emitter,\r\n );\r\n\r\n}\r\n","import { red } from 'chalk';\r\nimport { RollupError } from 'rollup';\r\n\r\nfunction create(name: 'log' | 'error') {\r\n const method = console[name];\r\n return (msg: string) => method(msg);\r\n}\r\n\r\nexport const log = create('log');\r\nexport const error = create('error');\r\n\r\nexport function logError(err: Error | RollupError): void {\r\n if (err.stack) {\r\n error(err.stack);\r\n }\r\n const tag = red.bgWhite.inverse(' error ');\r\n // const tag = chalk.bold.bgWhite.red.inverse(' error ');\r\n error(`${tag} ${red(err.message || err)}`);\r\n}\r\n","import chalk from 'chalk';\r\nimport { EventEmitter } from 'events';\r\nimport { createFormatter } from 'gen-unit';\r\nimport { relative } from 'path';\r\nimport prettyMs from 'pretty-ms';\r\nimport { RollupError, RollupWarning } from 'rollup';\r\nimport slash from 'slash';\r\nimport { BundlibPkgJson } from '../api';\r\nimport { readPkg } from '../api/tools/read-pkg';\r\nimport { bundlib } from './bundlib';\r\nimport { log, logError } from './console';\r\nimport { BUILD_END, END, ERROR, REBUILD, WARN } from './events';\r\nimport { BundlibEventEmitter } from './types';\r\n\r\nconst { bold, inverse, cyan, yellow } = chalk;\r\nconst greenBold = bold.green;\r\nconst yellowBold = bold.yellow;\r\nconst magentaBold = bold.magenta;\r\n\r\nfunction prjInfo(name: string, ver: string) {\r\n const projName = greenBold(name);\r\n const projVer = yellowBold(`v${ver}`);\r\n return `${projName} ${projVer}`;\r\n}\r\n\r\n// ENABLE COLORS ON GIT BASH FOR WINDOWS\r\nif (!chalk.level && 'MINGW_CHOST' in process.env) {\r\n chalk.level = 1;\r\n}\r\n\r\nexport async function action(\r\n displayName: string,\r\n version: string,\r\n dev: boolean,\r\n watch: boolean,\r\n silent: boolean,\r\n): Promise<void> {\r\n\r\n const cwd = process.cwd();\r\n const pkg: BundlibPkgJson = await readPkg(cwd);\r\n\r\n if (!silent) {\r\n\r\n log(`${prjInfo(displayName, version)}\r\n`);\r\n\r\n // TODO: Show detected modules & plugins with versions\r\n\r\n const { name: prjName, displayName: prjDispName, version: prjVer } = pkg;\r\n const prjInfoName = prjDispName || prjName;\r\n\r\n if (prjInfoName && prjVer) {\r\n log(`${cyan('building:')} ${prjInfo(prjInfoName, prjVer)}\r\n`);\r\n }\r\n\r\n }\r\n\r\n const showError = watch ? logError : (err: RollupError) => {\r\n logError(err);\r\n process.exit(1);\r\n };\r\n\r\n const emitter: BundlibEventEmitter = new EventEmitter();\r\n emitter.on(ERROR, showError);\r\n\r\n if (!silent) {\r\n\r\n const formatFileSize = createFormatter({\r\n unit: 'B',\r\n round: 2,\r\n find: 1024,\r\n });\r\n\r\n emitter.on(BUILD_END, (filename: string, size: number, duration: number) => {\r\n const tag = inverse.green(' built ');\r\n const path = yellowBold(slash(relative(cwd, filename)));\r\n const coloredSize = magentaBold(formatFileSize(size));\r\n const coloredDuration = magentaBold(prettyMs(duration, { secondsDecimalDigits: 2 }));\r\n const info = cyan(`( ${coloredSize} in ${coloredDuration} )`);\r\n log(`${tag} ${path} ${info}`);\r\n });\r\n\r\n emitter.on(WARN, (warning: RollupWarning) => {\r\n\r\n const { plugin, message } = warning;\r\n\r\n const tag = inverse.yellow(' warning! ');\r\n const pluginInfo = cyan(`( plugin: ${greenBold(plugin || '<UNKNOWN>')} )`);\r\n\r\n log(`${tag} ${pluginInfo} ${yellow(message)}`);\r\n\r\n });\r\n\r\n if (watch) {\r\n\r\n emitter.on(REBUILD, () => {\r\n log(cyan(`rebuilding...\r\n`));\r\n });\r\n\r\n emitter.on(END, () => {\r\n log(cyan(`\r\nwaiting for changes...`));\r\n\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n try {\r\n await bundlib(\r\n cwd,\r\n dev,\r\n watch,\r\n emitter,\r\n pkg,\r\n );\r\n } catch (err) {\r\n showError(err);\r\n }\r\n\r\n}\r\n","#!/usr/bin/env node\r\n\r\nimport program from 'commander';\r\nimport { displayName, name, version } from '../../package.json';\r\nimport { action } from './action';\r\n\r\nvoid program\r\n .version(version, '-v, --version')\r\n .name(name)\r\n .option('-d, --dev', 'create development builds')\r\n .option('-w, --watch', 'run bundlib in watch mode')\r\n .option('-s, --silent', 'prevent messages from showing in the console')\r\n .action(async () => {\r\n const { dev, watch, silent } = program;\r\n await action(displayName, version, dev, watch, silent);\r\n })\r\n .parseAsync(process.argv);\r\n"],"names":["readPkg","cwd","loadJsonFile","pathJoin","END","BUILD_END","REBUILD","WARN","ERROR","oneByOne","arr","callback","done","index","len","length","next","error","build","configs","emitter","cache","config","input","output","file","outputFile","format","cacheKey","currentTime","Date","now","buildResult","rollup","write","size","statSync","totalTime","emit","err","watch","buildIndex","handlers","START","BUNDLE_END","e","i","stats","duration","rollupWatch","on","event","handleEvent","code","bundlib","dev","pkg","onwarn","warning","watchBuild","configsFromPkg","create","name","method","console","msg","log","logError","stack","tag","red","bgWhite","inverse","message","bold","cyan","yellow","chalk","greenBold","green","yellowBold","magentaBold","magenta","prjInfo","ver","projName","projVer","level","process","env","action","displayName","version","silent","prjName","prjDispName","prjVer","prjInfoName","showError","exit","EventEmitter","formatFileSize","createFormatter","unit","round","find","filename","path","slash","relative","coloredSize","coloredDuration","prettyMs","secondsDecimalDigits","info","plugin","pluginInfo","program","option","parseAsync","argv"],"mappings":"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"}
\No newline at end of file