【问题标题】:Is there a single command to synchronise npm packages in `package.json`?是否有一个命令可以同步`package.json` 中的 npm 包?
【发布时间】:2016-07-28 00:33:43
【问题描述】:

假设我安装了一些新包,卸载了一些包,更新了一些包到新版本。所有更改都保存到package.json。当我使用这个新的package.json 拉取更改时,是否有一个命令可以在本地安装的包和更新的package.json 中指定的包之间进行同步?

我正在寻找类似的东西:

$ npm syncrhonise

【问题讨论】:

  • npm 安装?如果 package.json 有变化,新的包将会安装。
  • 如果在 package.json 中被移除了,这个包也会被移除吗?
  • npm update你试过这个吗?
  • 没有 npm mange 你的存储库。如果你在这个存储库中做同样的事情,它就在你的磁盘上。如果你想删除一个包,请使用 npm uninstall [/][@]... [-S|--save|-D|--save-dev|-O|--保存可选]
  • npm update 不会删除 package.json 中已删除的包。

标签: node.js npm


【解决方案1】:

npm install 将安装 package.json 中指定的所有包。 npm update 会做同样的事情,但也会去寻找这些包的任何新版本。您可以使用npm uninstall <package> 卸载单个软件包。已经有删除所有包的解决方案here

【讨论】:

  • 如果我是你,我会删除你的节点模块文件夹然后运行npm update
  • 重新下载和获取已经安装的包不会浪费资源吗?
  • 取决于你有多少包。如果你 2000 那么也许但除此之外谁在乎。此外,npm 缓存了很多,因此如果您运行更新,您可能会看到大量 304 代码
  • 一些库需要编译。这是一种解决方法,但是如果我每次都必须运行它,速度会很慢。
【解决方案2】:

我找到了两种方法:

首先 npm prune 将卸载您的 package.json 中未列出的所有内容

npm prune [<name> [<name ...]]

此命令删除“无关”包。如果包名是 提供,则只有与提供的名称之一匹配的包 删除。

无关的软件包是未在列表中列出的软件包 父包的依赖列表。

可在prune 获取文档。

第二您可以删除您的 node_modules/ 文件夹,然后从 package.json 重新安装依赖项。

rm -rf node_modules/
npm install

这将删除当前文件夹中所有已安装的软件包,并且仅 从 package.json 安装依赖项。如果依赖项有 以前安装过的 npm 会尝试使用缓存的版本, 避免再次下载依赖项。

Windows 技巧

由于其文件夹嵌套,Windows 无法删除该文件夹,因为其名称太长。要解决此问题,请安装 RimRaf:

npm install rimraf -g

rimraf node_modules

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 2018-10-28
    • 2016-01-03
    • 2016-08-20
    • 2015-05-13
    • 2022-12-13
    相关资源
    最近更新 更多