具有汇总的绝对导入

时间:2018-02-15 17:06:49

标签: javascript ecmascript-6 rollupjs

我试图获得像

这样的导入
import { startup } from "applicationRoot/renderUI";

从我的应用程序的任何地方开始工作。我认为rollup-plugin-alias非常适合这种情况。我尝试配置

alias({
  applicationRoot: "applicationRoot/"
})

在我的插件数组中。这很接近,但扩展名被删除,所以我收到错误:

  

c:\ path \ to \ applicationRoot \ renderUI不存在。

添加

alias({
  resolve: [".js"],
  applicationRoot: "applicationRoot/"
}),

没有改变任何事情。

2 个答案:

答案 0 :(得分:4)

您可以使用rollup-plugin-includepaths

将此添加到Rollup配置:

import includePaths from 'rollup-plugin-includepaths';

export default {
  ...
  plugins: [
    ...
    includePaths({ paths: ["./"] })
  ]
};

这将告诉Rollup还解决从应用程序根目录中导入的问题,例如

import { startup } from "applicationRoot/renderUI";

将适当地找到applicationRoot文件夹。

答案 1 :(得分:1)

这不是原始问题的答案,但如果您是从搜索结果来到这里并使用 Typescript,则可以在 tsconfig 中设置 compilerOptions.baseUrl,它就会起作用。

{
  ...
  compilerOptions: {
    ...
    "baseUrl": "./"
  },
}

然后如果你有一个像 `src/lib/util.ts' 这样的文件,你可以导入它:

import util from 'src/lib/util'