使用nodejs管理第三方库(不是节点模块)?

时间:2012-09-07 19:44:36

标签: node.js twitter-bootstrap dependencies

我正在使用package.json文件来定义nodejs要求以及npm update,当然还可以正常工作。

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

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

vendor文件夹中。

3 个答案:

答案 0 :(得分:5)

摘要:我认为您要使用http://twitter.github.com/bower/

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

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

这个问题与前者有关,但从你所包含的例子中我想你要问后者。

如果是服务器端代码,只需坚持所有代码都附带npm - 样式package.json清单。如果代码的作者没有响应,请将其分叉并添加清单。没有任何借口。

对于客户端代码,情况有所不同。包管理有没有既定的标准,但它是一个被广泛认可的问题和非常活跃的开发领域。最近有几位挑战者崛起,试图抓住主导地位:BPMJamEnder。这是您的选择,这里有很好的总结: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

点击此处了解详情:http://skyl.org/log/post/skyl/2009/11/nested-git-repositories-with-github-using-submodule-in-three-minutes/

答案 2 :(得分:1)

虽然这可能不是nodejs的方式,而且一些纯粹主义者可能会抱怨,Composer会做你想要的。即使Composer与PHP项目一起使用,也没有理由不能用它来管理nodejs项目的第三方非npm repos。显然,第三方库最好包含一个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。运行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
│           │   └── ...
│           └── ...