我正在使用package.json
文件来定义nodejs要求以及npm update
,当然还可以正常工作。
如何使用节点管理(更新简单方式)其他第三方库?例如:
https://github.com/documentcloud/backbone.git
https://github.com/twitter/bootstrap.git
在vendor
文件夹中。
答案 0 :(得分:5)
摘要:我认为您要使用http://twitter.github.com/bower/
<强>详细信息:强> 有两种方法可以理解您的问题:
npm
代码?这个问题与前者有关,但从你所包含的例子中我想你要问后者。
如果是服务器端代码,只需坚持所有代码都附带npm
- 样式package.json
清单。如果代码的作者没有响应,请将其分叉并添加清单。没有任何借口。
对于客户端代码,情况有所不同。包管理有没有既定的标准,但它是一个被广泛认可的问题和非常活跃的开发领域。最近有几位挑战者崛起,试图抓住主导地位:BPM,Jam或Ender。这是您的选择,这里有很好的总结:A package manager for web assets
然而,所有上述问题都解决了一个稍微过于雄心勃勃的问题 - 他们试图将这些模块的传输整理到浏览器中(通过延迟加载,require-js样式,依赖关系解析,连接/缩小等)这也使它们更难以使用。
来自Twitter的Bower新进入该领域。它将只集中在vendor
文件夹中的下载/更新生命周期,并忽略浏览器传递。我喜欢这种方法。你应该看看它。
答案 1 :(得分:2)
你可以选择git子模块:
http://git-scm.com/book/en/Git-Tools-Submodules
Using someone else's repo as a Git Submodule on GitHub
[更新1 ] 在存储库的根目录下执行此操作:
git submodule add git://github.com/documentcloud/backbone.git vendors/backbone
git submodule add git://github.com/twitter/bootstrap.git vendors/bootstrap
答案 2 :(得分:1)
虽然这可能不是nodejs的方式,而且一些纯粹主义者可能会抱怨,Composer会做你想要的。即使Composer与PHP项目一起使用,也没有理由不能用它来管理nodejs项目的第三方非npm repos。显然,第三方库最好包含一个package.json,但这不会发生。我在我当前的nodejs应用程序上尝试了这个,它对我来说很有效。
优点:
缺点:
这里是怎么做的(你需要能够从cli运行php):
<强> 1。下载Composer (直接进入您的根nodejs项目文件夹)
curl -s https://getcomposer.org/composer.phar > composer.phar
<强> 2。创建composer.json文件(在项目的根目录中)
{
"repositories": [
{
"type": "package",
"package": {
"name": "twitter/bootstrap",
"version": "2.0.0",
"dist": {
"url": "https://github.com/twitter/bootstrap/zipball/master",
"type": "zip"
},
"source": {
"url": "https://github.com/twitter/bootstrap.git",
"type": "git",
"reference": "master"
}
}
}
],
"require": {
"twitter/bootstrap": "2.0.0"
}
}
第3。运行Composer更新
php composer.phar update
这会根据您的要求将包下载到vendor
文件夹中:
├── vendor
│ ├── ...
│ ├── composer
│ │ └── installed.json
│ └── twitter
│ └── bootstrap
│ ├── LICENSE
│ ├── Makefile
│ ├── README.md
│ ├── docs
│ │ ├── assets
│ │ └── ...
│ ├── img
│ │ ├── glyphicons-halflings-white.png
│ │ └── glyphicons-halflings.png
│ ├── js
│ │ ├── bootstrap-affix.js
│ │ └── ...
│ ├── less
│ │ ├── accordion.less
│ │ └── ...
│ └── ...