删除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中,所以我不知道在这里做什么...
所以我想用实际版本识别丢失的软件包(也许是来自package-lock.json?),并将它们保存在package.json中。
这可怜吗?
非常感谢,这些可以挽救我的生命:D
编辑:我看到了这篇文章How to npm install --save all packages already installed?和类似的npm install ls node_modules
--save是一个好的开始,但是我想添加一个版本(不再起作用了)< / p>
[EDIT]感谢您的回答,我将其添加到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文件中。
答案 0 :(得分:0)
npm install --save $(ls node_modules)