Доступ к папке разработки, как будто это глобальная папка узла

У меня есть папка модулей, в которой находятся мои модули для приложения 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 пригоден для этого?

1 ответ

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

Поскольку он является глобальным, вы можете получить к нему доступ из любой точки мира.

Другие вопросы по тегам