nodejs是否在webpack中提供了resolve.alias等选项

时间:2017-05-04 09:52:58

标签: javascript node.js webpack

我使用resolve.alias消除长相对路径。

// webpack.config.js
module.exports = {
    // ...
    resolve: {
        alias: {
            services: __dirname + '/src/services',
            components: __dirname + '/src/components'
        },
}

// componentFoo.js
import ServiceBar from 'services/serviceBar'

但是当我尝试使用av​​a运行测试时,节点找不到模块'services / serviceBar'。

我的文件夹结构:
SRC
--components
---- componentFoo.js
--services
---- serviceBar.js
测试
--index.js

1 个答案:

答案 0 :(得分:2)

Node.js没有别名的任何内置选项。但你可以使用babel插件babel-plugin-module-resolver来定义别名,这应该很方便,因为AVA已经使用了babel。

您需要将它添加到您的babel插件中:

"plugins": [
  ["module-resolver", {
    "alias": {
      "services": "./src/services",
      "components": "./src/components"
    }
  }]
]

路径相对于babel配置,除非您指定cwd选项(list of options)。另一种可能性是使用root选项而不是别名,这类似于webpack' resolve.modules

"root": ["./src"]