build-ts 5.3.1 → 5.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -5,8 +5,57 @@
5
5
 
6
6
  An opinionated tool for building a Node.js app and library written in TypeScript.
7
7
 
8
+ ## Features
9
+
10
+ - Builder / Bundler (`rollup` wrapper)
11
+ - [x] `build-ts app`
12
+ - [x] Bundle TypeScript code as Node.js application
13
+ - [x] `build-ts functions`
14
+ - [x] Bundle TypeScript code as GCP/Firebase Functions
15
+ - [x] Generate optimized `package.json` for Functions
16
+ - [x] `build-ts lib`
17
+ - [x] Bundle TypeScript code as Node.js / Pure JavaScript / React Library
18
+ - [x] Remove `console.log` automatically
19
+ - Executor (`ts-node` wrapper)
20
+ - [x] `build-ts run <TypeScript file>`
21
+ - [x] Run TypeScript code as Node.js script
22
+
8
23
  ## Node.js Application
9
24
 
25
+ `npx build-ts app [project path]`, e.g.,
26
+
27
+ ```sh
28
+ npx build-ts app test-fixtures/app-node
29
+ # or
30
+ cd test-fixtures/app-node && npx build-ts app
31
+ ```
32
+
10
33
  ## Firebase Functions
11
34
 
12
- ## Node.js Library
35
+ `npx build-ts functions [project path]`, e.g.,
36
+
37
+ ```sh
38
+ npx build-ts app test-fixtures/functions
39
+ # or
40
+ cd test-fixtures/functions && npx build-ts app
41
+ ```
42
+
43
+ ## Node.js / Browser Library
44
+
45
+ `npx build-ts lib [project path]`, e.g.,
46
+
47
+ ```sh
48
+ npx build-ts lib test-fixtures/lib
49
+ # or
50
+ cd test-fixtures/lib && npx build-ts lib
51
+ ```
52
+
53
+ ## React Library
54
+
55
+ `npx build-ts lib [project path]`, e.g.,
56
+
57
+ ```sh
58
+ npx build-ts lib test-fixtures/lib-react
59
+ # or
60
+ cd test-fixtures/lib-react && npx build-ts lib
61
+ ```
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import e from"yargs";import{hideBin as o}from"yargs/helpers";import n from"node:fs";import s from"node:path";import i from"chalk";import t from"date-time";import r from"pretty-ms";import{watch as a,rollup as c}from"rollup";import p from"signal-exit";import l from"node:url";import{babel as d}from"@rollup/plugin-babel";import m from"@rollup/plugin-commonjs";import u from"@rollup/plugin-json";import f from"@rollup/plugin-node-resolve";import g from"@rollup/plugin-replace";import b from"@rollup/plugin-terser";import h from"rollup-plugin-analyzer";import{externals as y}from"rollup-plugin-node-externals";import{string as j}from"rollup-plugin-string";import v from"rollup-plugin-ts";import w from"dotenv";import x from"node:process";import*as k from"node:child_process";const $=["app","functions","lib"];async function S(e){try{const o=await n.promises.readFile(s.join(e,"package.json"),"utf8");return JSON.parse(o)}catch{}}const T={input:{description:'A file path of main source code. Default value is "src/index.{ts,tsx}" from package directory.',type:"string",alias:"i"},"core-js":{description:"Whether or not core-js is employed.",type:"boolean",default:!1},minify:{description:"Whether or not minification is enabled.",type:"boolean",default:!0},sourcemap:{description:"Whether or not sourcemap is enabled.",type:"boolean",default:!0},external:{description:"Additional external dependencies.",type:"array"},verbose:{description:"Whether or not verbose mode is enabled.",type:"boolean",alias:"v"},env:{description:"Environment variables to be inlined.",type:"array",alias:"e"},dotenv:{description:".env files to be inlined.",type:"array"},watch:{description:"Whether watch mode is enabled or not",type:"boolean",alias:"w"},silent:{description:"Whether watch mode is enabled or not",type:"boolean",alias:"s"}},E={...T,moduleType:{description:"esm or cjs. Automatically detected by default.",type:"string",alias:"m"}};function _(e,o){const n={};for(const o of(e.env??[]).map((e=>e.toString())))void 0!==process.env[o]&&(n[`process.env.${o}`]=JSON.stringify(process.env[o]));for(const i of e.dotenv??[]){const e=w.config({path:s.join(o,i.toString())}).parsed||{};for(const[o,s]of Object.entries(e))void 0!==s&&(n[`process.env.${o}`]=JSON.stringify(s))}return n}function D(e,o,n,i,t){const r=[...e.external??[]].map((e=>e.toString()));n?.dependencies?.["@prisma/client"]&&r.push("prisma-client");const a=[".cjs",".mjs",".js",".jsx",".json",".cts",".mts",".ts",".tsx"],c=s.join(l.fileURLToPath(s.dirname(s.dirname(import.meta.url))),"babel.config.mjs"),p=[g({delimiters:["",""],preventAssignment:!0,values:_(e,t)}),u(),y({deps:!0,devDeps:!1,peerDeps:!0,optDeps:!0,include:r,exclude:i&&new RegExp(`${i}\\/.+`)}),f({extensions:a}),m()];return"app-node"===o||"functions"===o?p.push(d({configFile:c,extensions:a,babelHelpers:"bundled",exclude:"node_modules/**"})):p.push(v({transpiler:"babel",babelConfig:c})),p.push(j({include:["**/*.csv","**/*.txt"]})),e.minify&&p.push(b()),p.push(h({summaryOnly:!0})),p}const A={command:"app [package]",describe:"Build an app",builder:E,handler:async e=>R(e,"app",e.package,e.moduleType)},O={command:"functions [package]",describe:"Build a GCP/Firebase functions app",builder:{...E,onlyPackageJson:{description:"Whether to generate only package.json.",type:"boolean"}},async handler(e){if(!e.onlyPackageJson)return R(e,"functions",e.package,e.moduleType);{const o=s.resolve(e.package?.toString()??"."),n=await S(o);n||(console.error("Failed to parse package.json."),process.exit(1)),await B(o,n)}}},N={command:"lib [package]",describe:"Build a Node.js / React library",builder:T,handler:async e=>R(e,"lib",e.package)};async function R(e,o,l,d){const m=!e.silent&&e.verbose,u=process.cwd(),f=s.resolve(l?.toString()??"."),g=await S(f);g||(console.error("Failed to parse package.json."),process.exit(1));const b=function(e,o,i){if(e.input)return s.join(o,e.input);let t=s.join(i,s.join("src","index.ts"));if(n.existsSync(t))return t;if(t=s.join(i,s.join("src","index.tsx")),n.existsSync(t))return t;console.error("Failed to detect input file."),process.exit(1)}(e,u,f),h=function(e,o){switch(e){case"app":return"app-node";case"functions":return"functions";case"lib":return o.endsWith(".tsx")?"lib-react":"lib";default:console.error("target option must be one of: "+$.join(", ")),process.exit(1)}}(o,b);m&&console.info("Target (Category):",`${h} (${o})`);const[y]=function(e){const o=e.name?.toString()||"",n=/@([^/]+)\/(.+)/.exec(o),[,s,i]=n||[];return[s,i]}(g),j="esm"===d||"module"===g.type;let v;e["core-js"]&&(process.env.BUILD_TS_COREJS="1"),m&&(process.env.BUILD_TS_VERBOSE="1"),process.env.BUILD_TS_TARGET_CATEGORY=o,process.env.BUILD_TS_TARGET_DETAIL=h,"app-node"===h||"functions"===h?(g.main=j?"index.mjs":"index.cjs",v=[{file:s.join(f,"dist",g.main),format:j?"module":"commonjs",sourcemap:e.sourcemap}]):v=[{file:s.join(f,"dist","cjs","index.cjs"),format:"commonjs",sourcemap:e.sourcemap},{dir:s.join(f,"dist","esm"),entryFileNames:"[name].mjs",format:"module",preserveModules:!0,sourcemap:e.sourcemap}],m&&console.info("OutputOptions:",v),0===v.length&&(console.error("Failed to detect output files."),process.exit(1)),process.chdir(f),await n.promises.rm(s.join(f,"dist"),{recursive:!0,force:!0}),"functions"===h&&await B(f,g);const w={input:b,plugins:D(e,h,g,y,u),watch:e.watch?{clearScreen:!1}:void 0},k=e=>(Array.isArray(e)?e:[e]).map((e=>s.relative(f,e)));if(e.watch){const o=a({...w,output:v}),n=async e=>{process.removeListener("uncaughtException",n),process.stdin.removeListener("end",n),o&&await o.close(),e&&process.exit(e)};p(n),process.on("uncaughtException",n),process.stdin.isTTY||(process.stdin.on("end",n),process.stdin.resume()),o.on("event",(o=>{switch(o.code){case"ERROR":!function(e,o=!1){const n=e.name||e.cause?.name,s=n?`${n}: `:"",t=`${e.plugin?`(plugin ${e.plugin}) `:""}${s}${e.message}`,r=[i.bold(i.red(`[!] ${i.bold(t.toString())}`))];e.url&&r.push(i.cyan(e.url)),e.loc?r.push(`${e.loc.file||e.id} (${e.loc.line}:${e.loc.column})`):e.id&&r.push(e.id),e.frame&&r.push(i.dim(e.frame)),e.stack&&r.push(i.dim(e.stack?.replace(`${s}${e.message}\n`,""))),r.push("",""),console.error(r.join("\n")),o||x.exit(1)}(o.error,!0);break;case"BUNDLE_START":{if(e.silent)break;const n=o.input,s=[];"string"==typeof n?s.push(n):s.push(...Array.isArray(n)?n:Object.values(n)),console.info(i.cyan(`Bundles ${i.bold(k(s).join(", "))} → ${i.bold(k(o.output).join(", "))}\non ${f} ...`));break}case"BUNDLE_END":if(e.silent)break;console.info(i.green(`Created ${i.bold(k(o.output).join(", "))} in ${i.bold(r(o.duration))}`));break;case"END":if(e.silent)break;console.info(`\n[${t()}] waiting for changes...`)}"result"in o&&o.result&&o.result.close()}))}else{let o;e.silent||console.info(i.cyan(`Bundles ${i.bold(k(b).join(", "))} → ${i.bold(k(v.map((e=>e.file||e.dir||""))).join(", "))}\non ${f} ...`));let n=!1;try{const n=Date.now(),s=await c(w);o=s,await Promise.all(v.map((e=>s.write(e)))),e.silent||console.info(i.green(`Created ${k(v.map((e=>e.file||e.dir||""))).join(", ")} in ${i.bold(r(Date.now()-n))}`))}catch(e){n=!0,console.error("Failed to build due to:",e)}await(o?.close()),n&&process.exit(1)}}async function B(e,o){o.name+="-dist",delete o.devDependencies,await n.promises.mkdir(s.join(e,"dist"),{recursive:!0}),await n.promises.writeFile(s.join(e,"dist","package.json"),JSON.stringify(o))}const L={command:"run <file>",describe:"Run script",builder:{module:{description:"A module type: cjs or esm",type:"string",alias:"m"},watch:{description:"Whether watch mode is enabled or not",type:"boolean",alias:"w"}},async handler(e){const o=e.file?.toString()||"",n=await async function(e,o){if("cjs"===o||e.endsWith(".cts"))return"cjs";if("esm"===o||e.endsWith(".mts"))return"esm";let n=s.dirname(e);for(;;){const e=await S(n);if(e){if("module"===e.type)return"esm";break}const o=s.dirname(n);if(!o||o===n)break;n=o}return"cjs"}(o,e.module),i=["--no-warnings"];e.watch&&i.push("--watch"),"cjs"===n?i.push("--require","ts-node/register"):i.push("--loader","ts-node/esm"),i.push(o);const[,...t]=e._;k.spawnSync("node",[...i,...t.map((e=>e.toString()))],{shell:!0,stdio:"inherit",env:{...process.env,TS_NODE_TRANSPILE_ONLY:"1"}})}};await e(o(process.argv)).scriptName("build-ts").command(A).command(O).command(N).command(L).demandCommand().strict().help().argv;
1
+ import e from"yargs";import{hideBin as o}from"yargs/helpers";import n from"node:fs";import s from"node:path";import i from"chalk";import t from"date-time";import r from"pretty-ms";import{watch as a,rollup as c}from"rollup";import p from"signal-exit";import l from"node:url";import{babel as d}from"@rollup/plugin-babel";import m from"@rollup/plugin-commonjs";import u from"@rollup/plugin-json";import f from"@rollup/plugin-node-resolve";import g from"@rollup/plugin-replace";import b from"@rollup/plugin-terser";import h from"rollup-plugin-analyzer";import{externals as y}from"rollup-plugin-node-externals";import{string as j}from"rollup-plugin-string";import v from"rollup-plugin-ts";import w from"dotenv";import x from"node:process";import*as k from"node:child_process";const $=["app","functions","lib"];async function S(e){try{const o=await n.promises.readFile(s.join(e,"package.json"),"utf8");return JSON.parse(o)}catch{}}const T={input:{description:'A file path of main source code. Default value is "src/index.{ts,tsx}" from package directory.',type:"string",alias:"i"},"core-js":{description:"Whether or not core-js is employed.",type:"boolean",default:!1},minify:{description:"Whether or not minification is enabled.",type:"boolean",default:!0},sourcemap:{description:"Whether or not sourcemap is enabled.",type:"boolean",default:!0},external:{description:"Additional external dependencies.",type:"array"},verbose:{description:"Whether or not verbose mode is enabled.",type:"boolean",alias:"v"},env:{description:"Environment variables to be inlined.",type:"array",alias:"e"},dotenv:{description:".env files to be inlined.",type:"array"},watch:{description:"Whether watch mode is enabled or not",type:"boolean",alias:"w"},silent:{description:"Whether watch mode is enabled or not",type:"boolean",alias:"s"}},E={...T,moduleType:{description:"esm or cjs. Automatically detected by default.",type:"string",alias:"m"}};function _(e,o){const n={};for(const o of(e.env??[]).map((e=>e.toString())))void 0!==process.env[o]&&(n[`process.env.${o}`]=JSON.stringify(process.env[o]));for(const i of e.dotenv??[]){const e=w.config({path:s.join(o,i.toString())}).parsed||{};for(const[o,s]of Object.entries(e))void 0!==s&&(n[`process.env.${o}`]=JSON.stringify(s))}return n}function D(e,o,n,i,t){const r=[...e.external??[]].map((e=>e.toString()));n?.dependencies?.["@prisma/client"]&&r.push("prisma-client");const a=[".cjs",".mjs",".js",".jsx",".json",".cts",".mts",".ts",".tsx"],c=s.join(l.fileURLToPath(s.dirname(s.dirname(import.meta.url))),"babel.config.mjs"),p=[g({delimiters:["",""],preventAssignment:!0,values:_(e,t)}),u(),y({deps:!0,devDeps:!1,peerDeps:!0,optDeps:!0,include:r,exclude:i&&new RegExp(`${i}\\/.+`)}),f({extensions:a}),m()];return"app-node"===o||"functions"===o?p.push(d({configFile:c,extensions:a,babelHelpers:"bundled",exclude:"node_modules/**"})):p.push(v({transpiler:"babel",babelConfig:c})),p.push(j({include:["**/*.csv","**/*.txt"]})),e.minify&&p.push(b()),p.push(h({summaryOnly:!0})),p}const A={command:"app [package]",describe:"Build an app",builder:E,handler:async e=>N(e,"app",e.package,e.moduleType)},O={command:"functions [package]",describe:"Build a GCP/Firebase functions app",builder:{...E,onlyPackageJson:{description:"Whether to generate only package.json.",type:"boolean"}},async handler(e){if(!e.onlyPackageJson)return N(e,"functions",e.package,e.moduleType);{const o=s.resolve(e.package?.toString()??"."),n=await S(o);n||(console.error("Failed to parse package.json."),process.exit(1)),await B(o,n)}}},R={command:"lib [package]",describe:"Build a Node.js / React library",builder:T,handler:async e=>N(e,"lib",e.package)};async function N(e,o,l,d){const m=!e.silent&&e.verbose,u=process.cwd(),f=s.resolve(l?.toString()??"."),g=await S(f);g||(console.error("Failed to parse package.json."),process.exit(1));const b=function(e,o,i){if(e.input)return s.join(o,e.input);let t=s.join(i,s.join("src","index.ts"));if(n.existsSync(t))return t;if(t=s.join(i,s.join("src","index.tsx")),n.existsSync(t))return t;console.error("Failed to detect input file."),process.exit(1)}(e,u,f),h=function(e,o){switch(e){case"app":return"app-node";case"functions":return"functions";case"lib":return o.endsWith(".tsx")?"lib-react":"lib";default:console.error("target option must be one of: "+$.join(", ")),process.exit(1)}}(o,b);m&&console.info("Target (Category):",`${h} (${o})`);const[y]=function(e){const o=e.name?.toString()||"",n=/@([^/]+)\/(.+)/.exec(o),[,s,i]=n||[];return[s,i]}(g),j="esm"===d||"module"===g.type;let v;e["core-js"]&&(process.env.BUILD_TS_COREJS="1"),m&&(process.env.BUILD_TS_VERBOSE="1"),process.env.BUILD_TS_TARGET_CATEGORY=o,process.env.BUILD_TS_TARGET_DETAIL=h,"app-node"===h||"functions"===h?(g.main=j?"index.mjs":"index.cjs",v=[{file:s.join(f,"dist",g.main),format:j?"module":"commonjs",sourcemap:e.sourcemap}]):v=[{dir:s.join(f,"dist","cjs"),format:"commonjs",preserveModules:!0,sourcemap:e.sourcemap},{dir:s.join(f,"dist","esm"),format:"module",preserveModules:!0,sourcemap:e.sourcemap}],m&&console.info("OutputOptions:",v),0===v.length&&(console.error("Failed to detect output files."),process.exit(1)),process.chdir(f),await n.promises.rm(s.join(f,"dist"),{recursive:!0,force:!0}),"functions"===h&&await B(f,g);const w={input:b,plugins:D(e,h,g,y,u),watch:e.watch?{clearScreen:!1}:void 0},k=e=>(Array.isArray(e)?e:[e]).map((e=>s.relative(f,e)));if(e.watch){const o=a({...w,output:v}),n=async e=>{process.removeListener("uncaughtException",n),process.stdin.removeListener("end",n),o&&await o.close(),e&&process.exit(e)};p(n),process.on("uncaughtException",n),process.stdin.isTTY||(process.stdin.on("end",n),process.stdin.resume()),o.on("event",(o=>{switch(o.code){case"ERROR":!function(e,o=!1){const n=e.name||e.cause?.name,s=n?`${n}: `:"",t=`${e.plugin?`(plugin ${e.plugin}) `:""}${s}${e.message}`,r=[i.bold(i.red(`[!] ${i.bold(t.toString())}`))];e.url&&r.push(i.cyan(e.url)),e.loc?r.push(`${e.loc.file||e.id} (${e.loc.line}:${e.loc.column})`):e.id&&r.push(e.id),e.frame&&r.push(i.dim(e.frame)),e.stack&&r.push(i.dim(e.stack?.replace(`${s}${e.message}\n`,""))),r.push("",""),console.error(r.join("\n")),o||x.exit(1)}(o.error,!0);break;case"BUNDLE_START":{if(e.silent)break;const n=o.input,s=[];"string"==typeof n?s.push(n):s.push(...Array.isArray(n)?n:Object.values(n)),console.info(i.cyan(`Bundles ${i.bold(k(s).join(", "))} → ${i.bold(k(o.output).join(", "))}\non ${f} ...`));break}case"BUNDLE_END":if(e.silent)break;console.info(i.green(`Created ${i.bold(k(o.output).join(", "))} in ${i.bold(r(o.duration))}`));break;case"END":if(e.silent)break;console.info(`\n[${t()}] waiting for changes...`)}"result"in o&&o.result&&o.result.close()}))}else{let o;e.silent||console.info(i.cyan(`Bundles ${i.bold(k(b).join(", "))} → ${i.bold(k(v.map((e=>e.file||e.dir||""))).join(", "))}\non ${f} ...`));let n=!1;try{const n=Date.now(),s=await c(w);o=s,await Promise.all(v.map((e=>s.write(e)))),e.silent||console.info(i.green(`Created ${k(v.map((e=>e.file||e.dir||""))).join(", ")} in ${i.bold(r(Date.now()-n))}`))}catch(e){n=!0,console.error("Failed to build due to:",e)}await(o?.close()),n&&process.exit(1)}}async function B(e,o){o.name+="-dist",delete o.devDependencies,await n.promises.mkdir(s.join(e,"dist"),{recursive:!0}),await n.promises.writeFile(s.join(e,"dist","package.json"),JSON.stringify(o))}const L={command:"run <file>",describe:"Run script",builder:{module:{description:"A module type: cjs or esm",type:"string",alias:"m"},watch:{description:"Whether watch mode is enabled or not",type:"boolean",alias:"w"}},async handler(e){const o=e.file?.toString()||"",n=await async function(e,o){if("cjs"===o||e.endsWith(".cts"))return"cjs";if("esm"===o||e.endsWith(".mts"))return"esm";let n=s.dirname(e);for(;;){const e=await S(n);if(e){if("module"===e.type)return"esm";break}const o=s.dirname(n);if(!o||o===n)break;n=o}return"cjs"}(o,e.module),i=["--no-warnings"];e.watch&&i.push("--watch"),"cjs"===n?i.push("--require","ts-node/register"):i.push("--loader","ts-node/esm"),i.push(o);const[,...t]=e._,r=k.spawnSync("node",[...i,...t.map((e=>e.toString()))],{shell:!0,stdio:"inherit",env:{...process.env,TS_NODE_TRANSPILE_ONLY:"1"}});process.exit(r.status??1)}};await e(o(process.argv)).scriptName("build-ts").command(A).command(O).command(R).command(L).demandCommand().strict().help().argv;
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/types.ts","../src/utils.ts","../src/commands/build/builder.ts","../src/commands/build/env.ts","../src/commands/build/plugin.ts","../src/commands/build/build.ts","../src/commands/build/rollupLogger.ts","../src/commands/run.ts","../src/index.ts"],"sourcesContent":["import type { ArgumentsCamelCase, InferredOptionTypes, Options } from 'yargs';\n\nexport const allTargetCategories = ['app', 'functions', 'lib'] as const;\n\nexport type TargetCategory = (typeof allTargetCategories)[number];\n\nexport const allTargetDetails = ['app-node', 'functions', 'lib', 'lib-react'] as const;\n\nexport type TargetDetail = (typeof allTargetDetails)[number];\n\nexport type ArgumentsType<T extends { [key: string]: Options }> = ArgumentsCamelCase<InferredOptionTypes<T>>;\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport url from 'node:url';\n\nimport { PackageJson } from 'type-fest';\n\nexport async function readPackageJson(dirPath: string): Promise<PackageJson | undefined> {\n try {\n const packageJsonText = await fs.promises.readFile(path.join(dirPath, 'package.json'), 'utf8');\n return JSON.parse(packageJsonText) as PackageJson;\n } catch {\n // do nothing\n }\n}\n\nexport function getBuildTsRootPath(): string {\n return url.fileURLToPath(path.dirname(path.dirname(import.meta.url)));\n}\n\nexport function getNamespaceAndName(packageJson: PackageJson): [string | undefined, string | undefined] {\n const packageName = packageJson.name?.toString() || '';\n const match = /@([^/]+)\\/(.+)/.exec(packageName);\n const [, namespace, name] = match || [];\n return [namespace, name];\n}\n","export const builder = {\n input: {\n description: 'A file path of main source code. Default value is \"src/index.{ts,tsx}\" from package directory.',\n type: 'string',\n alias: 'i',\n },\n 'core-js': {\n description: 'Whether or not core-js is employed.',\n type: 'boolean',\n default: false,\n },\n minify: {\n description: 'Whether or not minification is enabled.',\n type: 'boolean',\n default: true,\n },\n sourcemap: {\n description: 'Whether or not sourcemap is enabled.',\n type: 'boolean',\n default: true,\n },\n external: {\n description: 'Additional external dependencies.',\n type: 'array',\n },\n verbose: {\n description: 'Whether or not verbose mode is enabled.',\n type: 'boolean',\n alias: 'v',\n },\n env: {\n description: 'Environment variables to be inlined.',\n type: 'array',\n alias: 'e',\n },\n dotenv: {\n description: '.env files to be inlined.',\n type: 'array',\n },\n watch: {\n description: 'Whether watch mode is enabled or not',\n type: 'boolean',\n alias: 'w',\n },\n silent: {\n description: 'Whether watch mode is enabled or not',\n type: 'boolean',\n alias: 's',\n },\n} as const;\n\nexport const appBuilder = {\n ...builder,\n moduleType: {\n description: 'esm or cjs. Automatically detected by default.',\n type: 'string',\n alias: 'm',\n },\n} as const;\n\nexport const functionsBuilder = {\n ...appBuilder,\n onlyPackageJson: {\n description: 'Whether to generate only package.json.',\n type: 'boolean',\n },\n} as const;\n","import path from 'node:path';\n\nimport dotenv from 'dotenv';\n\nimport { ArgumentsType } from '../../types.js';\n\nimport type { builder } from './builder.js';\n\nexport function loadEnvironmentVariables(argv: ArgumentsType<typeof builder>, cwd: string): Record<string, string> {\n const envVars: Record<string, string> = {};\n for (const name of (argv.env ?? []).map((e) => e.toString())) {\n if (process.env[name] === undefined) continue;\n\n envVars[`process.env.${name}`] = JSON.stringify(process.env[name]);\n }\n for (const dotenvPath of argv.dotenv ?? []) {\n const parsed = dotenv.config({ path: path.join(cwd, dotenvPath.toString()) }).parsed || {};\n for (const [key, value] of Object.entries(parsed)) {\n if (value === undefined) continue;\n\n envVars[`process.env.${key}`] = JSON.stringify(value);\n }\n }\n return envVars;\n}\n","import path from 'node:path';\n\nimport { babel } from '@rollup/plugin-babel';\nimport commonjs from '@rollup/plugin-commonjs';\nimport json from '@rollup/plugin-json';\nimport resolve from '@rollup/plugin-node-resolve';\nimport replace from '@rollup/plugin-replace';\nimport terser from '@rollup/plugin-terser';\nimport { Plugin } from 'rollup';\nimport analyze from 'rollup-plugin-analyzer';\nimport { externals } from 'rollup-plugin-node-externals';\nimport { string } from 'rollup-plugin-string';\nimport ts from 'rollup-plugin-ts';\nimport type { PackageJson } from 'type-fest';\n\nimport { ArgumentsType, TargetDetail } from '../../types.js';\nimport { getBuildTsRootPath } from '../../utils.js';\n\nimport type { builder } from './builder.js';\nimport { loadEnvironmentVariables } from './env.js';\n\nexport function createPlugins(\n argv: ArgumentsType<typeof builder>,\n targetDetail: TargetDetail,\n packageJson: PackageJson,\n namespace: string | undefined,\n cwd: string\n): Plugin[] {\n const externalDeps = [...(argv.external ?? [])].map((item) => item.toString());\n if (packageJson?.dependencies?.['@prisma/client']) {\n externalDeps.push('prisma-client');\n }\n const extensions = ['.cjs', '.mjs', '.js', '.jsx', '.json', '.cts', '.mts', '.ts', '.tsx'];\n const babelConfigPath = path.join(getBuildTsRootPath(), 'babel.config.mjs');\n const plugins: Plugin[] = [\n replace({\n delimiters: ['', ''],\n preventAssignment: true,\n values: loadEnvironmentVariables(argv, cwd),\n }),\n json(),\n externals({\n deps: true,\n devDeps: false,\n peerDeps: true,\n optDeps: true,\n include: externalDeps,\n exclude: namespace && new RegExp(`${namespace}\\\\/.+`),\n }),\n resolve({ extensions }),\n commonjs(),\n ];\n if (targetDetail === 'app-node' || targetDetail === 'functions') {\n plugins.push(\n babel({\n configFile: babelConfigPath,\n extensions,\n babelHelpers: 'bundled',\n exclude: 'node_modules/**',\n })\n );\n } else {\n plugins.push(\n ts({\n transpiler: 'babel',\n babelConfig: babelConfigPath,\n })\n );\n }\n plugins.push(string({ include: ['**/*.csv', '**/*.txt'] }));\n if (argv.minify) {\n plugins.push(terser());\n }\n plugins.push(analyze({ summaryOnly: true }));\n return plugins;\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport chalk from 'chalk';\nimport dateTime from 'date-time';\nimport ms from 'pretty-ms';\nimport { OutputOptions, rollup, RollupBuild, RollupOptions, watch } from 'rollup';\nimport onExit from 'signal-exit';\nimport { PackageJson } from 'type-fest';\nimport type { CommandModule } from 'yargs';\n\nimport { allTargetCategories, ArgumentsType, TargetCategory, TargetDetail } from '../../types.js';\nimport { getNamespaceAndName, readPackageJson } from '../../utils.js';\n\nimport { appBuilder, builder, functionsBuilder } from './builder.js';\nimport { createPlugins } from './plugin.js';\nimport { handleError } from './rollupLogger.js';\n\nexport const app: CommandModule<unknown, ArgumentsType<typeof appBuilder>> = {\n command: 'app [package]',\n describe: 'Build an app',\n builder: appBuilder,\n async handler(argv) {\n return build(argv, 'app', argv.package, argv.moduleType);\n },\n};\n\nexport const functions: CommandModule<unknown, ArgumentsType<typeof functionsBuilder>> = {\n command: 'functions [package]',\n describe: 'Build a GCP/Firebase functions app',\n builder: functionsBuilder,\n async handler(argv) {\n if (argv.onlyPackageJson) {\n const packageDirPath = path.resolve(argv.package?.toString() ?? '.');\n const packageJson = await readPackageJson(packageDirPath);\n if (!packageJson) {\n console.error('Failed to parse package.json.');\n process.exit(1);\n }\n await generatePackageJsonForFunctions(packageDirPath, packageJson);\n } else {\n return build(argv, 'functions', argv.package, argv.moduleType);\n }\n },\n};\n\nexport const lib: CommandModule<unknown, ArgumentsType<typeof builder>> = {\n command: 'lib [package]',\n describe: 'Build a Node.js / React library',\n builder,\n async handler(argv) {\n return build(argv, 'lib', argv.package);\n },\n};\n\nexport async function build(\n argv: ArgumentsType<typeof builder>,\n targetCategory: TargetCategory,\n relativePackageDirPath?: unknown,\n moduleType?: string\n): Promise<void> {\n // `silent` is stronger than `verbose`.\n const verbose = !argv.silent && argv.verbose;\n const cwd = process.cwd();\n\n const packageDirPath = path.resolve(relativePackageDirPath?.toString() ?? '.');\n const packageJson = await readPackageJson(packageDirPath);\n if (!packageJson) {\n console.error('Failed to parse package.json.');\n process.exit(1);\n }\n\n const input = verifyInput(argv, cwd, packageDirPath);\n const targetDetail = detectTargetDetail(targetCategory, input);\n\n if (verbose) {\n console.info('Target (Category):', `${targetDetail} (${targetCategory})`);\n }\n\n const [namespace] = getNamespaceAndName(packageJson);\n const isEsm = moduleType === 'esm' || packageJson.type === 'module';\n\n if (argv['core-js']) {\n process.env.BUILD_TS_COREJS = '1';\n }\n if (verbose) {\n process.env.BUILD_TS_VERBOSE = '1';\n }\n process.env.BUILD_TS_TARGET_CATEGORY = targetCategory;\n process.env.BUILD_TS_TARGET_DETAIL = targetDetail;\n\n let outputOptionsList: OutputOptions[];\n if (targetDetail === 'app-node' || targetDetail === 'functions') {\n packageJson.main = isEsm ? 'index.mjs' : 'index.cjs';\n outputOptionsList = [\n {\n file: path.join(packageDirPath, 'dist', packageJson.main),\n format: isEsm ? 'module' : 'commonjs',\n sourcemap: argv.sourcemap,\n },\n ];\n } else {\n outputOptionsList = [\n {\n file: path.join(packageDirPath, 'dist', 'cjs', 'index.cjs'),\n format: 'commonjs',\n sourcemap: argv.sourcemap,\n },\n {\n dir: path.join(packageDirPath, 'dist', 'esm'),\n entryFileNames: '[name].mjs',\n format: 'module',\n preserveModules: true,\n sourcemap: argv.sourcemap,\n },\n ];\n }\n if (verbose) {\n console.info('OutputOptions:', outputOptionsList);\n }\n if (outputOptionsList.length === 0) {\n console.error('Failed to detect output files.');\n process.exit(1);\n }\n\n process.chdir(packageDirPath);\n await fs.promises.rm(path.join(packageDirPath, 'dist'), { recursive: true, force: true });\n if (targetDetail === 'functions') {\n await generatePackageJsonForFunctions(packageDirPath, packageJson);\n }\n\n const options: RollupOptions = {\n input,\n plugins: createPlugins(argv, targetDetail, packageJson, namespace, cwd),\n watch: argv.watch ? { clearScreen: false } : undefined,\n };\n\n const mapToRelatives = (paths: string | Readonly<string[]>): string[] =>\n (Array.isArray(paths) ? paths : [paths]).map((p) => path.relative(packageDirPath, p));\n if (argv.watch) {\n const watcher = watch({ ...options, output: outputOptionsList });\n\n const close = async (code: number | null): Promise<void> => {\n process.removeListener('uncaughtException', close);\n process.stdin.removeListener('end', close);\n if (watcher) await watcher.close();\n if (code) process.exit(code);\n };\n onExit(close);\n process.on('uncaughtException', close);\n if (!process.stdin.isTTY) {\n process.stdin.on('end', close);\n process.stdin.resume();\n }\n\n watcher.on('event', (event) => {\n switch (event.code) {\n case 'ERROR': {\n handleError(event.error, true);\n break;\n }\n case 'BUNDLE_START': {\n if (argv.silent) break;\n\n const eventInput = event.input;\n const inputFiles: string[] = [];\n if (typeof eventInput === 'string') {\n inputFiles.push(eventInput);\n } else {\n inputFiles.push(\n ...(Array.isArray(eventInput) ? eventInput : Object.values(eventInput as Record<string, string>))\n );\n }\n console.info(\n chalk.cyan(\n `Bundles ${chalk.bold(mapToRelatives(inputFiles).join(', '))} → ${chalk.bold(\n mapToRelatives(event.output).join(', ')\n )}\\non ${packageDirPath} ...`\n )\n );\n break;\n }\n case 'BUNDLE_END': {\n if (argv.silent) break;\n\n console.info(\n chalk.green(\n `Created ${chalk.bold(mapToRelatives(event.output).join(', '))} in ${chalk.bold(ms(event.duration))}`\n )\n );\n break;\n }\n case 'END': {\n if (argv.silent) break;\n\n console.info(`\\n[${dateTime()}] waiting for changes...`);\n break;\n }\n }\n\n if ('result' in event && event.result) {\n event.result.close();\n }\n });\n } else {\n if (!argv.silent) {\n console.info(\n chalk.cyan(\n `Bundles ${chalk.bold(mapToRelatives(input).join(', '))} → ${chalk.bold(\n mapToRelatives(outputOptionsList.map((opts) => opts.file || opts.dir || '')).join(', ')\n )}\\non ${packageDirPath} ...`\n )\n );\n }\n\n let bundle: RollupBuild | undefined;\n let buildFailed = false;\n try {\n const startTime = Date.now();\n const _bundle = await rollup(options);\n bundle = _bundle;\n await Promise.all(outputOptionsList.map((opts) => _bundle.write(opts)));\n\n if (!argv.silent) {\n console.info(\n chalk.green(\n `Created ${mapToRelatives(outputOptionsList.map((opts) => opts.file || opts.dir || '')).join(\n ', '\n )} in ${chalk.bold(ms(Date.now() - startTime))}`\n )\n );\n }\n } catch (error) {\n buildFailed = true;\n console.error('Failed to build due to:', error);\n }\n await bundle?.close();\n if (buildFailed) process.exit(1);\n }\n}\n\nfunction verifyInput(argv: ArgumentsType<typeof builder>, cwd: string, packageDirPath: string): string {\n if (argv.input) return path.join(cwd, argv.input);\n\n let input = path.join(packageDirPath, path.join('src', 'index.ts'));\n if (fs.existsSync(input)) return input;\n\n input = path.join(packageDirPath, path.join('src', 'index.tsx'));\n if (fs.existsSync(input)) return input;\n\n console.error('Failed to detect input file.');\n process.exit(1);\n}\n\nfunction detectTargetDetail(targetCategory: string, input: string): TargetDetail {\n switch (targetCategory) {\n case 'app': {\n return 'app-node';\n }\n case 'functions': {\n return 'functions';\n }\n case 'lib': {\n if (input.endsWith('.tsx')) {\n return 'lib-react';\n }\n return 'lib';\n }\n default: {\n console.error('target option must be one of: ' + allTargetCategories.join(', '));\n process.exit(1);\n }\n }\n}\n\nasync function generatePackageJsonForFunctions(packageDirPath: string, packageJson: PackageJson): Promise<void> {\n packageJson.name += '-dist';\n delete packageJson.devDependencies;\n await fs.promises.mkdir(path.join(packageDirPath, 'dist'), { recursive: true });\n await fs.promises.writeFile(path.join(packageDirPath, 'dist', 'package.json'), JSON.stringify(packageJson));\n}\n","import process from 'node:process';\n\nimport chalk from 'chalk';\nimport { RollupError } from 'rollup';\n\nexport function handleError(error: RollupError, recover = false): void {\n const name = error.name || (error.cause as Error)?.name;\n const nameSection = name ? `${name}: ` : '';\n const pluginSection = error.plugin ? `(plugin ${error.plugin}) ` : '';\n const message = `${pluginSection}${nameSection}${error.message}`;\n\n const outputLines = [chalk.bold(chalk.red(`[!] ${chalk.bold(message.toString())}`))];\n\n if (error.url) {\n outputLines.push(chalk.cyan(error.url));\n }\n\n if (error.loc) {\n outputLines.push(`${error.loc.file || error.id} (${error.loc.line}:${error.loc.column})`);\n } else if (error.id) {\n outputLines.push(error.id);\n }\n\n if (error.frame) {\n outputLines.push(chalk.dim(error.frame));\n }\n\n if (error.stack) {\n outputLines.push(chalk.dim(error.stack?.replace(`${nameSection}${error.message}\\n`, '')));\n }\n\n outputLines.push('', '');\n console.error(outputLines.join('\\n'));\n\n if (!recover) process.exit(1);\n}\n","import * as child_process from 'node:child_process';\nimport path from 'node:path';\n\nimport type { CommandModule, InferredOptionTypes } from 'yargs';\n\nimport { readPackageJson } from '../utils.js';\n\nconst builder = {\n module: {\n description: 'A module type: cjs or esm',\n type: 'string',\n alias: 'm',\n },\n watch: {\n description: 'Whether watch mode is enabled or not',\n type: 'boolean',\n alias: 'w',\n },\n} as const;\n\nexport const run: CommandModule<unknown, InferredOptionTypes<typeof builder>> = {\n command: 'run <file>',\n describe: 'Run script',\n builder,\n async handler(argv) {\n const file = argv.file?.toString() || '';\n const module = await detectModuleType(file, argv.module);\n\n const args = ['--no-warnings'];\n if (argv.watch) {\n args.push('--watch');\n }\n if (module === 'cjs') {\n args.push('--require', 'ts-node/register');\n } else {\n args.push('--loader', 'ts-node/esm');\n }\n args.push(file);\n const [, ...additionalArguments] = argv._;\n child_process.spawnSync('node', [...args, ...additionalArguments.map((arg) => arg.toString())], {\n shell: true,\n stdio: 'inherit',\n env: { ...process.env, TS_NODE_TRANSPILE_ONLY: '1' },\n });\n },\n};\n\nasync function detectModuleType(file: string, module?: string): Promise<'cjs' | 'esm'> {\n if (module === 'cjs' || file.endsWith('.cts')) {\n return 'cjs';\n }\n if (module === 'esm' || file.endsWith('.mts')) {\n return 'esm';\n }\n\n let dirPath = path.dirname(file);\n for (;;) {\n const packageJson = await readPackageJson(dirPath);\n if (packageJson) {\n if (packageJson.type === 'module') {\n return 'esm';\n }\n break;\n }\n\n const nextDirPath = path.dirname(dirPath);\n if (!nextDirPath || nextDirPath === dirPath) {\n break;\n }\n dirPath = nextDirPath;\n }\n return 'cjs';\n}\n","import yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\n\nimport { app, functions, lib } from './commands/build/build.js';\nimport { run } from './commands/run.js';\n\nawait yargs(hideBin(process.argv))\n .scriptName('build-ts')\n .command(app)\n .command(functions)\n .command(lib)\n .command(run)\n .demandCommand()\n .strict()\n .help().argv;\n"],"names":["allTargetCategories","async","readPackageJson","dirPath","packageJsonText","fs","promises","readFile","path","join","JSON","parse","builder","input","description","type","alias","default","minify","sourcemap","external","verbose","env","dotenv","watch","silent","appBuilder","moduleType","loadEnvironmentVariables","argv","cwd","envVars","name","map","e","toString","undefined","process","stringify","dotenvPath","parsed","config","key","value","Object","entries","createPlugins","targetDetail","packageJson","namespace","externalDeps","item","dependencies","push","extensions","babelConfigPath","url","fileURLToPath","dirname","import","meta","plugins","replace","delimiters","preventAssignment","values","json","externals","deps","devDeps","peerDeps","optDeps","include","exclude","RegExp","resolve","commonjs","babel","configFile","babelHelpers","ts","transpiler","babelConfig","string","terser","analyze","summaryOnly","app","command","describe","build","package","functions","onlyPackageJson","packageDirPath","console","error","exit","generatePackageJsonForFunctions","lib","targetCategory","relativePackageDirPath","existsSync","verifyInput","endsWith","detectTargetDetail","info","packageName","match","exec","getNamespaceAndName","isEsm","outputOptionsList","BUILD_TS_COREJS","BUILD_TS_VERBOSE","BUILD_TS_TARGET_CATEGORY","BUILD_TS_TARGET_DETAIL","main","file","format","dir","entryFileNames","preserveModules","length","chdir","rm","recursive","force","options","clearScreen","mapToRelatives","paths","Array","isArray","p","relative","watcher","output","close","removeListener","stdin","code","onExit","on","isTTY","resume","event","recover","cause","nameSection","message","plugin","outputLines","chalk","bold","red","cyan","loc","id","line","column","frame","dim","stack","handleError","eventInput","inputFiles","green","ms","duration","dateTime","result","bundle","opts","buildFailed","startTime","Date","now","_bundle","rollup","Promise","all","write","devDependencies","mkdir","writeFile","run","module","nextDirPath","detectModuleType","args","additionalArguments","_","child_process","spawnSync","arg","shell","stdio","TS_NODE_TRANSPILE_ONLY","yargs","hideBin","scriptName","demandCommand","strict","help"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/types.ts","../src/utils.ts","../src/commands/build/builder.ts","../src/commands/build/env.ts","../src/commands/build/plugin.ts","../src/commands/build/build.ts","../src/commands/build/rollupLogger.ts","../src/commands/run.ts","../src/index.ts"],"sourcesContent":["import type { ArgumentsCamelCase, InferredOptionTypes, Options } from 'yargs';\n\nexport const allTargetCategories = ['app', 'functions', 'lib'] as const;\n\nexport type TargetCategory = (typeof allTargetCategories)[number];\n\nexport const allTargetDetails = ['app-node', 'functions', 'lib', 'lib-react'] as const;\n\nexport type TargetDetail = (typeof allTargetDetails)[number];\n\nexport type ArgumentsType<T extends { [key: string]: Options }> = ArgumentsCamelCase<InferredOptionTypes<T>>;\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport url from 'node:url';\n\nimport { PackageJson } from 'type-fest';\n\nexport async function readPackageJson(dirPath: string): Promise<PackageJson | undefined> {\n try {\n const packageJsonText = await fs.promises.readFile(path.join(dirPath, 'package.json'), 'utf8');\n return JSON.parse(packageJsonText) as PackageJson;\n } catch {\n // do nothing\n }\n}\n\nexport function getBuildTsRootPath(): string {\n return url.fileURLToPath(path.dirname(path.dirname(import.meta.url)));\n}\n\nexport function getNamespaceAndName(packageJson: PackageJson): [string | undefined, string | undefined] {\n const packageName = packageJson.name?.toString() || '';\n const match = /@([^/]+)\\/(.+)/.exec(packageName);\n const [, namespace, name] = match || [];\n return [namespace, name];\n}\n","export const builder = {\n input: {\n description: 'A file path of main source code. Default value is \"src/index.{ts,tsx}\" from package directory.',\n type: 'string',\n alias: 'i',\n },\n 'core-js': {\n description: 'Whether or not core-js is employed.',\n type: 'boolean',\n default: false,\n },\n minify: {\n description: 'Whether or not minification is enabled.',\n type: 'boolean',\n default: true,\n },\n sourcemap: {\n description: 'Whether or not sourcemap is enabled.',\n type: 'boolean',\n default: true,\n },\n external: {\n description: 'Additional external dependencies.',\n type: 'array',\n },\n verbose: {\n description: 'Whether or not verbose mode is enabled.',\n type: 'boolean',\n alias: 'v',\n },\n env: {\n description: 'Environment variables to be inlined.',\n type: 'array',\n alias: 'e',\n },\n dotenv: {\n description: '.env files to be inlined.',\n type: 'array',\n },\n watch: {\n description: 'Whether watch mode is enabled or not',\n type: 'boolean',\n alias: 'w',\n },\n silent: {\n description: 'Whether watch mode is enabled or not',\n type: 'boolean',\n alias: 's',\n },\n} as const;\n\nexport const appBuilder = {\n ...builder,\n moduleType: {\n description: 'esm or cjs. Automatically detected by default.',\n type: 'string',\n alias: 'm',\n },\n} as const;\n\nexport const functionsBuilder = {\n ...appBuilder,\n onlyPackageJson: {\n description: 'Whether to generate only package.json.',\n type: 'boolean',\n },\n} as const;\n","import path from 'node:path';\n\nimport dotenv from 'dotenv';\n\nimport { ArgumentsType } from '../../types.js';\n\nimport type { builder } from './builder.js';\n\nexport function loadEnvironmentVariables(argv: ArgumentsType<typeof builder>, cwd: string): Record<string, string> {\n const envVars: Record<string, string> = {};\n for (const name of (argv.env ?? []).map((e) => e.toString())) {\n if (process.env[name] === undefined) continue;\n\n envVars[`process.env.${name}`] = JSON.stringify(process.env[name]);\n }\n for (const dotenvPath of argv.dotenv ?? []) {\n const parsed = dotenv.config({ path: path.join(cwd, dotenvPath.toString()) }).parsed || {};\n for (const [key, value] of Object.entries(parsed)) {\n if (value === undefined) continue;\n\n envVars[`process.env.${key}`] = JSON.stringify(value);\n }\n }\n return envVars;\n}\n","import path from 'node:path';\n\nimport { babel } from '@rollup/plugin-babel';\nimport commonjs from '@rollup/plugin-commonjs';\nimport json from '@rollup/plugin-json';\nimport resolve from '@rollup/plugin-node-resolve';\nimport replace from '@rollup/plugin-replace';\nimport terser from '@rollup/plugin-terser';\nimport { Plugin } from 'rollup';\nimport analyze from 'rollup-plugin-analyzer';\nimport { externals } from 'rollup-plugin-node-externals';\nimport { string } from 'rollup-plugin-string';\nimport ts from 'rollup-plugin-ts';\nimport type { PackageJson } from 'type-fest';\n\nimport { ArgumentsType, TargetDetail } from '../../types.js';\nimport { getBuildTsRootPath } from '../../utils.js';\n\nimport type { builder } from './builder.js';\nimport { loadEnvironmentVariables } from './env.js';\n\nexport function createPlugins(\n argv: ArgumentsType<typeof builder>,\n targetDetail: TargetDetail,\n packageJson: PackageJson,\n namespace: string | undefined,\n cwd: string\n): Plugin[] {\n const externalDeps = [...(argv.external ?? [])].map((item) => item.toString());\n if (packageJson?.dependencies?.['@prisma/client']) {\n externalDeps.push('prisma-client');\n }\n const extensions = ['.cjs', '.mjs', '.js', '.jsx', '.json', '.cts', '.mts', '.ts', '.tsx'];\n const babelConfigPath = path.join(getBuildTsRootPath(), 'babel.config.mjs');\n const plugins: Plugin[] = [\n replace({\n delimiters: ['', ''],\n preventAssignment: true,\n values: loadEnvironmentVariables(argv, cwd),\n }),\n json(),\n externals({\n deps: true,\n devDeps: false,\n peerDeps: true,\n optDeps: true,\n include: externalDeps,\n exclude: namespace && new RegExp(`${namespace}\\\\/.+`),\n }),\n resolve({ extensions }),\n commonjs(),\n ];\n if (targetDetail === 'app-node' || targetDetail === 'functions') {\n plugins.push(\n babel({\n configFile: babelConfigPath,\n extensions,\n babelHelpers: 'bundled',\n exclude: 'node_modules/**',\n })\n );\n } else {\n plugins.push(\n ts({\n transpiler: 'babel',\n babelConfig: babelConfigPath,\n })\n );\n }\n plugins.push(string({ include: ['**/*.csv', '**/*.txt'] }));\n if (argv.minify) {\n plugins.push(terser());\n }\n plugins.push(analyze({ summaryOnly: true }));\n return plugins;\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nimport chalk from 'chalk';\nimport dateTime from 'date-time';\nimport ms from 'pretty-ms';\nimport { OutputOptions, rollup, RollupBuild, RollupOptions, watch } from 'rollup';\nimport onExit from 'signal-exit';\nimport { PackageJson } from 'type-fest';\nimport type { CommandModule } from 'yargs';\n\nimport { allTargetCategories, ArgumentsType, TargetCategory, TargetDetail } from '../../types.js';\nimport { getNamespaceAndName, readPackageJson } from '../../utils.js';\n\nimport { appBuilder, builder, functionsBuilder } from './builder.js';\nimport { createPlugins } from './plugin.js';\nimport { handleError } from './rollupLogger.js';\n\nexport const app: CommandModule<unknown, ArgumentsType<typeof appBuilder>> = {\n command: 'app [package]',\n describe: 'Build an app',\n builder: appBuilder,\n async handler(argv) {\n return build(argv, 'app', argv.package, argv.moduleType);\n },\n};\n\nexport const functions: CommandModule<unknown, ArgumentsType<typeof functionsBuilder>> = {\n command: 'functions [package]',\n describe: 'Build a GCP/Firebase functions app',\n builder: functionsBuilder,\n async handler(argv) {\n if (argv.onlyPackageJson) {\n const packageDirPath = path.resolve(argv.package?.toString() ?? '.');\n const packageJson = await readPackageJson(packageDirPath);\n if (!packageJson) {\n console.error('Failed to parse package.json.');\n process.exit(1);\n }\n await generatePackageJsonForFunctions(packageDirPath, packageJson);\n } else {\n return build(argv, 'functions', argv.package, argv.moduleType);\n }\n },\n};\n\nexport const lib: CommandModule<unknown, ArgumentsType<typeof builder>> = {\n command: 'lib [package]',\n describe: 'Build a Node.js / React library',\n builder,\n async handler(argv) {\n return build(argv, 'lib', argv.package);\n },\n};\n\nexport async function build(\n argv: ArgumentsType<typeof builder>,\n targetCategory: TargetCategory,\n relativePackageDirPath?: unknown,\n moduleType?: string\n): Promise<void> {\n // `silent` is stronger than `verbose`.\n const verbose = !argv.silent && argv.verbose;\n const cwd = process.cwd();\n\n const packageDirPath = path.resolve(relativePackageDirPath?.toString() ?? '.');\n const packageJson = await readPackageJson(packageDirPath);\n if (!packageJson) {\n console.error('Failed to parse package.json.');\n process.exit(1);\n }\n\n const input = verifyInput(argv, cwd, packageDirPath);\n const targetDetail = detectTargetDetail(targetCategory, input);\n\n if (verbose) {\n console.info('Target (Category):', `${targetDetail} (${targetCategory})`);\n }\n\n const [namespace] = getNamespaceAndName(packageJson);\n const isEsm = moduleType === 'esm' || packageJson.type === 'module';\n\n if (argv['core-js']) {\n process.env.BUILD_TS_COREJS = '1';\n }\n if (verbose) {\n process.env.BUILD_TS_VERBOSE = '1';\n }\n process.env.BUILD_TS_TARGET_CATEGORY = targetCategory;\n process.env.BUILD_TS_TARGET_DETAIL = targetDetail;\n\n let outputOptionsList: OutputOptions[];\n if (targetDetail === 'app-node' || targetDetail === 'functions') {\n packageJson.main = isEsm ? 'index.mjs' : 'index.cjs';\n outputOptionsList = [\n {\n file: path.join(packageDirPath, 'dist', packageJson.main),\n format: isEsm ? 'module' : 'commonjs',\n sourcemap: argv.sourcemap,\n },\n ];\n } else {\n // The following import statement causes the following error:\n // Statement:\n // import { usePrevious } from 'react-use';\n // Error:\n // Named export 'usePrevious' not found. The requested module 'react-use' is a CommonJS module,\n // which may not support all module.exports as named exports.\n // Also, we still need split files for tree-shaking even though we import cjs module.\n outputOptionsList = [\n {\n dir: path.join(packageDirPath, 'dist', 'cjs'),\n format: 'commonjs',\n preserveModules: true,\n sourcemap: argv.sourcemap,\n },\n {\n dir: path.join(packageDirPath, 'dist', 'esm'),\n format: 'module',\n preserveModules: true,\n sourcemap: argv.sourcemap,\n },\n ];\n }\n if (verbose) {\n console.info('OutputOptions:', outputOptionsList);\n }\n if (outputOptionsList.length === 0) {\n console.error('Failed to detect output files.');\n process.exit(1);\n }\n\n process.chdir(packageDirPath);\n await fs.promises.rm(path.join(packageDirPath, 'dist'), { recursive: true, force: true });\n if (targetDetail === 'functions') {\n await generatePackageJsonForFunctions(packageDirPath, packageJson);\n }\n\n const options: RollupOptions = {\n input,\n plugins: createPlugins(argv, targetDetail, packageJson, namespace, cwd),\n watch: argv.watch ? { clearScreen: false } : undefined,\n };\n\n const mapToRelatives = (paths: string | Readonly<string[]>): string[] =>\n (Array.isArray(paths) ? paths : [paths]).map((p) => path.relative(packageDirPath, p));\n if (argv.watch) {\n const watcher = watch({ ...options, output: outputOptionsList });\n\n const close = async (code: number | null): Promise<void> => {\n process.removeListener('uncaughtException', close);\n process.stdin.removeListener('end', close);\n if (watcher) await watcher.close();\n if (code) process.exit(code);\n };\n onExit(close);\n process.on('uncaughtException', close);\n if (!process.stdin.isTTY) {\n process.stdin.on('end', close);\n process.stdin.resume();\n }\n\n watcher.on('event', (event) => {\n switch (event.code) {\n case 'ERROR': {\n handleError(event.error, true);\n break;\n }\n case 'BUNDLE_START': {\n if (argv.silent) break;\n\n const eventInput = event.input;\n const inputFiles: string[] = [];\n if (typeof eventInput === 'string') {\n inputFiles.push(eventInput);\n } else {\n inputFiles.push(\n ...(Array.isArray(eventInput) ? eventInput : Object.values(eventInput as Record<string, string>))\n );\n }\n console.info(\n chalk.cyan(\n `Bundles ${chalk.bold(mapToRelatives(inputFiles).join(', '))} → ${chalk.bold(\n mapToRelatives(event.output).join(', ')\n )}\\non ${packageDirPath} ...`\n )\n );\n break;\n }\n case 'BUNDLE_END': {\n if (argv.silent) break;\n\n console.info(\n chalk.green(\n `Created ${chalk.bold(mapToRelatives(event.output).join(', '))} in ${chalk.bold(ms(event.duration))}`\n )\n );\n break;\n }\n case 'END': {\n if (argv.silent) break;\n\n console.info(`\\n[${dateTime()}] waiting for changes...`);\n break;\n }\n }\n\n if ('result' in event && event.result) {\n event.result.close();\n }\n });\n } else {\n if (!argv.silent) {\n console.info(\n chalk.cyan(\n `Bundles ${chalk.bold(mapToRelatives(input).join(', '))} → ${chalk.bold(\n mapToRelatives(outputOptionsList.map((opts) => opts.file || opts.dir || '')).join(', ')\n )}\\non ${packageDirPath} ...`\n )\n );\n }\n\n let bundle: RollupBuild | undefined;\n let buildFailed = false;\n try {\n const startTime = Date.now();\n const _bundle = await rollup(options);\n bundle = _bundle;\n await Promise.all(outputOptionsList.map((opts) => _bundle.write(opts)));\n\n if (!argv.silent) {\n console.info(\n chalk.green(\n `Created ${mapToRelatives(outputOptionsList.map((opts) => opts.file || opts.dir || '')).join(\n ', '\n )} in ${chalk.bold(ms(Date.now() - startTime))}`\n )\n );\n }\n } catch (error) {\n buildFailed = true;\n console.error('Failed to build due to:', error);\n }\n await bundle?.close();\n if (buildFailed) process.exit(1);\n }\n}\n\nfunction verifyInput(argv: ArgumentsType<typeof builder>, cwd: string, packageDirPath: string): string {\n if (argv.input) return path.join(cwd, argv.input);\n\n let input = path.join(packageDirPath, path.join('src', 'index.ts'));\n if (fs.existsSync(input)) return input;\n\n input = path.join(packageDirPath, path.join('src', 'index.tsx'));\n if (fs.existsSync(input)) return input;\n\n console.error('Failed to detect input file.');\n process.exit(1);\n}\n\nfunction detectTargetDetail(targetCategory: string, input: string): TargetDetail {\n switch (targetCategory) {\n case 'app': {\n return 'app-node';\n }\n case 'functions': {\n return 'functions';\n }\n case 'lib': {\n if (input.endsWith('.tsx')) {\n return 'lib-react';\n }\n return 'lib';\n }\n default: {\n console.error('target option must be one of: ' + allTargetCategories.join(', '));\n process.exit(1);\n }\n }\n}\n\nasync function generatePackageJsonForFunctions(packageDirPath: string, packageJson: PackageJson): Promise<void> {\n packageJson.name += '-dist';\n delete packageJson.devDependencies;\n await fs.promises.mkdir(path.join(packageDirPath, 'dist'), { recursive: true });\n await fs.promises.writeFile(path.join(packageDirPath, 'dist', 'package.json'), JSON.stringify(packageJson));\n}\n","import process from 'node:process';\n\nimport chalk from 'chalk';\nimport { RollupError } from 'rollup';\n\nexport function handleError(error: RollupError, recover = false): void {\n const name = error.name || (error.cause as Error)?.name;\n const nameSection = name ? `${name}: ` : '';\n const pluginSection = error.plugin ? `(plugin ${error.plugin}) ` : '';\n const message = `${pluginSection}${nameSection}${error.message}`;\n\n const outputLines = [chalk.bold(chalk.red(`[!] ${chalk.bold(message.toString())}`))];\n\n if (error.url) {\n outputLines.push(chalk.cyan(error.url));\n }\n\n if (error.loc) {\n outputLines.push(`${error.loc.file || error.id} (${error.loc.line}:${error.loc.column})`);\n } else if (error.id) {\n outputLines.push(error.id);\n }\n\n if (error.frame) {\n outputLines.push(chalk.dim(error.frame));\n }\n\n if (error.stack) {\n outputLines.push(chalk.dim(error.stack?.replace(`${nameSection}${error.message}\\n`, '')));\n }\n\n outputLines.push('', '');\n console.error(outputLines.join('\\n'));\n\n if (!recover) process.exit(1);\n}\n","import * as child_process from 'node:child_process';\nimport path from 'node:path';\n\nimport type { CommandModule, InferredOptionTypes } from 'yargs';\n\nimport { readPackageJson } from '../utils.js';\n\nconst builder = {\n module: {\n description: 'A module type: cjs or esm',\n type: 'string',\n alias: 'm',\n },\n watch: {\n description: 'Whether watch mode is enabled or not',\n type: 'boolean',\n alias: 'w',\n },\n} as const;\n\nexport const run: CommandModule<unknown, InferredOptionTypes<typeof builder>> = {\n command: 'run <file>',\n describe: 'Run script',\n builder,\n async handler(argv) {\n const file = argv.file?.toString() || '';\n const module = await detectModuleType(file, argv.module);\n\n const args = ['--no-warnings'];\n if (argv.watch) {\n args.push('--watch');\n }\n if (module === 'cjs') {\n args.push('--require', 'ts-node/register');\n } else {\n args.push('--loader', 'ts-node/esm');\n }\n args.push(file);\n const [, ...additionalArguments] = argv._;\n const ret = child_process.spawnSync('node', [...args, ...additionalArguments.map((arg) => arg.toString())], {\n shell: true,\n stdio: 'inherit',\n env: { ...process.env, TS_NODE_TRANSPILE_ONLY: '1' },\n });\n process.exit(ret.status ?? 1);\n },\n};\n\nasync function detectModuleType(file: string, module?: string): Promise<'cjs' | 'esm'> {\n if (module === 'cjs' || file.endsWith('.cts')) {\n return 'cjs';\n }\n if (module === 'esm' || file.endsWith('.mts')) {\n return 'esm';\n }\n\n let dirPath = path.dirname(file);\n for (;;) {\n const packageJson = await readPackageJson(dirPath);\n if (packageJson) {\n if (packageJson.type === 'module') {\n return 'esm';\n }\n break;\n }\n\n const nextDirPath = path.dirname(dirPath);\n if (!nextDirPath || nextDirPath === dirPath) {\n break;\n }\n dirPath = nextDirPath;\n }\n return 'cjs';\n}\n","import yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\n\nimport { app, functions, lib } from './commands/build/build.js';\nimport { run } from './commands/run.js';\n\nawait yargs(hideBin(process.argv))\n .scriptName('build-ts')\n .command(app)\n .command(functions)\n .command(lib)\n .command(run)\n .demandCommand()\n .strict()\n .help().argv;\n"],"names":["allTargetCategories","async","readPackageJson","dirPath","packageJsonText","fs","promises","readFile","path","join","JSON","parse","builder","input","description","type","alias","default","minify","sourcemap","external","verbose","env","dotenv","watch","silent","appBuilder","moduleType","loadEnvironmentVariables","argv","cwd","envVars","name","map","e","toString","undefined","process","stringify","dotenvPath","parsed","config","key","value","Object","entries","createPlugins","targetDetail","packageJson","namespace","externalDeps","item","dependencies","push","extensions","babelConfigPath","url","fileURLToPath","dirname","import","meta","plugins","replace","delimiters","preventAssignment","values","json","externals","deps","devDeps","peerDeps","optDeps","include","exclude","RegExp","resolve","commonjs","babel","configFile","babelHelpers","ts","transpiler","babelConfig","string","terser","analyze","summaryOnly","app","command","describe","build","package","functions","onlyPackageJson","packageDirPath","console","error","exit","generatePackageJsonForFunctions","lib","targetCategory","relativePackageDirPath","existsSync","verifyInput","endsWith","detectTargetDetail","info","packageName","match","exec","getNamespaceAndName","isEsm","outputOptionsList","BUILD_TS_COREJS","BUILD_TS_VERBOSE","BUILD_TS_TARGET_CATEGORY","BUILD_TS_TARGET_DETAIL","main","file","format","dir","preserveModules","length","chdir","rm","recursive","force","options","clearScreen","mapToRelatives","paths","Array","isArray","p","relative","watcher","output","close","removeListener","stdin","code","onExit","on","isTTY","resume","event","recover","cause","nameSection","message","plugin","outputLines","chalk","bold","red","cyan","loc","id","line","column","frame","dim","stack","handleError","eventInput","inputFiles","green","ms","duration","dateTime","result","bundle","opts","buildFailed","startTime","Date","now","_bundle","rollup","Promise","all","write","devDependencies","mkdir","writeFile","run","module","nextDirPath","detectModuleType","args","additionalArguments","_","ret","child_process","spawnSync","arg","shell","stdio","TS_NODE_TRANSPILE_ONLY","status","yargs","hideBin","scriptName","demandCommand","strict","help"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "build-ts",
3
- "version": "5.3.1",
3
+ "version": "5.3.3",
4
4
  "repository": "github:WillBooster/build-ts",
5
5
  "license": "UNLICENSED",
6
6
  "author": "WillBooster Inc.",
@@ -67,8 +67,8 @@
67
67
  "@types/node": "18.11.18",
68
68
  "@types/signal-exit": "^3",
69
69
  "@types/yargs": "17.0.21",
70
- "@typescript-eslint/eslint-plugin": "5.49.0",
71
- "@typescript-eslint/parser": "5.49.0",
70
+ "@typescript-eslint/eslint-plugin": "5.50.0",
71
+ "@typescript-eslint/parser": "5.50.0",
72
72
  "@willbooster/babel-configs": "1.3.0",
73
73
  "@willbooster/eslint-config-ts": "10.0.8",
74
74
  "@willbooster/prettier-config": "9.1.1",
@@ -88,9 +88,9 @@
88
88
  "pinst": "3.0.0",
89
89
  "prettier": "2.8.3",
90
90
  "semantic-release": "20.1.0",
91
- "sort-package-json": "2.2.0",
91
+ "sort-package-json": "2.3.0",
92
92
  "type-fest": "3.5.3",
93
- "typescript": "4.9.4",
93
+ "typescript": "4.9.5",
94
94
  "vitest": "0.28.3"
95
95
  },
96
96
  "packageManager": "yarn@4.0.0-rc.37",