ChatGPT解决这个技术问题 Extra ChatGPT

将模块从 devDependencies 移动到 npm package.json 中的依赖项

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

我发现自己总是这样做:

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

有没有更短的方法呢?

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

G
General Grievance

devDependencies 移动到 dependencies 的速记(prod):

npm i <module_name> -P

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

npm install <module_name> --save-dev

或速记:

npm i <module_name> -D

速记 npm i module-example -D 也适用于从 prod 转移到 dev,以及 npm i module-example -P 从 dev 转移到 prod 依赖项
@Andriy 谢谢,没想到。将更新答案!
如果您使用的是 yarn,则需要先使用 yarn remove <module_name> 从依赖项中删除它,然后使用 yarn add <module_name> --dev 将其重新添加到 devDependencies
如果我只是在 package.json 中将依赖项从 dependencies 移动到 devDependencies 会怎样?锁定文件似乎没有存储有关开发或生产的任何信息
最好用 @ 包含版本以确保它是相同的版本
S
Shakespear

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

npm install <module_name> --save-prod


a
agilgur5

在纱线中:

将模块从 devDependencies 移动到 dependencies

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

将模块从 dependencies 移动到 devDependencies

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

正如评论中所说,该命令实际上删除了模块并将其重新安装到新位置。


这真的正确吗?在不删除和重新添加的情况下,纱线是否无法将事物从 dependencies 移动到 devDependencies
@LondonRob 这是我找到的唯一方法
这不动,这只是删除包并重新安装
@seeker_of_bacon 这里没有在后台运行。您可能会将 &&& 混淆。
请注意,这可能会更改软件包的版本!
e
eedrah

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

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

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


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

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

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

这使所有版本保持不变。


s
sean

如果您的项目还没有 lockfile 或 shrinkwrap 文件,您只需移动 package.json 中的相应行即可。

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


K
Khebab-Case

我试图为使用 Yarn 的人找到这个问题的答案,但它还没有关于这个问题的命令。虽然,我相信它无论如何都不是必需的。物理上(在 Node 模块文件夹中)列出的生产依赖项和 package.json 中列出的开发依赖项之间没有区别,它们将位于同一个位置(node_modules)。因此,如果您需要将依赖项从 devDependencies 切换到依赖项,您可以转到 package.json 并手动移动,而无需运行新的安装或删除依赖项,然后使用 dev 标志再次安装它。对我来说,手动管理 package.json 并没有那么好,但是 Yarn 在所有功能上都没有 NPM 先进,因此这是需要考虑的事情。