当前位置:首页 > 编程笔记 > 正文
已解决

【nodejs脚本】为文件夹中的所有node项目执行命令 npm install 并收集error日志

来自网友在路上 162862提问 提问时间:2023-10-26 08:25:48阅读次数: 62

最佳答案 问答题库628位专家为你答疑解惑

目录 im 下有很多的node项目,我需要批量为这些项目执行 npm install,另外npm的error信息需要单独收集至log文件中

var fs = require('fs');
var util = require('util');
var exec = util.promisify(require('child_process').exec);var projectsDirectory = '.';
var logFilePath = './npm_install_errors.log'; // 更改为您的日志文件路径
var br = `⬆⬆⬆ ---------------------------------------------------------------- ⬆⬆⬆ \n\n`;async function runNpmInstall(projectDir) {try {var errorContent = '';var { stdout, stderr } = await exec('npm install', { cwd: projectDir });console.log(`在 ${projectDir} 执行 'npm install' 完成。`);console.log(br);if (stdout) console.log(stdout);if (stderr) {errorContent = `在 ${projectDir} 执行 'npm install' 时出错: >>> \n ${stderr} \n` + br;console.error( errorContent );// 将错误信息写入日志文件fs.appendFile(logFilePath, errorContent, (err) => {if (err) console.error(`无法追加到日志文件: ${err}`);});}} catch (error) {errorContent =  `在 ${projectDir} 执行 'npm install' 时出错: >>> \n ${error.message} \n` + br;// 将错误信息追加到日志文件fs.appendFile(logFilePath,errorContent, (err) => {if (err) console.error(`无法追加到日志文件: ${err}`);});}
}async function main() {try {// 读取目录下的所有文件夹var projectFolders = await fs.promises.readdir(projectsDirectory, { withFileTypes: true });// 遍历每个文件夹for (var folder of projectFolders) {if (folder.isDirectory()) {var projectDir = `${projectsDirectory}/${folder.name}`;var packageJsonPath = `${projectDir}/package.json`;// 检查是否存在 package.json 文件if (fs.existsSync(packageJsonPath)) {console.log(`在 ${projectDir} 执行 'npm install'...`);await runNpmInstall(projectDir);} else {console.log(`在 ${projectDir} 找不到 package.json 文件,跳过。\n\n`);}}}} catch (error) {var errorContent = `发生错误: ${error.message} \n` + br;;// 将错误信息追加到日志文件fs.appendFile(logFilePath, errorContent, (err) => {if (err) console.error(`无法追加到日志文件: ${err}`);});}
}main();
查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"【nodejs脚本】为文件夹中的所有node项目执行命令 npm install 并收集error日志":http://eshow365.cn/6-24940-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!