使用browserify让nower与npm一起工作

大量的JavaScript包pipe理解决scheme都让我们感到非常高兴和诅咒,它们都有各自的优点。 由于在这里无关紧要的原因,我已经解决了我的主要解决schemenpm。 但是,在其他系统(如bower和component)上有太多好的代码可以忽略这些解决scheme。 所以,我正在设置一个环境,我可以使用browserify从npm和bower中加载软件包(我们将保存另一个问题的组件)。

到目前为止最好的方法是使用运行bower installpostinstall脚本来设置我的package.json

 { ... configuration ... "scripts": { "postinstall": "bower install" } } 

这在安装第一级依赖关系(即strait bower dependencies和strait npm dependencies)时build立了正确的目录结构:

 - MyMixedComponent - main.js - package.json - node_modules - npmDependency - bower_components - bowerComponent 

在browserify , browserify -t debowerify使用debowerify变换可以很好地构build,但是,当我想从另一个项目中的npm install MyMixedComponentnpm install MyMixedComponent ,目录结构的构build方式和npm一样:

 - MyNewProject - main.js - package.json - node_modules - MyMixedComponent - main.js - package.json - node_modules - npmDependency - bower_components - bowerComponent 

由于bower是一个平坦的依赖关系树,所以当尝试使用browserify和debowerify进行构build时,这当然不起作用。 实际上需要的是这样的:

 - MyNewProject - main.js - package.json - node_modules - MyMixedComponent - main.js - package.json - node_modules - npmDependency - bower_components - bowerComponent 

或者,可以修改debowerify以识别多个bower目录,但是这样会打败bower的可爱特征,那就是平坦的树,这对于前端依赖性来说更好。 任何关于这可能如何工作的想法,或者我应该只是祈祷我们有一天会同意依赖pipe理?

在同一个代码库中有多个bower_components的想法有可能导致某些特定框架的重复。

尝试走下去的道路:

  1. 在我的当前软件包中安装混合(npm和bower)软件包时,
  2. 像往常一样安装npm(嵌套),
  3. 并且,对于来自混合包装bower install的每个凉亭组件bower install到当前包的根部
  4. 一个交互式的npm postinstall脚本 ,可以改变当前包的bower.json
  5. 并警告用户进行凉亭安装,因为bower.json现在更新了您的其他npm / bower混合包中的组件