我仍然对如何使用 webpack 解析模块路径感到困惑。现在我写:
myfile = require('../../mydir/myfile.js')
但我想写
myfile = require('mydir/myfile.js')
我在想resolve.alias{ xyz: "/some/dir" }可能会有所帮助,因为我看到了一个使用as alias的类似示例,然后我可以require("xyz/file.js")。
{ xyz: "/some/dir" }
require("xyz/file.js")
但是,如果我将别名设置为{ mydir: '/absolute/path/mydir' },require('mydir/myfile.js') 将不起作用。
{ mydir: '/absolute/path/mydir' }
require('mydir/myfile.js')
我感到很愚蠢,因为我已经多次阅读该文档并且我觉得我错过了一些东西。避免使用../../etc 编写所有相关要求的正确方法是什么?
../../
请参阅wtk 的答案。
为了将来参考,webpack 2 删除了所有内容,但modules作为解析路径的一种方式。这种手段是行不通root的。
modules
root
https://gist.github.com/sokra/27b24881210b56bbaff7#resolving-options
示例配置开始于:
{ modules: [path.resolve(__dirname, "app"), "node_modules"] // (was split into `root`, `modulesDirectories` and `fallback` in the old options)
更直接的方法是使用 resolve.root。
http://webpack.github.io/docs/configuration.html#resolve- root
解决.root 包含您的模块的目录(绝对路径)。也可能是一个目录数组。此设置应用于将单个目录添加到搜索路径。
解决.root
包含您的模块的目录(绝对路径)。也可能是一个目录数组。此设置应用于将单个目录添加到搜索路径。
在你的情况下:
var path = require('path'); // ... resolve: { root: path.resolve('./mydir'), extensions: ['', '.js'] }
require('myfile')
或者
require('myfile.js')
另见:http ://webpack.github.io/docs/configuration.html#resolve- modulesdirectories