用nodejspipe理第三方库(不是节点模块)?
我正在使用package.json
文件来定义nodejs需求,以及npm update
,当然,工作正常。
我怎样才能pipe理(更新简单的方法)与节点的其他第三方库? 例如:
https://github.com/documentcloud/backbone.git https://github.com/twitter/bootstrap.git
在vendor
文件夹。
总结:我想你想用http://twitter.github.com/bower/
详情:有两种方法可以理解你的问题:
- 如何pipe理/更新非
npm
代码? - 如何pipe理/更新客户端JavaScript资源?
问题就像前者一样,但是从你的例子来看,我想你想问问后者。
在服务器端代码的情况下,只要坚持所有的代码与npm
风格的package.json
清单。 如果代码的作者没有响应,请将其分叉并添加清单。 没有任何借口。
对于客户端代码 ,情况是不同的。 包pipe理并没有一个确定的标准 ,但是这是一个被广泛认可的问题,也是非常活跃的发展领域。 最近几个挑战者已经上升,试图占据主导地位: BPM , Jam或Ender 。 这是您的select,他们很好地总结在这里: networking资产的包pipe理器
但是,上述所有的问题都解决了一个稍微过于macros大的问题 – 他们试图将这些模块传输到浏览器(通过延迟加载,require-js风格,依赖关系parsing,连接/缩小等)。难以使用。
这个领域的新进入者是来自Twitter的Bower 。 它只关注vendor
文件夹中的下载/更新生命周期,并忽略浏览器交付。 我喜欢这种方法。 你应该检查一下。
你可以去git submodules:
http://git-scm.com/book/en/Git-Tools-Submodules
在GitHub上使用别人的repo作为Git子模块
[ 更新1 ]在您的存储库的根目录下执行此操作:
git submodule add git://github.com/documentcloud/backbone.git vendors/backbone git submodule add git://github.com/twitter/bootstrap.git vendors/bootstrap
查看更多: http : //skyl.org/log/post/skyl/2009/11/nested-git-repositories-with-github-using-submodule-in-three-minutes/
虽然这可能不是节点的方式,一些纯粹主义者可能会抱怨, composer php会做你想做的。 即使Composer与PHP项目一起使用,也没有理由不能用它来pipe理nodejs项目的第三方非npm repos。 很明显,第三方库最好包含一个package.json,但这种情况不会发生。 我试过这在我目前的nodejs应用程序,它完全适合我。
优点:
- 一个json文件指定没有package.json文件的自定义外部依赖关系
- 自定义包在项目文件夹中的存储位置
- 与私人回购和回购协同工作,最初不是为了与nodejs一起使用
缺点:
- 需要php cli
- 更新依赖关系的额外步骤
- 一个额外的JSON文件的依赖
这里怎么做(你需要能够从cli运行php):
1.下载Composer (直接进入你的root nodejs项目文件夹)
curl -s https://getcomposer.org/composer.phar > composer.phar
2.创build一个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 │ │ └── ... │ └── ...