5

我正在使用package.jsonfile 来定义 nodejs 要求,npm update当然也可以正常工作。

如何使用节点管理(更新简单的方法)其他第三方库?例如:

https://github.com/documentcloud/backbone.git
https://github.com/twitter/bootstrap.git

vendor文件夹中。

4

3 回答 3

5

总结:我想你想用http://twitter.github.com/bower/

详细信息: 有两种方法可以理解您的问题:

  • 如何管理/更新非npm代码?
  • 如何管理/更新客户端 javascript 资产?

这个问题的措辞是前者,但从你所包含的例子中,我认为你想问后者。

服务器端代码的情况下,只要坚持所有代码都随npm-style package.jsonmanifest 一起提供。如果代码的作者没有响应,请分叉并添加清单。没有任何借口。

对于客户端代码,情况就不同了。包管理没有既定的标准,但是它是一个被广泛认可的问题并且是非常活跃的开发领域最近有几个挑战者崛起,试图抢占主导地位:BPMJamEnder。这是您的选择,它们在这里得到了很好的总结:Web assets 的包管理器

但是,以上所有内容都解决了一个有点过于雄心勃勃的问题——他们试图整理这些模块到浏览器的传输(通过延迟加载、require-js 样式、依赖解析、连接/缩小等)。这也使它们更加难以使用。

该领域的新进入者是来自 Twitter的Bower 。它只关注文件夹中下载/更新生命周期,vendor而忽略浏览器交付。我喜欢这种方法。你应该检查一下。

于 2012-09-11T18:17:57.127 回答
2

你可以去 git 子模块:

http://git-scm.com/book/en/Git-Tools-Submodules

使用别人的 repo 作为 GitHub 上的 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/

于 2012-09-11T11:04:37.417 回答
1

虽然这可能不是 nodejs 的方式,并且一些纯粹主义者可能会抱怨,但Composer会做你想做的。即使 Composer 与 PHP 项目一起使用,它也没有理由不能用于管理nodejs 项目的 3rd 方非 npm存储库。显然,第 3 方库最好包含一个 package.json,但这不会发生。我在我当前的 nodejs 应用程序上尝试了这个,它对我来说非常有效。

优点:

  • 一个 json 文件指定没有 package.json 文件的自定义外部依赖项
  • 自定义包在项目文件夹中的存储位置
  • 适用于私有存储库和最初不用于 nodejs 的存储库

缺点:

  • 需要 php cli
  • 更新依赖的额外步骤
  • 依赖项的额外 json 文件

这里怎么做(你需要能够从 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.运行作曲家更新

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
│           │   └── ...
│           └── ...
于 2012-09-14T17:47:44.103 回答