如何使用 Rollup.js 将绝对导入转换为相对导入?

问题描述 投票:0回答:1

我正在进行代码重组,并正在重写一些 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/"
。我找到了这个答案。但,似乎还没有定论。有什么建议吗?

typescript npm rollupjs
1个回答
0
投票

使用 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",
});
© www.soinside.com 2019 - 2024. All rights reserved.