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

2024-01-10

我即将使用 node.js 做一个大型项目,目前正在尝试解决一些问题。

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

我正在寻找的是:

npm install packagename
npm dump_modules_into_file

因此参与该项目的其他人都可以这样做:

npm install_or_update_modules_from_file

我不想拥有node_modules由我的 git 存储库跟踪。基本上我想要类似于 symonfy2 处理方式的东西bundles http://symfony.com/doc/2.0/cookbook/workflow/new_project_git.html.

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

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


package.json将实现您正在寻找的东西。在您关于通过的评论中--mongodb:native标志,该标志是一个参数npm命令和does使用时工作package.json在你自己的项目中。 mongodb 包有一个“安装脚本”,它在节点处理环境中查找该标志。如果该标志存在,那么它会生成另一个构建进程。所以,如果你的 package.json 中有 mongodb 作为依赖项

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

Running npm install --mongodb:native will work.

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

参考:

  • https://github.com/christkv/node-mongodb-native/blob/master/install.js https://github.com/christkv/node-mongodb-native/blob/master/install.js
  • http://package.json.nodejitsu.com/ http://package.json.nodejitsu.com/(参见“脚本”部分)

EDIT:正如尼克提到的,将“node_modules”目录添加到.gitignore将阻止任何这些文件被签入您的存储库

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Node.js npm 和 git 的最佳工作流程 的相关文章

  • github 网络图查看器的替代品? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 当我单击 github 上的 forks 按钮时 我想获得一个摘要 这就是我使用网络图查看器获得的结果 但它并不完全理想 我会做什么ide
  • 如何在 NPM 中通过 package.json 使用 gitlab 存储库

    我正在开展一个内部项目 想在小组内分享一个工具 但如果我使用 npm 工具 它要么请求模块已在 npm 网站或公共 git 存储库上注册 我正在使用 gitlab 并且有一个私人令牌 git https gitlab ci token
  • socket.io 切换命名空间

    我目前正在与 socket io 进行简单的聊天 基础知识已经可以工作 但现在我正在尝试实现 2 个不同的命名空间 我希望客户端能够通过单击按钮从一个命名空间 支持聊天 切换到另一个命名空间 朋友聊天 服务器端 default namesp
  • express.js less 编译器:无法工作

    app js app use express compiler src dirname public enable less app use express static dirname public 在我的玉观中 link rel sty
  • 如何获取node.js中调用函数的文件路径?

    以下是来自三个文件的一些示例代码 foo js var myFunc require myFunc function foo myFunc message bar js var myFunc require myFunc function
  • 如何在git中定义ESC字符?

    我想在 git 输出中使用着色 例如 git log decorate color 当我发出这个命令时 我得到的输出看起来像ESC 1 32m where ESC是反色的 在我看来 这是一个有效的转义序列 除了 033必须发送而不是字符E
  • 有没有办法显示 Visual Studio 执行的 Git 命令? [复制]

    这个问题在这里已经有答案了 在 Visual Studio Code 中 有一个 显示 Git 输出 菜单项 显示最近运行的 Git 命令 有关其外观的示例 请参阅3 35 在这个视频中 https code visualstudio co
  • SetCookie 标头未存储

    我目前正在制作一个 Web 应用程序 其中 API 为 Node express js 前端为 Vue js 对于身份验证 我设置了 JWT 并通过 cookie HttpOnly 发送值 SetCookie 位于 Chrome Firef
  • 当我尝试连接本地主机时出现 ERR_SSL_PROTOCOL_ERROR

    我开始研究 Node js 并尝试将 ionic 应用程序与我创建的后端 NodeJS 应用程序连接 但出现此错误 OPTIONS https localhost 3000 插入 https localhost 3000 insert净 E
  • AngularJs:显示来自 git 或 Bower 的版本号

    我创建了一个 Angular 应用程序 我想在屏幕上显示应用程序的当前版本号 目前我已将其实现为常量 application constant constants VERSION 1 1 2 但这需要我在每个新版本上更新常量 我使用 Bow
  • 如何在cygwin下更改git中文件的大小写?

    我们在区分大小写 不敏感的混合环境 cywgin linux 中工作 今天有人通过重命名文件 将 S 更改为 s 对我们的工作流程造成了小破坏 这导致了各种有趣的跨分支合并问题 而且说实话 没有人完全确定发生了什么 在 cygwin 的 g
  • npm 命令未在请求中发送授权令牌 - 无法进行身份验证

    当我发出 npm 命令时遇到此问题 我收到一条消息 指出它无法通过 npm 注册表 托管在 Azure DevOps 中 进行身份验证 我怀疑这可能是因为它没有生成授权标头并发送它连同请求 例如 当我发出这些命令时 npm ping or
  • 在原子操作中测试和递减?

    我刚刚发现了一个恼人的错误 它基本上是一个竞争条件 为了便于论证 我们假设一个非常简单的文档结构 例如 id XXX amount 100 集合中存在数百个这样的文档 并且由多个编写器访问 这些编写器有效地尝试将数量降低任何值 但绝不会低于
  • Node.js 连接 createServer 代码

    我正在阅读 Node js Connect 版本 2 15 0 Create a new connect server return Function api public function createServer function ap
  • 每次页面重新加载时都会出现新的 Google 登录库提示

    在我的项目中 我使用常规弹出客户端 JS 身份验证 平台客户端 https developers google com identity sign in web sign in 我从旧版 Google Sign 迁移到新版 Google I
  • 节点持久-NodeJS

    谁详细向我解释了如何操作以下说明 var storage require node persist var account username Morris password test storage initSync storage set
  • 如何快速查看哪个 Git 分支是最新的?

    例如 如果 git 上有 4 个分支 如下所示 branch1 branch2 current branch branch3 newest commits here master oldest 我的问题是 如何从 git 命令行检查我当前的
  • 如何在 ionic 应用程序中使用 socket.io

    我正在使用 ionic 创建一个应用程序cordova and angular 我必须使用 IP 地址和端口号发出请求 到插座 我读过有关 socket io 的内容 我对如何安装感到困惑套接字 io以及如何与 Angular JS 和 N
  • 如何在node.js中找到两个地理点之间的距离?

    如何使用 node js 查找两个地理点 经度和经度的集合 之间的距离 我有使用谷歌地图距离矩阵服务的客户端 JavaScript 代码 我想在服务器端javascript中做同样的事情 在node js router js或datamod
  • NodeJS 和 PHP (Laravel) 集成用于 Socket.IO 实时聊天

    目前我有一个我写过的网站PHP通过Laravel 框架 我已经使用写了一个实时聊天nodeJS with 套接字IO and Express现在我想做的是将它集成到我已经编写的 Laravel 网站中 问题是聊天必须在主页中 当前由 Lar

随机推荐

  • 无法在 dockerfile 内执行 gcloud init

    我制作了一个 Dockerfile 用于将我的 node js 应用程序部署到 google 容器引擎中 它如下所示 FROM node 0 12 COPY google cloud sdk google cloud sdk RUN goo
  • 如何使用withColumn计算列中的最大值?

    我正在尝试计算 Spark 中以下 DataFrame 的最大值1 6 1 val df sc parallelize Seq 1 2 3 toDF id 第一种方法是选择最大值 它按预期工作 df select max id show 第
  • 库初始化——Win32 实现中的 pthread_once

    你好 我正在尝试为我的库创建一个完全线程安全的初始化函数 但我无法轻松找到 pthread once 的替代方案 这应该很容易解决问题 我已经看到这段代码 void libInit void ifdef WIN32 static volat
  • 在Python中将字符串从sha1哈希转换为base 64

    我有一个小的 C 函数 我想在 Python 中使用它 但是我不确定如何使用 hashlib 来完成相同的结果 该函数接收一个字符串并返回该字符串的 sha1 哈希值的 Base64 编码 private string ConvertStr
  • App Engine、事务和幂等性

    请帮我找出我的误解 我正在 App Engine 上编写 RPG 玩家采取的某些行动会消耗一定的统计数据 如果统计数据达到零 玩家就无法采取更多行动 不过 我开始担心欺骗玩家 如果玩家非常快地发送两个动作 并且彼此相邻怎么办 如果减少统计数
  • Opengl , GLSL 中的视差法线贴图问题

    我在视差法线贴图方面遇到了严重的问题 我不知道问题出在哪里 OpenGL 2 0 C WinXP My results 绿色是法线 蓝色是切线 红色是副法线 双切线 法线贴图工作正常 所以我认为切向量很好 奇怪的是 在一些立方体的墙上 视差
  • 与 Python 的 range 函数等效的 OCaml 习惯用法是什么?

    我想创建一个从 1 到 的整数列表n 我可以在 Python 中使用range 1 n 1 并在 Haskell 中使用 take n iterate 1 1 正确的 OCaml 习惯用法是什么 我不知道有什么习惯用法 但这里有一个使用中缀
  • java Hibernate 对分离对象的不必要查询

    我正在使用 hibernate 和 c3p0 连接池插入 更新和删除许多分离的对象 问题是 hibernate 不会批处理语句 而是执行 select session tx read only 在每个 session persist ins
  • ManageIQ 相对于 OpenStack Horizo​​n 有哪些优势?我目前正在 Horizo​​n 上工作,但想知道 ManageIQ 是否更好 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 这两者有什么区别 我想从仪表板将资源控制到用户级别 只是想知道使用 ManageIQ 或 Horizo n 有哪些优势 什么是更好的选择 这取决
  • Python:如何获取消息框中的输入框?

    我刚刚意识到我在游戏开始时没有询问用户的名字 所以我尝试了这段代码 Label root text What is you name grid row 0 column 0 e1 self Entry root e1 self grid r
  • BluetoothSocket 未连接到目标设备

    我正在尝试通过蓝牙将我的设备连接到另一台设备 但是当我选择要连接的设备时 我得到一个IOException saying 读取失败 套接字可能关闭或超时 读取 ret 1 只是为了说明我的应用程序是如何工作的 我有一个RecyclerVie
  • 使用自定义分区器在 Pyspark 中对数据帧进行分区

    寻找有关在 Pyspark 中使用自定义分区程序的一些信息 我有一个数据框 保存各个国家 地区的国家 地区数据 因此 如果我对国家 地区列进行重新分区 它会将我的数据分配到 n 个分区 并将类似的国家 地区数据保留到特定分区 当我看到使用时
  • Google App Engine 上的 Python 2.7 无法使用 lxml.etree

    我一直在尝试在谷歌应用程序引擎的 python 2 7 上使用 html5lib 和 lxml 但是当我运行以下代码时 它给我一个错误 提示 NameError 全局名称 etree 未定义 是否无法在谷歌应用程序引擎上使用lxml etr
  • WiX 技巧和技巧

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我们使用 WiX 已有一段时间了 尽管人们常常抱怨其易用性 但它的运行情况相当不错 我正在寻找
  • 具有 HTML 导入功能的聚合物自定义元素样式

    我有一个自定义元素 它使用通过 HTML 导入导入的样式 从 Chrome Stable 35 0 1916 114 和 Canary 37 0 2008 2 canary 开始 这些样式不再应用于自定义元素内定义的模板 Safari 7
  • 如何使用未知大小数组的引用来调用函数?

    考虑一个有效的代码 template
  • CakePHP 2.1 Auth->login() 不起作用,但添加用户可以

    我在 stackoverflow 上搜索了很多帖子来寻找答案 也许我只是忽略了一些东西 但我似乎无法让 this gt Auth gt login 工作 我尝试了其他帖子中的许多不同建议 在描述我尝试过的其他方法时 我会尽可能全面 我确实已
  • ASP.NET/IIS:注销所有用户

    在 IIS 上运行的 ASP NET 3 5 应用程序中 如何强制对所有当前登录和经过身份验证的用户进行 取消身份验证 iisreset似乎没有做到这一点 更改身份验证表单名称将需要所有用户进行新的身份验证 From
  • Laravel 5.2 artisan 优化 - php_strip_whitespace 无法打开流:没有子进程

    自从从 5 1 升级到 Laravel 5 2 后 运行时工匠优化在 CircleCI 上 运行 PHP 5 6 14 我得到 ErrorException php strip whitespace var laravel project
  • 使用 Node.js npm 和 git 的最佳工作流程

    我即将使用 node js 做一个大型项目 目前正在尝试解决一些问题 在早期的节点项目中 我有一个额外的文件夹来存放我使用的所有节点模块 这个文件夹被 git 忽略 我通过 git 子模块管理版本和更新 这并不容易 没有依赖项 更新到新版本