Node.js 使用browserify使bower与npm一起工作
我们都被过多的JavaScript包管理解决方案所祝福和诅咒,所有这些都有各自的优点。出于与此无关的原因,我已将npm作为我的主要解决方案。然而,在其他系统(如bower和component)上有太多好的代码,无法忽略这些解决方案。所以,我希望建立一个环境,在这里我可以使用browserify从npm和bower加载包(我们将为另一个问题保存组件) 到目前为止,我想到的最好的方法是使用运行Node.js 使用browserify使bower与npm一起工作,node.js,npm,bower,commonjs,browserify,Node.js,Npm,Bower,Commonjs,Browserify,我们都被过多的JavaScript包管理解决方案所祝福和诅咒,所有这些都有各自的优点。出于与此无关的原因,我已将npm作为我的主要解决方案。然而,在其他系统(如bower和component)上有太多好的代码,无法忽略这些解决方案。所以,我希望建立一个环境,在这里我可以使用browserify从npm和bower加载包(我们将为另一个问题保存组件) 到目前为止,我想到的最好的方法是使用运行bower安装的postinstall脚本设置我的package.json: { ... configu
bower安装的postinstall
脚本设置我的package.json
:
{
... configuration ...
"scripts": {
"postinstall": "bower install"
}
}
这将在安装一级依赖项(即Strater bower依赖项和Strater npm依赖项)时构建正确的目录结构:
它使用browserify上的转换构建得很好,browserify-t debowerify
,但是,当我想在另一个项目中从npm安装MyMixedComponent时,npm install MyMixedComponent
,目录结构是按照npm的预期构建的:
- MyNewProject
- main.js
- package.json
- node_modules
- MyMixedComponent
- main.js
- package.json
- node_modules
- npmDependency
- bower_components
- bowerComponent
由于bower是一个扁平的依赖树,因此在尝试使用browserify和debowerify构建时,这当然不起作用。实际上需要的是这样的东西:
- MyNewProject
- main.js
- package.json
- node_modules
- MyMixedComponent
- main.js
- package.json
- node_modules
- npmDependency
- bower_components
- bowerComponent
或者,可以修改debowerify来识别多个bower目录,但这会破坏bower的可爱特性,即它是一个平面树,这对于前端依赖性更好。有没有想过这是如何实现的,或者我应该祈祷有一天我们都能在依赖关系管理上达成一致?在同一个代码库中有多个bower_组件的想法,有可能引入某些特定框架的副本
试着走以下道路:
将混合(npm和bower)软件包安装到我的当前软件包中时
按常规安装npm(嵌套)
对于混合包中的每个bower组件,将安装到当前包的根目录中
一个,可以只更改当前包的bower.json
并警告用户进行bower安装,因为bower.json现在已使用其他npm/bower混合包中的组件进行更新
@PaulSweatte的可能重复您提到的问题涉及Angular最佳实践与AMD/CommonJS模块范例之间的冲突。该问题旨在纠正包装管理系统的冲突结构;一个层次(npm)和一个平面(凉亭)。我的目标是在项目中利用这两个系统,同时保持模块化。i、 e.当项目被视为独立项目或库时,依赖项会正确加载。在这种情况下,可能对您有效。您是否尝试过将“napa”与browserify一起使用以访问bower软件包?而且,是的,我没有完全理解您的要求,但它似乎是在该领域中使用的工具。为什么不同时使用这两种工具并使用grunt
?我想知道是否有办法避免修改根包的bower.json,因为这可能在版本控制下。可能只是为每个嵌套依赖项运行bower install
。对于在自己的bower_components目录中查找的嵌套包,仍然会得到重复的代码:/
- MyNewProject
- main.js
- package.json
- node_modules
- MyMixedComponent
- main.js
- package.json
- node_modules
- npmDependency
- bower_components
- bowerComponent