使用Babel的`sourceRoot`不会影响导入

时间:2016-12-22 01:24:03

标签: javascript webpack babeljs

目前我可以这样做:

require('./frontend/src/components/SomeComponent');

但是,如果我在webpack.config.js中设置以下内容:

resolve: {
    root: path.resolve('frontend', 'src')
}

我可以改为:

require('components/SomeComponent');

问题是,当我不使用Webpack(例如在测试环境中)时,我的所有导入都会中断。根据Babel文档,sourceRoot属性设置了“所有来源都是相对的根”。这让我觉得我可以将以下内容添加到我的.babelrc来修复我的导入:

"sourceRoot": "frontend/src"

......但没有这样的运气。当我在require('components/SomeComponent');babel-node时失败。当我只使用Babel来转换文件时,无论我是否设置requiresourceRoot行都是相同的。

所以,我的问题是,是否有任何方式(有或没有sourceRoot)来模拟Babel中的webpack resolve.root

P.S。我知道有几个Babel插件可以解决这个问题,但是我看到的所有插件都要求你在~路径中添加require(这当然会破坏Webpack中的导入)

1 个答案:

答案 0 :(得分:1)

许多项目都有webpack + babel,在许多项目中,你有时会绕过webpack(就像你的情况一样 - 用于测试)。

在这种情况下,所有解析别名都应该存在于babel中。

有插件允许一个读取另一个的配置(以及类似的插件等)。