我正在进行代码重组,并正在重写一些 TypeScript 模块,这些模块可能会被多个微服务用作包。
不幸的是,似乎使用
baseUrl
启用的绝对导入不能很好地适应此包转换。例如,我曾经 import { Thing } from "Place/That/I/Know";
,其中 "Place/That/I/Know/"
实际上是 "src/Place/That/I/Know/"
现在,这会导致 Module not found error
。
我想使用 Rollup.js 将绝对导入
"Place/That/I/Know/"
转换为相对导入 "./Place/That/I/Know/"
。我找到了这个答案。但,似乎还没有定论。有什么建议吗?
使用 eslint 规则 path/no-absolute-imports
#!/usr/bin/env bash
NPM=npm
#NPM=pnpm
#NPM=yarn
$NPM init
$NPM install eslint https://github.com/qdanik/eslint-plugin-path
cat >.eslintrc.cjs <<'EOF'
module.exports =
{
"parserOptions": {
"sourceType": "module",
"ecmaVersion": "latest",
},
"plugins": ["path"],
"rules": {
"path/no-absolute-imports": "error"
},
}
EOF
cat >jsconfig.json <<'EOF'
{
"compilerOptions": {
"baseUrl": "."
}
}
EOF
cat >test.js <<'EOF'
import "/some/absolute/path.js"
EOF
npx eslint --fix .
cat test.js
结果
import "./some/absolute/path.js"
限制:这不处理服务工作者的路径
navigator.serviceWorker.register("/workers/service.js", {
type: "module",
scope: "/app",
});