0

我有一个模块文件夹,其中包含我的 app1 模块,还有另一个模块文件夹 app2 等等。我希望在不传递虚拟模块路径的情况下导入我的模块。

例如。

c:\Projects\Apps\
    firstApp
      www.js // I wish to import db with require('db')
    Modules
      db
         src/...*.js  // var ext=require('extensions')
         test/...*.js
         index.js
      api
         src/
           *.js  // var ext=require('db'),
                 // var ext=require('extensions'),
         test/
           *.js  // var testApi = require('api')
         index.js
      extensions
         src/...*.js
         test/...*.js
         index.js

是否有可能使用它们,就好像它们安装在本地但在不同的文件夹中一样。 npm link可用于此?

4

1 回答 1

0

require('...')./使用或时将在 node_modules 文件夹或本地文件中查找模块../

您可以做的是创建自己的 require 函数,即使不使用相对/绝对文件路径,它也会查找本地文件。

在你的根/入口代码中,使用这个:

var projectDirectory = __dirname;
GLOBAL.requirep = function(path) {
  return require(projectDirectory + '/' + path);
}

//at any js file, you can do this:
var db = requirep('db') //will load db/index.js
var api = requirep('api/src/file.js') //will load api/src/file.js

因为它是全球性的,所以您可以从任何需要的地方访问它。

于 2016-04-11T16:15:18.660 回答