【问题标题】:How do I prevent npm install from removing packages?如何防止 npm install 删除软件包?
【发布时间】:2018-12-29 08:42:44
【问题描述】:

我正在尝试建立一个包含多个包的开发环境,因此我需要手动安装一些依赖项。更具体地说,我需要测试几个包中的一些本地更改,然后才能将它们推送到 github,所以我不能只是 npm install 顶级,因为它不会接受这些更改。所以我在缺少的包上手动运行第一个npm install,然后尝试运行我的节点代码并查看它仍然缺少哪个包,然后尝试npm install它说缺少什么。

但是,当我去安装第二个包时,它以这条消息结束:

added 3 packages from 4 contributors, removed 799 packages and audited 3 packages in 4.197s

第二次安装实际上删除了 每个 已经安装的包!我直到第三次才注意到这一点,当时我意识到我似乎一遍又一遍地安装相同的东西。

但是,我可以阻止这种特别顽皮的行为并强制 npm 只安装我告诉它的东西,而别管其他所有东西

【问题讨论】:

  • 原来 npm 不仅删除了一些已安装的包,其中一个是我进行了更改但没有保存的本地包,因为我正在尝试设置所有内容!

标签: node.js npm


【解决方案1】:

如果您需要针对修改后的包进行测试,请查看npm link

来自npm link这对于安装您自己的东西非常方便,这样您就可以对其进行处理和迭代测试,而无需不断地重新构建。

假设ba 的依赖项。您对b 进行了更改,并想检查a 是否仍然适用于这些更改。不要在从npm 安装的node_modules 中使用b,而是使用本地修改后的版本:

cd ~/projects/b    # go into the package directory
npm link           # creates global link
cd ~/projects/a    # go into some other package directory.
npm link b         # link-install the package

现在,对~/projects/b 的任何更改都将反映在~/projects/a/node_modules/b/ 中。

【讨论】:

  • 这行得通,但不幸的是,现在我必须将开发中的包的所有依赖项重新安装到它自己的目录中,而不是能够使用当前目录中已经安装的依赖项。跨度>
【解决方案2】:

如果您的开发流程涉及并行更新相互依赖,您可以考虑将项目的包管理器从npm切换到yarn利用纱线的workspaces feature

Yarns 的工作区 让您可以轻松设置一个单个monorepo,其中包含所有相互关联的依赖项,并让 yarn 思考如何将它们链接在一起你的开发环境。

【讨论】:

    【解决方案3】:

    我今天遇到了类似的问题,并认为这可能会在将来对某人有所帮助,我发现如果您同时安装它

    npm install --save package1 package2 package3 ...

    它和我一样工作

    npm install xlsx angular-oauth2-oidc

    但如果单独安装会出现问题

    编辑 2@Michael

    提供的更多信息

    在同一个命令中安装多个包也可以防止钩子被多次安装

    【讨论】:

      【解决方案4】:

      您是否将依赖项保存到 package.json? 保存:npm install --save {package_name}。这会将包保存到 package.json 并使用 npm install 安装。

      你不能特别控制依赖关系(完全)。你已经安装的依赖可能是在使用依赖本身。所以当你删除一个包时,npm 会删除该包的所有依赖和包。

      【讨论】:

        【解决方案5】:

        只需使用Yarn 安装包,而不是在安装包时使用 npm

        yarn add package-name
        

        【讨论】:

          猜你喜欢
          • 2019-05-09
          • 2018-07-28
          • 2012-08-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多