ncc
约 1 分钟阅读
- vercel/nccGitHubvercel/nccvercel/ncc · Node.js 项目 -> 单文件 · 使用 webpack bundle · 使用 babel 转译 · 参考 · acornjs/acorn · 使用的 JS 解析器 · @vercel/nft · @vercel/webpack-asset-relocator-loader笔记:ncc
- Node.js 项目 -> 单文件
- 使用 webpack bundle
- 使用 babel 转译
- 参考
- acornjs/acornGitHubacornjs/acornacornjs/acorn · small, fast, JavaScript-based JavaScript parser · 只包含 stage4+ 特性 · stage3 通过插件提供 acorn-stage3 · rollup 内部使用 acorn笔记:acorn
- 使用的 JS 解析器
- @vercel/nftGitHubvercel/nft
- @vercel/webpack-asset-relocator-loaderGitHubvercel/webpack-asset-relocator-loader
- 静态依赖分析
- acornjs/acornGitHubacornjs/acornacornjs/acorn · small, fast, JavaScript-based JavaScript parser · 只包含 stage4+ 特性 · stage3 通过插件提供 acorn-stage3 · rollup 内部使用 acorn笔记:acorn
npx -y @vercel/ncc build src/server.ts -o dist/ncc --target es2020 -s
# 直接运行 - 可用于测试,生成到临时目录
npx -y @vercel/ncc run src/server.ts --target es2020 -s| flag | for |
|---|---|
| -t | transpile-only ts 只转译,忽略类型错误 |
| -m | minify |
| -s | source-map |
| -e | external |
| --v8-cache |
require is not defined
- 因为没有 bundle,导致 esm+cjs 会有问题
- 例如 fastify 是 cjs
# 如果 external 能避免
ncc build src/index.ts -m -s --target es2020 -e sqlite3 -e sqlite
# 否则只能 bundle
npx esbuild --bundle --outfile=dist/esm/server.js src/server.ts --platform=node --format=esm --charset=utf8 --target=chrome90 --sourcemap --external:{sqlite,pg,pg-hstore}
# rollup
npx rollup -e sqlite3,pg,pg-hstore --format es -m inline -o dist/es/server.js -i src/server.ts -p typescript -p node-resolve关联信息
反向链接、本文链接的其他页面和外部资料。
参考资料
GitHub4 条
- acornjs/acorngithub.com/acornjs/acorn
- vercel/nccgithub.com/vercel/ncc
- vercel/nftgithub.com/vercel/nft
- vercel/webpack-asset-relocator-loadergithub.com/vercel/webpack-asset-relocator-loader