使用 webpack 解析需求路径网络包 >2.0网络包 1.0

2022-08-30 01:57:08

我仍然对如何使用webpack解析模块路径感到困惑。现在我写:

myfile = require('../../mydir/myfile.js') 

但我想写

myfile = require('mydir/myfile.js') 

我在想,resolve.alias可能会有所帮助,因为我看到一个类似的例子使用作为别名,然后我可以。{ xyz: "/some/dir" }require("xyz/file.js")

但是,如果我将别名设置为 ,将不起作用。{ mydir: '/absolute/path/mydir' }require('mydir/myfile.js')

我觉得自己很笨,因为我已经多次阅读了文档,我觉得我错过了一些东西。什么是正确的方法,以避免写所有相对需要的等?../../


答案 1

网络包 >2.0

请参阅wtk的答案

网络包 1.0

更直接的方法是使用 resolve.root。

http://webpack.github.io/docs/configuration.html#resolve-root

resolve.root

包含模块的目录(绝对路径)。也可能是目录的数组。应使用此设置将单个目录添加到搜索路径。

在您的情况下:

webpack config

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


答案 2

为了便于将来参考,webpack 2 删除了所有内容,但作为解析路径的一种方法。这意味着将不起作用modulesroot

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)