Во время разработки моего модуля React
npm
я обозначил его npm link
.
После этого пакет правильно связан, а также появляется в приложении для потребителей node_modules
.
Модуль предоставляет интерфейс для создания компонента React
. Поскольку я использую React
, jsx
и es2015
, я использую babel
для перевода кода модуля на этапе предварительного опубликования с помощью npm prepublish hook
.
Однако, когда я пытаюсь создать свое потребительское приложение с webpack
(т.е. после его связывания), в моем пакете возникает ошибка:
Ошибка сборки модуля: Ошибка: не удалось найти предустановленный "es2015"
Теперь смешно, что если я опубликую пакет на npm, то npm install
из реестра моего потребительского приложения, постройте его, все будет хорошо.
Я попытался установить babel-preset-es2015
в своем приложении для пользователей, но потом начинает жаловаться на то, что не нашел babel
:
Модуль не найден: Ошибка: не удается разрешить модуль 'babel'
Опять же, если я устанавливаю его из реестра npm, все работает нормально, во время сборки не возникают ошибки.
Я также пробовал установить babel-core
, babel-cli
и babel-polyfill
, все безрезультатно.
Я использую babel v6.1.x
всюду и осведомлен о всех последних изменениях, однако, я думаю, что мне не хватает чего-то очевидного и я бы очень признателен, если кто-то может мне помочь, потому что постоянно публикую модуль, чтобы проверить, вещи - это просто плохая практика.
Для полноты здесь приведен код:
Ниже перечислены шаги, которые я выполняю, чтобы связать модуль:
-
cd ~/Sites/me/react-leafbox
-
npm link
-
cd ~/Sites/me/mapp
-
npm link react-leafbox
-
npm start
Трассировка стека после сборки:
ERROR in ../react-leafbox/lib/index.js
Module build failed: Error: Couldn't find preset "es2015"
at OptionManager.mergePresets (/Users/daniel/Sites/me/mapp/node_modules/babel-core/lib/transformation/file/options/option-manager.js:329:17)
at OptionManager.mergeOptions (/Users/daniel/Sites/me/mapp/node_modules/babel-core/lib/transformation/file/options/option-manager.js:289:12)
at OptionManager.addConfig (/Users/daniel/Sites/me/mapp/node_modules/babel-core/lib/transformation/file/options/option-manager.js:223:10)
at OptionManager.findConfigs (/Users/daniel/Sites/me/mapp/node_modules/babel-core/lib/transformation/file/options/option-manager.js:366:16)
at OptionManager.init (/Users/daniel/Sites/me/mapp/node_modules/babel-core/lib/transformation/file/options/option-manager.js:410:12)
at File.initOptions (/Users/daniel/Sites/me/mapp/node_modules/babel-core/lib/transformation/file/index.js:191:75)
at new File (/Users/daniel/Sites/me/mapp/node_modules/babel-core/lib/transformation/file/index.js:122:22)
at Pipeline.transform (/Users/daniel/Sites/me/mapp/node_modules/babel-core/lib/transformation/pipeline.js:42:16)
at transpile (/Users/daniel/Sites/me/mapp/node_modules/babel-loader/index.js:14:22)
at Object.module.exports (/Users/daniel/Sites/me/mapp/node_modules/babel-loader/index.js:83:14)
@ ./src/js/components/App.jsx 2:10-34
Трассировка стека после добавления дополнительных зависимостей, связанных с Babel (которые, я считаю, не обязательно, потому что они доступны в модуле response-leafbox):
ERROR in ../react-leafbox/lib/index.js
Module not found: Error: Cannot resolve module 'babel' in /Users/daniel/Sites/me/react-leafbox/lib
@ ../react-leafbox/lib/index.js 8:11-39
Я использую node v5.0.0
с npm v3.3.6
на MAC OSX El Capitan v10.11.1
. Я также попытался использовать node v4.2.1
с npm 2.14.7
, что дает мне те же ошибки.