使用node.js npm和git的最佳工作stream程

我正要用node.js做一个大型的项目,目前尝试分出一些东西。

在之前的节点项目中,我使用了所有节点模块的额外文件夹。 这个文件夹被git忽略,我pipe理的版本和通过git子模块更新,这是不容易的(没有依赖关系,更新到新版本并不总是很有趣)。

我正在寻找的是:

npm install packagename
npm dump_modules_into_file

所以参与这个项目的其他人都可以这样做:

npm install_or_update_modules_from_file

我不想让我的git仓库跟踪node_modules 。 基本上我想要类似于symonfy2如何处理它捆绑 。

PS:我知道npm submodule packagename ,但这个命令不是很有帮助,因为它不会安装依赖关系,也不会更新模块。

PS2:我准备好了package.json ,但是这也有一些缺陷。 (没有参数,您必须手动更新模块版本。)

package.json将完成你正在寻找的东西。 在关于传递--mongodb:native标志的注释中,该标志是npm命令的一个参数,在您自己的项目中使用package.json起作用。 mongodb包有一个“安装脚本”,在节点处理环境中查找该标志。 如果这个标志存在,那么它会产生另一个构build过程。 所以,如果你在package.json中有mongodb作为依赖

 { "name": "MyProject" , "description": "Test" , "version": "0.0.1" , "dependencies": { "mongodb": "*" } } 

运行npm install --mongodb:native 工作。

关于“手工更新” – 这只是第一次,可能需要一段时间,我相信你可以写一个脚本来生成它,如果有很多的依赖。 然而,这听起来像你有一个相当大的团队,如果是这样的话,那么自动更新package.json将变得非常丑陋(认为新的开发人员,实验function等)。的开发周期不一定是个坏主意。

参考文献:

编辑 :如尼克提到的,添加“node_modules”目录.gitignore将阻止任何这些文件被检入您的回购

这里有一篇很好的文章,解释了什么时候你应该也不应该检查你的node_modules到git中。 可以回答你的问题。

git中的node_modules

Afaik,做包pipe理的唯一方法是你所描述的,虽然我不确定你对wrt package.json不感兴趣。

如果你想严格控制你使用的模块版本,你可以明确指定版本号。 您也可以使用>=XXX方法来自动获取最新的(超过阈值),这对于开发目的而言有时是很好的。

这可以让你的队友做到:

 npm install . 

它将安装package.json文件中列出的所有依赖项。 这些将安装到./node_modules但你可以.gitignore ,如你所述。

为了全面testing软件包configuration,并确保模块的行为与最终部署时的行为一致,现在使用以下过程。 它完全避免了需要破解node_module目录或require()代码,所以当你去部署它只是工作

对于内部项目或预发布到github,你也可能想在你的package.json设置"private": true ,所以npm将拒绝发布它。

  1. 在git版本控制下创build一个项目目录,并将所有节点模块添加为子目录。 子目录名称必须与其包名称匹配。 如果您正在使用github,则需要为每个模块目录创build一个单独的git repo。 他们可以在你的项目回购git submodules。 将node_module添加到.gitignore文件。

  2. 安装像npm-server这样的工具并在项目目录中运行它。 然后将npmregistry设置为localhost,以便现在npm将会与您本地的npm服务器进行通信以获取软件包。 它发现它将发送的任何子目录。 任何它没有find它将代理registry.npmjs.org$ npm set registry http://localhost:6070/ $ cd ~/projects $ npm-server

  3. 启动一个新的shell并创build一个单独的沙箱目录$ mkdir sandbox $ cd sandbox

  4. 使用本地registry服务器安装您的应用程序 清除本地的npmcaching并重新安装你的应用程序。 我在一行上做这个,所以很容易通过shell重做。 你可能想编写它。

    $ npm cache clear; sleep 3; npm uninstall -g app; sleep 3; npm install -g app

  5. testing你的app:

    $ app ....

  6. 完成安装后,注销本地npmregistry:

    $ npm set registry http://registry.npmjs.org:80/

  7. 完成testing后,您可以发布您的应用程序,并在npm-server停止的情况下重新testing部署。

$ cd ~/projects $ npm publish app


而不是注册和注销服务器,你可以使用本地主机服务器进行一次性安装: $ npm --registry=http://localhost:6070/ install app


我正在写分叉版本的npm-server所以你只需要: $ npmsvr on // Registers local registry server $ npmsvr start // Start local registry server $ npmsvr off // Deregisters local registry server