更新Vue项目package.json文件方式
作者:Qredsun
文章讨论了由于历史原因,一些已弃用的依赖没有在package.json中移除,导致构建时间过长的问题,解决方法是使用社区工具自动生成使用`nodegenerate-package.js`脚本,根据已安装的依赖进行重建运行
背景
因为历史原因,导致有些依赖已经弃用,但没有在package.json中移除,导致在进行构建时间过长。
解决方法
自动生成
npm init -y # 先生成基础 package.json(如果没有的话) npm install --package-lock-only # 确保 lock 文件是最新的 npx depcheck # 可选,查看未使用的依赖
使用社区工具,完全重建
npx npm-dedupe npx modclean # 清理无用文件(可选)
运行脚本node generate-package.js,根据已安装依赖生成(推荐)
const fs = require('fs');
const path = require('path');
const child_process = require('child_process');
const nodeModulesPath = path.resolve('node_modules');
const allDeps = fs.readdirSync(nodeModulesPath).filter(name => name !== '.bin');
const dependencies = {};
allDeps.forEach(pkg => {
try {
const pkgPath = path.join(nodeModulesPath, pkg, 'package.json');
const pkgJson = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
dependencies[pkg] = pkgJson.version;
} catch (e) {
console.warn(`跳过无效包: ${pkg}`);
}
});
const newPkgJson = {
name: "recovered-project",
version: "1.0.0",
description: "",
main: "index.js",
scripts: {},
dependencies,
};
fs.writeFileSync('package.recovered.json', JSON.stringify(newPkgJson, null, 2));
console.log('已生成 package.recovered.json');
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
