首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用node.js npm和git的最佳工作流程

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

Stack Overflow用户
提问于 2012-02-08 07:06:13
回答 3查看 10K关注 0票数 7

我即将用node.js做一个大型项目,目前正在尝试整理一些东西。

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

我要找的是:

npm install packagename

npm dump_modules_into_file

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

npm install_or_update_modules_from_file

我不想让我的git存储库跟踪node_modules。基本上,我想要一些类似于symonfy2如何处理它的bundles

附言:我知道npm submodule packagename,但是这个命令没有多大帮助,因为它不安装依赖项,也不更新模块。

附言2:我已经准备好package.json了,但它也有一些缺陷。(没有参数,必须手动更新模块版本。)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-09 01:27:34

package.json将实现您正在寻找的目标。在您关于传递--mongodb:native标志的注释中,该标志是npm命令的参数,并且在您自己的项目中使用package.json时确实有效。mongodb包有一个“安装脚本”,用于在节点处理环境中查找该标志。如果该标志存在,那么它将为构建产生另一个进程。因此,如果您在package.json中使用mongodb作为依赖项

代码语言:javascript
复制
{
    "name": "MyProject"
  , "description": "Test"
  , "version": "0.0.1"
  , "dependencies": {
        "mongodb": "*"
    }
}

运行npm install --mongodb:native将会起作用。

至于“手动更新”-这真的只是第一次,这可能需要一段时间,我相信如果有很多依赖项,你可以编写一个脚本来生成它。然而,听起来你有一个相当大的团队,如果是这样的话,自动更新package.json将变得非常丑陋(想想新的开发人员,实验功能,等等)。在开发周期的这一部分对损坏的构建负责并不一定是一个坏主意。

参考文献:

编辑:正如尼克提到的,将'node_modules‘目录添加到.gitignore将阻止这些文件被签入到您的存储库中

票数 6
EN

Stack Overflow用户

发布于 2012-02-08 12:46:39

Afaik,包管理的唯一方法就是你所描述的,尽管我不确定你对wrt package.json有什么不感兴趣。

如果您想严格控制您使用的模块的版本,可以显式地指定版本号。您还可以使用>=X.X.X方法自动获取最新的(高于阈值的),这对于开发目的来说有时是很好的。

这允许你的队友做以下事情:

代码语言:javascript
复制
npm install .

它将安装package.json文件中列出的所有依赖项。这些将安装到./node_modules,但您可以按照您所说的那样对其执行.gitignore操作。

票数 2
EN

Stack Overflow用户

发布于 2014-07-29 07:25:00

为了全面测试包配置并确保模块在最终部署时的行为,我现在使用以下过程。它完全避免了破解你的node_module目录或require()代码的需要,所以当你去部署它时,只需运行即可。

对于内部项目或github的预发布,你可能还想在package.json中设置"private": true,这样npm就会拒绝发布它。

  1. 在git版本控制下创建一个项目目录,并将所有节点模块添加为子目录。子目录名称必须与其包名称匹配。如果您正在使用github,您将希望为每个模块目录创建一个单独的git代码库。它们可以是项目存储库中的git子模块。将node_module添加到您的.gitignore files.
  2. Install中,使用类似npm-server的工具并在项目目录中运行。然后将npm注册表设置为localhost,这样现在npm就可以与您的本地npm服务器通信来获取包。任何它找到的子目录,它将发送。任何它找不到的都将代理到registry.npmjs.org。使用您的本地注册表服务器为您的应用程序创建一个单独的沙箱目录,然后使用$ npm set registry http://localhost:6070/ $ cd ~/projects $ npm-server
  3. Start创建一个新的shell。清除本地npm缓存并重新安装您的应用程序。我只在一行上做了这件事,所以通过shell很容易重做。你可能想把它写成脚本。

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

  • Test你的应用:

$ app ....

  • Deregister本地npm注册表安装完成后:

服务器已完成测试,您可以发布应用程序,然后使用npm- $ npm set registry http://registry.npmjs.org:80/

  • Once停止重新测试部署。

代码语言:javascript
复制
  `$ 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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9185411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档