【问题标题】:Move a module from devDependencies to dependencies in npm package.json将模块从 devDependencies 移动到 npm package.json 中的依赖项
【发布时间】:2018-04-04 19:21:58
【问题描述】:

是否有任何简短的命令可以将 package.json 中的模块从 devDependencies 移动到 dependencies

我发现自己总是这样做:

npm uninstall <module_name> --save-dev 
npm install <module_name> --save

有没有更短的方法来解决这个问题?

【问题讨论】:

  • 如果您关心在package-lock.json 中维护相同的版本,并且只是将依赖项标记为开发依赖项,那么此答案中提到的方法应该是可行的方法:stackoverflow.com/a/57032462/3575560

标签: npm package.json


【解决方案1】:

如果您想做相反的事情(即将模块从 dependencies 移动到 devDependencies),只需执行以下操作:

npm install <module_name> --save-dev

或简写:

npm i <module_name> -D

devDependencies 移动到dependencies(产品)的简写:

npm i <module_name> -P

【讨论】:

  • 为我工作,v5.6
  • 简写 npm i module-example -D 也可以从 prod 转移到 dev,以及 npm i module-example -P 从 dev 转移到 prod 依赖项
  • @Andriy 谢谢,没想到。将更新答案!
  • 如果您使用的是 yarn,您需要先使用 yarn remove &lt;module_name&gt; 从依赖项中删除它,然后使用 yarn add &lt;module_name&gt; --dev 将其重新添加到 devDependencies 中
  • 应该是公认的答案!
【解决方案2】:

是的!将模块从devDependencies 移动到dependencies

npm install <module_name> --save-prod

【讨论】:

    【解决方案3】:

    在纱线中:

    将模块从devDependencies 移动到dependencies

    yarn remove <module_name> --dev && yarn add <module_name> 
    

    将模块从dependencies 移动到devDependencies

    yarn remove <module_name> && yarn add <module_name> --dev
    

    正如cmets中所说,该命令实际上是删除模块并在新位置重新安装。

    【讨论】:

    • 真的是这样吗?在不删除和重新添加的情况下,纱线是否无法将东西从dependencies 移动到devDependencies
    • @LondonRob 这是我找到的唯一方法
    • 这个不动,这只是删除包重新安装
    • @seeker_of_bacon 这里没有在后台运行。您可能会将&amp;&amp;&amp; 混淆。
    【解决方案4】:

    使用npmyarn 命令的问题在于,重新添加的版本可能与当前使用的版本不同。 如果这是是您想要的 - both 移动和升级 - 然后继续使用已接受的答案。

    如果没有,只需手动编辑您的package.json,将行从devDependencies 对象移动到dependencies 对象(必要时创建它)。你也可以去另一个方向。

    lock 文件不包含任何关于事物是 prod 还是 dev 依赖项的信息,因此不需要更新。 之后您可以执行npm/yarn install修复锁定文件中的任何标志。

    【讨论】:

    • 虽然package-lock.json 中只有一个dependencies 顶级部分,但每个条目都可能有一个dev 标志来指示它是一个开发依赖项还是一个传递依赖项。请参阅docs.npmjs.com/files/package-lock.json#dev“如果 [dev 为] true,则此依赖项要么是仅顶层模块的开发依赖项,要么是一个传递依赖项。对于既是顶层开发依赖项又是传递依赖项的依赖项,这是错误的顶层非开发依赖的依赖。”
    【解决方案5】:

    使用 npm install 的问题是你最终得到了更新的版本。对我有用的是:

    1. 将它们移动到预期的部分(开发或产品)
    2. node_modules 文件夹中删除它们
    3. 执行npm install

    这使所有版本保持不变。

    【讨论】:

      【解决方案6】:

      如果您的项目还没有 lockfile 或 shrinkwrap 文件,您可以简单地移动 package.json 中的相应行。

      (我不建议不使用锁文件)

      【讨论】:

        【解决方案7】:

        我试图为使用 Yarn 的人找到这个问题的答案,但它还没有解决这个问题的命令。 虽然,我相信它无论如何都不是必需的。

        在物理上(在 Node 模块文件夹中),为生产列出的依赖项和在 package.json 中列出的用于开发的依赖项之间没有区别,它们将位于同一个位置(node_modules)。

        因此,如果您需要将依赖项从 devDependencies 切换到 dependecies,您可以转到您的 package.json 并手动移动,无需运行新安装或删除依赖项,然后使用 dev 标志再次安装。

        对我来说,手动管理 package.json 并没有那么好,但是 Yarn 在所有功能上都没有 NPM 先进,因此需要考虑。

        【讨论】:

          猜你喜欢
          • 2018-04-23
          • 1970-01-01
          • 1970-01-01
          • 2016-08-02
          • 1970-01-01
          • 1970-01-01
          • 2020-07-28
          • 2013-01-06
          • 1970-01-01
          相关资源
          最近更新 更多