当前位置: 首页 > news >正文

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

目录 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();
http://www.lryc.cn/news/205347.html

相关文章:

  • 非父子组件通信-发布订阅模式
  • iPhone手机分辨率整理
  • 【linux】SourceForge 开源软件开发平台和仓库
  • LabVIEW应用开发——控件的使用(四)
  • MySQL - mvcc
  • SpringMVC 异常处理器
  • 迷你洗衣机哪个牌子好又实惠?内裤洗衣机热销前四榜单
  • SOCKS5代理与网络安全:如何安全地进行爬虫操作
  • onebound电商API接口商品数据采集平台:让数据成为生产力!
  • Kafka磁盘写满日志清理操作
  • SSL证书:网络通信安全的基石
  • Python第三方库 - Flash(python web框架)
  • 基于C#使用winform技术的游戏平台的实现【C#课程设计】
  • springboot缓存篇之内置缓存
  • 微信小程序开发之投票管理及小程序UI的使用
  • EPB功能开发与测试(基于ModelBase实现)
  • 微信小程序:点击按钮出现右侧弹窗
  • EEG脑电信号的具体采集过程
  • SYS/BIOS 开发教程: 创建自定义平台
  • 【Qt样式(qss)-5】qss局部渲染混乱,错乱,不生效的一种原因
  • 最新基于机器学习模型单图换脸离线版软件包及使用方法,本地离线版本模型一键运行(免费下载)
  • 通过VScode连接远程 Linux 服务器修改vue代码
  • Pytorch实现深度学习常见问题
  • ICMP权限许可和访问控制漏洞处理(CVE-1999-0524)
  • Java生成优惠券兑换码并确保唯一性最终添加到数据库
  • 【Linux/脚本/芯片学习】Perl学习
  • 嵌入式实时操作系统的设计与开发(信号量学习)
  • python环境安装教程
  • 【学习笔记】CF1784F Minimums or Medians
  • 如何系列 如何玩转远程调用之OpenFegin+SpringBoot(非Cloud)