Мы оба благословлены и прокляты множеством решений для управления пакетами для 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 можно было бы изменить, чтобы распознать несколько каталогов на гитаре, но это может привести к поражению прекрасной характеристике беседки, что это плоское дерево, что намного лучше для зависимостей переднего конца. Любые мысли о том, как это может работать, или я просто молюсь о том, чтобы мы все когда-нибудь договорились об управлении зависимостями?