Bundle FAQ
约 2 分钟阅读
标签:FAQ
// for tree-shaking
// 只需要在定义时
/* @__NO_SIDE_EFFECTS__ */
// 所有调用都需要标记
/* @__PURE__ */.js 文件后缀
- 有些场景需要 esm import 包含后缀,目前 esbuild 不好添加
- 可以考虑 rollup
- esbuild#2435GitHub Issueevanw/esbuild#2435
- SWC - 不支持
- Output mjs file extension swc#3067GitHub Issueswc-project/swc#3067
- swc#5346GitHub Issueswc-project/swc#5346
- TypeScript#35148GitHub PRmicrosoft/TypeScript#35148
- NextJS 库 import 必须要有 .js 后缀笔记NextJS FAQhttps://github.com/vercel/next.js/blob/canary/packages/next/src/lib/server-external-packages.json · react router 会导致页面整个刷新 #49479章节:库 import 必须要有 .js 后缀打开:/notes/web/framework/nextjs/faq
- GervinFung/ts-add-js-extensionGitHubGervinFung/ts-add-js-extension
- 添加 js 后缀
✘ [ERROR] Could not resolve "server/src/app/app.run"
dist/out/apps/ve-contract-server/main.js:8:31:
8 │ import { runApplication } from "server/src/app/app.run";
╵ ~~~~~~~~~~~~~~~~~~~~~~~~
The module "./dist/out/app/app.run" was not found on the file system:
node_modules/server/package.json:17:16:
17 │ "import": "./dist/out/*"
╵ ~~~~~~~~~~~~~~
Import from "server/src/app/app.run.js" to get the file
"node_modules/server/dist/out/app/app.run.js":
dist/out/apps/ve-contract-server/main.js:8:54:
8 │ import { runApplication } from "server/src/app/app.run";
│ ^
╵ .js
You can mark the path "server/src/app/app.run" as external to exclude it from the bundle, which
will remove this error.解决办法
- 可以通过 exports 添加 - 不支持自动 index.ts
{
"exports": {
"./src/*": {
"types": "./src/*",
"typescript": "./src/*",
"import": "./dist/out/*.js"
}
}
}- 通过直接 import 加后缀解决
import { GeneralResponseDto } from 'server/src/common/dto/index.ts';{
"compilerOptions": {
"allowImportingTsExtensions": true
}
}- sed
pnpm swc ./src -d ./lib
# for `'` & `"`
sed -E -i -r 's#(\bfrom\s+"\.[^"]+)";#\1.js";#g' ./lib/**/*.js
sed -E -i -r "s#(\bfrom\s+'\.[^']+)';#\1.js';#g" ./lib/**/*.js关联信息
反向链接、本文链接的其他页面和外部资料。
反向链接
- swc笔记 · js extension · js extension
swc-project/swc · Speedy Web Compiler · Rust-based platform for the Web · 开发者被 vercel 收编 · 早期定位是 compiler - bundling & minifition not ready
站内链接
- NextJS FAQ笔记 · 库 import 必须要有 .js 后缀 · js extension
https://github.com/vercel/next.js/blob/canary/packages/next/src/lib/server-external-packages.json · react router 会导致页面整个刷新 #49479
参考资料
GitHub5 条
- evanw/esbuild#2435github.com/evanw/esbuild/issues/2435
- GervinFung/ts-add-js-extensiongithub.com/GervinFung/ts-add-js-extension
- microsoft/TypeScript#35148github.com/microsoft/TypeScript/pull/35148
- swc-project/swc#3067github.com/swc-project/swc/issues/3067
- swc-project/swc#5346github.com/swc-project/swc/issues/5346