如何使用“短”路径访问Webpack模块(如Babel / NPM的“全局要求”)

时间:2015-09-28 17:29:55

标签: webpack

TLDR

是否有一个Webpack插件允许您仅使用foo/bar/baz引入模块require('baz')

展开

我刚刚遇到了Babel / NPM的一个有趣的插件:

https://github.com/CentaurWarchief/babel-plugin-global-require

这个插件让你只需要使用模块路径中最具体的部分就可以使用NPM模块。例如,如果您的文件系统具有:

src
  util
    foo
      Bar.js

而不是:

require('src/util/foo/Bar');

你可以这样做:

require('Bar');

如果(例如)你碰巧有两个“Bar.js”文件,你可以这样做:

require('foo/bar');

这很棒......如果你使用NPM作为你的模块系统。但是我想切换到使用Webpack,所以我的问题是:我刚才描述的是否像Webpack插件一样存在?

1 个答案:

答案 0 :(得分:3)

Webpack内置了类似功能。在您的webpack配置文件中将模块的路径添加到resolve.root数组。

resolve: {
    root: [path.join(__dirname, 'src/util/foo')]
}

然后require('Bar');

在这种情况下,有多个同名文件必须将其公共父文件夹添加到resolve.root数组。

文件夹结构:

src
  util
    foo
      Bar.js
    bar
      Bar.js

Webpack配置:

resolve: {
    root: [path.join(__dirname, 'src/util')]
}

然后

require('foo/Bar');
require('bar/Bar');

修改

使用绝对路径。感谢ErikPhipps的评论。