【问题标题】:Absolute imports with rollup使用汇总的绝对导入
【发布时间】:2018-07-26 12:44:00
【问题描述】:

我正在尝试获得像

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

在我的应用程序的任何地方工作。我认为rollup-plugin-alias 非常适合这个。我尝试配置

alias({
  applicationRoot: "applicationRoot/"
})

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

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

添加

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

没有改变任何东西。

【问题讨论】:

  • 为什么第一个不能在任何模块中工作?
  • @Liam 因为它是非相对导入
  • 正确,这样就可以在您的根目录中,并且您不想做所有../ 的事情?
  • 对,我希望能够从我的应用程序的任何级别执行import { startup } from "applicationRoot/renderUI";,并让它工作。

标签: javascript ecmascript-6 rollupjs


【解决方案1】:

您可以使用rollup-plugin-includepaths

将此添加到您的汇总配置中:

import includePaths from 'rollup-plugin-includepaths';

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

这将告诉 Rollup 也从应用程序的根目录解析导入,所以像

import { startup } from "applicationRoot/renderUI";

将适当地找到它所在的applicationRoot 文件夹。

【讨论】:

  • 非常感谢!你很接近 - 我在 :) 中编辑了一个小调整
  • 感谢您的回答 - 正是我刚才所寻找的。我有点惊讶汇总不支持本机。
  • 在您的回答中,rollup-plugin-includepaths 是否会包含./folder 如果paths['./'] 或者我需要具体说明吗?或将正则表达式添加到路径参数?
【解决方案2】:

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

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

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

import util from 'src/lib/util'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 2019-11-25
    • 2018-03-16
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    • 2018-09-01
    相关资源
    最近更新 更多