2016-10-13 3 views
1

Некоторые контексты здесь: Это не то, что я не могу использовать Webpack, это то, что я не хочу использовать Webpack. Я хотел бы сохранить все как «ваниль», насколько это возможно.Модули слияния с использованием NodeJS

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

project/ 
├── index.js 
├── lib/ 
│ ├── network/ 
│ │  request.js 
│ │  response.js 
├── pages/ 
│ ├── foo.js 

Учитывая, что мы находимся в index.js мы импортируем запросить через

var networkRequest = require('./lib/network/request.js') 

и если мы в foo.js, тогда мы будем импортировать запрос через

var networkRequest = require('../lib/network/request.js') 

Что мне интересно, что если есть какой-нибудь способ, возможно, установить локальный псевдоним в Package.json или где-нибудь еще в этом роде, так:

localPackages = [ 
    { name: 'network-request', path: './lib/network/request.js' } 
]; 

В которой вы могли бы просто сделать

var networkRequest = require('network-request') 

Из любого файл, и он предоставит правильный путь.

ответ

1

Да, это то, что npm link для. Родной и из коробки.

Вы также можете установить local paths в package.json

{ 
    "name": "baz", 
    "dependencies": { 
    "bar": "file:../foo/bar" 
    } 
} 
+0

Это не работает, к сожалению: ' "зависимости": { "реагировать": "15.3.2", «реагируют родной ":" 0.35.0 ", " @ components/RootTabBar ":" file: ./ src/components/RootTabBar " },' Получение ошибки «Не удалось устранить модуль». – Hobbyist

+0

Я не уверен, что синтаксис @ components/RootTabBar * должен * решить. Я никогда не видел имени модуля со специальными символами, отличными от дефисов. – Paul

+0

Вот большое разнообразие: https://www.npmjs.com/~exponent - я также пробовал с регулярными именами, IE: «RootTabBar», но это тоже не сработало. – Hobbyist

Смежные вопросы