假设我有以下代码:
var mod1 = require('../../../../ok/mod1');
var mod2 = require('../../../info/mod2');
这段代码不太简洁易读,我想知道是否有一种方法可以像Node.js中的webpack-resolve-root一样配置根解析器?
据我所知,NODE_PATH
可以用来替换node_modules
的根目录,但这不是我想要的。我希望能够按顺序解析多个文件夹。
假设我有以下代码:
var mod1 = require('../../../../ok/mod1');
var mod2 = require('../../../info/mod2');
这段代码不太简洁易读,我想知道是否有一种方法可以像Node.js中的webpack-resolve-root一样配置根解析器?
据我所知,NODE_PATH
可以用来替换node_modules
的根目录,但这不是我想要的。我希望能够按顺序解析多个文件夹。
2021年更新答案。
Node.js子路径导入已添加至:v14.6.0,v12.19.0。
这使您可以将以下内容添加到package.json中。
"imports": {
"#ok/*": "./some-path/ok/*"
"#info/*": "./some-other-path/info/*"
},
并且在你的 .js 中
import mod1 from '#ok/mod1';
import mod2 from '#info/mod2';
有一个名为 module-alias 的npm包,可能可以实现您所需的功能。
var config = require("./config.js");
//config = {... , path: {"someModule": "/absolute/path/to", "someModule2": "/absolute/path/to"...}}
global.CONFIG_CONTAINER = config
在您的应用程序中稍后,只需使用以下代码:
var myModule = require(CONFIG_CONTAINER.path.someModule)
// + concat if you are looking for a file
webpack
作为devtool编译用commonjs编写的源代码。
当我想编写单元测试时,我发现模块无法正确加载,因为我在require
中使用的路径是由webpack-resolve-root解析的。 - Howard
"#shared/*": "../shared/src/*"
- Oli414"paths": { "#pkg2/*": ["./pkg2/*"] },
package.json:"imports": { "#pkg2/*": "./pkg2/*" }
- Corey Alix