Сделать беседу с npm с помощью браузера
Мы оба благословлены и прокляты множеством решений для управления пакетами для JavaScript, все с их соответствующими достоинствами. По причинам, которые здесь неактуальны, я остановился на npm для своего основного решения. Однако в других системах, таких как bower и component, слишком много хорошего кода, чтобы игнорировать эти решения. Итак, я ищу настроить среду, в которой я могу использовать браузер, чтобы загружать пакеты из npm и bower (мы сохраним компонент для другого вопроса).
Лучшее, что я придумал, это настроить package.json
с postinstall
script, который запускает bower install
:
{
... configuration ...
"scripts": {
"postinstall": "bower install"
}
}
Это создает правильную структуру каталогов при установке зависимостей первого уровня (т.е. зависимостей между силовыми решетками и зависимостями прокрутки npm):
- MyMixedComponent
- main.js
- package.json
- node_modules
- npmDependency
- bower_components
- bowerComponent
Что строит отлично, используя debowerify transform при браунировании, browserify -t debowerify
Однако, когда я хочу установить MyMixedComponent из npm в другой project, npm install MyMixedComponent
, структура каталогов построена так, как вы ожидали бы от npm:
- MyNewProject
- main.js
- package.json
- node_modules
- MyMixedComponent
- main.js
- package.json
- node_modules
- npmDependency
- bower_components
- bowerComponent
Поскольку bower - это плоское дерево зависимостей, это, конечно, не работает при попытке построить с помощью браузера и debowerify. На самом деле нужно что-то вроде этого:
- MyNewProject
- main.js
- package.json
- node_modules
- MyMixedComponent
- main.js
- package.json
- node_modules
- npmDependency
- bower_components
- bowerComponent
В качестве альтернативы debewify можно было бы изменить, чтобы распознать несколько каталогов на гитаре, но это может привести к поражению прекрасной характеристике беседки, что это плоское дерево, что намного лучше для зависимостей переднего конца. Любые мысли о том, как это может работать, или я просто молюсь о том, чтобы мы все когда-нибудь договорились об управлении зависимостями?
Ответы
Ответ 1
Идея иметь несколько элементов bower_components в одной и той же кодовой базе, имеет риск введения дубликатов некоторой конкретной структуры.
Попробуйте пойти по дороге:
- При установке смешанного пакета (npm и bower) в мой текущий пакет
- Установите npm как обычно (вложенный),
- И для каждого компонента-боувера из смешанного пакета
bower install
в корень текущего пакета
- интерактивная npm postinstall script, может просто изменить bower.json текущего пакета
- И предупредите пользователя о необходимости установки bower, так как bower.json теперь обновляется с компонентами другого вашего пакета npm/bower.