2015-10-19 13 views
2

比方说,我有以下代码:如何在nodejs中设置路径别名?

var mod1 = require('../../../../ok/mod1'); 
var mod2 = require('../../../info/mod2'); 

它不是像上面漂亮的编码,我想知道如果有配置根解析器就像webpack-resolve-root的NodeJS的方式?

据我所知,NODE_PATH可以用来取代node_modules的根,但那不是我想要的。我想要解析器按顺序解析多个文件夹。

回答

-1

解决此问题的最佳方法是使用全局(config)容器。 在大多数情况下,您的应用程序中都会有一个配置文件。在此配置中,您可以添加一个属性,该属性将成为包含文件/文件夹的所有绝对路径的对象。 由于配置文件是在你的应用程序开始使用,你只要做到以下几点:

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 

如果你有一些复杂的路径和你需要一个更加动态的系统,你总是可以在配置中实现一个为你建立路径的函数。 (config.makePath = function(){...}) 这应该照顾它。

+0

我不能用这种方式。我是前端开发人员,我使用'webpack'作为devtool来编译用commonjs编写的源代码。 一旦我想编写单元测试,我发现模块无法正确加载,因为我在'require'中使用的路径由[webpack-resolve-root]解析(http://webpack.github .IO /文档/ configuration.html#决心根) – Howard