在package.json中是否有任何简短的命令将一个模块从devDependencies移动到dependencies ?

我发现自己总是这样做:

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

有没有更简单的方法?


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

NPM install <module_name>——save-prod


从devDependencies转移到dependencies的简写(prod):

npm i <module_name> -P

如果你想做相反的事情(即将一个模块从dependencies移动到devDependencies),只需做:

npm install <module_name> --save-dev

或简写:

npm i <module_name> -D

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

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


纱:

将一个模块从devDependencies移动到dependencies:

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

将一个模块从dependencies移动到devDependencies:

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

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


使用npm或yarn命令的问题是,重新添加的版本有可能与当前使用的版本不同。如果这就是你想要的——无论是搬家还是升级——那么就使用公认的答案吧。

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

锁文件不包含任何关于是否依赖于prod或dev的信息,因此不需要更新。你可以在之后进行npm/yarn安装来修复锁文件中的任何标志。


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

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

这使得所有版本都保持完整。


I was trying to find an answer for this question for people that uses Yarn, but it hasn't a command for this matter yet. Although, I believe it is not essential anyway. Physically (in the Node modules folder) there are no difference between a dependency listed for production and the ones listed for development in your package.json, they'll go to the same place (node_modules). So, if you need to switch a dependency from devDependencies to dependecies you can go to your package.json and move manually with no need to run a new install or remove the dependency and then install it again with the dev flag. For me, it's not so great at all to manage the package.json manually, but Yarn is not as advanced as NPM in all functionalities, thus that's a thing to consider.


对于Yarn,我手动将它们移动到包中。Json,然后运行yarn install。纱线锁文件没有得到更新,所以我认为这是好的。