首页 > 解决方案 > 忘记 npm install 中的 --save - 如何在 package.json 中识别和添加缺失的包?

问题描述

删除 package-lock.json 和 node_modules 后,我遇到了几个问题,并发现我安装了很多没有 --save 或 --save-dev 的包。

我现在想知道如何解决这个问题。我的项目中甚至不需要我的一些包。

我需要确定哪些包是有用的,所以我使用了 depcheck https://www.npmjs.com/package/depcheck,它并不能完全按照我的意愿工作,因为实际上使用了一些“未使用的 devDependencies”,而且我不要认为缺少的依赖项在这里......

 depcheck .                    
unused dependencies             
 depcheck                      
 instafeed.js                  
 leaflet                       
 leaflet.icon.glyph            
 v-autocomplete                
 vue2-leaflet                  
unused devDependencies          
 autoprefixer                  
 browser-jsonp                 
 css-mqpacker                  
 cssnano                       
 gulp                          
 gulp-postcss                  
 gulp-sass                     
 laue                          
 lodash.orderby                
 postcss-assets                
 resolve-url-loader            
 sass                          
 sass-loader                   
 v-datatable-light             
 vee-validate                  
 vue-bootstrap-datetimepicker  
 vue-country-region-select     
 vue-instagram                 
 vue-resource                  
 vue-slider-component          
 vue-stack-grid                
 vue-star-rating               
 vue-tel-input                 
 vuejs-datepicker              
missing dependencies            
 laravel-elixir                
 react                         
 react-dom 

例如,我遇到了很多关于 postcss-loader、css-loader、style-loader 等的错误,而这些根本不会出现在这里。而且我的项目在 vuejs 中,所以我不明白 react 在这里做什么......

所以我想用它们的实际版本识别丢失的包(可能来自 package-lock.json?),并将它们保存在 package.json 中。

这可能吗?

非常感谢,这些会救我的命:D

编辑:我看到这篇文章How to npm install --save all packages already installed? 像这样的 npm install ls node_modules--save 将是一个好的开始,但我想添加一个版本(不再工作)

[编辑] 感谢您的回答,我在 test.js 文件中添加并执行了它(节点 test.js)

const fs = require('fs');
const packageLock = require('./package-lock.json');
const package = require('./package.json');

package.dependencies = Object.entries(packageLock.dependencies)
.reduce((deps, [dep, { version }]) => Object.assign(deps, { [dep]: version }), {});

fs.writeFileSync('./package-new.json', JSON.stringify(package, null, 2));

现在我有一个包含所有依赖项的文件,并且可以将必要的依赖项添加到我的 package.json 文件中。

标签: npmpackage.json

解决方案


像这样的东西怎么样npm install --save $(ls node_modules)


推荐阅读