【问题标题】:How can I handle Node.js dependencies in a project on git with NPM?如何使用 NPM 处理 git 项目中的 Node.js 依赖项?
【发布时间】:2011-09-29 22:51:02
【问题描述】:

我已经多次遇到这种情况,但仍然没有找到答案。我正在开始一个新的 Node.js 项目,这个项目将依赖于其他一些库。为了争论,假设有些是纯粹的 JS 库,可以作为 git 子模块添加到新项目中,但有些部分需要一些额外的工作(例如 npm 安装的系统依赖项,或者必须编译的 C 库)。

启动这个项目并将其添加到git的最佳方法是什么,具有以下两个要求:

  • 其他人的库不提交给我们自己的存储库,而是子模块或动态拉入并由 npm 安装。
  • 不需要仅仅为了克隆 repo 并拥有一个工作环境而必须遵循的大量指令列表。运行 git submodules update --init --recursive 没问题,运行 npm 命令读取 package.json 并安装依赖项也没问题(这样的命令存在吗?),但强制每个人都运行“npm install __" 每个依赖项都不好,如果不需要的话,我宁愿不使用 'make' 或 'ant' 来做到这一点。

有什么最好的方法吗?这似乎是一件如此简单、基本的事情,但我找不到一个我正在尝试做的事情的例子。

编辑:语法

【问题讨论】:

  • 顺便说一下,你可以使用git clone --recursive ... foo,和git clone ... foo && cd foo && git submodule update --init --recursive一样

标签: git node.js npm


【解决方案1】:

编辑忽略下面,但留作参考。有时我早上想不清楚:)

创建一个package.json 文件,添加你的依赖项,你的安装就变成了:

npm install

来自您的项目目录。 git ignore所有添加的项目。


npm submodule foo

它通过git submodule 将软件包安装到node_modules 中,因此github 等将识别它们是链接。只要 npm 包包含 git URI,这就会起作用。不幸的是,一个好的数字没有,所以你在这些方面不走运。

另外,请注意,当您执行此操作时,npm 将不再适用于该模块,例如你不能通过npm更新,你必须通过git更新


或者你可以这样做:

./modules.js

modules.exports = [ 'express@1.0', 'jade@2.0', 'stylus@3.0' ];

./make

#!/usr/bin/env node
var modules = require( './modules' )
  ,   spawn = require('child_process').spawn;

for( var i=0, l=modules.length; i<l; i++ ){
    spawn( 'npm', [ 'install', modules[i] ] );
}

【讨论】:

  • Sheezus -- 看起来很愚蠢,以至于我不知道没有参数的“npm install”!这正是我所需要的......虽然您的自定义解决方案也很漂亮!感谢您的帮助:)。
  • 感谢您没有删除您原来的 anwser,这正是我所需要的。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 2012-01-18
  • 2014-05-28
相关资源
最近更新 更多