npm run build打包jquery项目

build.js 文件代码如下

复制代码
const fs = require('fs');
const path = require('path');
  
// 指定要打包的HTML文件路径和输出目录路径
var pathName = "./";
const outputDir = 'dist';


// 匹配html文件
var ipReg = /\.(htm|html|js|version)$/i;

// 创建输出目录(如果不存在)
if (!fs.existsSync(outputDir)) {
  fs.mkdirSync(outputDir);
}  

// 遍历源文件夹中的所有文件和子文件夹
function xunhuan(subTargetPath,subSourcePath) {
  fs.mkdirSync(subTargetPath, { recursive: true });
  // 递归复制子文件夹里的文件和子文件夹
  fs.readdirSync(subSourcePath).forEach((fileOrDir) => {
    const subSubSourcePath = path.join(subSourcePath, fileOrDir);
    const subSubTargetPath = path.join(subTargetPath, fileOrDir);
    if (fs.lstatSync(subSubSourcePath).isFile()) {
      fs.copyFileSync(subSubSourcePath, subSubTargetPath);
    } else if (fs.lstatSync(subSubSourcePath).isDirectory()) {
      xunhuan(subSubTargetPath,subSubSourcePath)
    }
  });
}
// 遍历源文件夹中的所有文件和子文件夹
fs.readdirSync(pathName).forEach((fileOrDir) => {
  // 源文件或文件夹的完整路径  
  const sourcePath = path.join(pathName, fileOrDir);
  // 目标文件或文件夹的完整路径  
  const targetPath = path.join(outputDir, fileOrDir);

  // 判断是文件还是文件夹
  if (fs.lstatSync(sourcePath).isFile()) {
    if (ipReg.test(fileOrDir) && fileOrDir.indexOf('proxy') < 0 && fileOrDir.indexOf('build') < 0 && fileOrDir.indexOf('server') < 0) {
      // 如果是文件,则直接复制
      fs.copyFileSync(sourcePath, targetPath);
    }
  } else if (fileOrDir != 'dist' && fileOrDir != '.git' && fileOrDir!="node_modules" && fs.lstatSync(sourcePath).isDirectory()) {
    xunhuan(targetPath,sourcePath);
  }
});

主要是用node代码 读取文件内容判断文件还是文件夹,文件夹就继续循环判断,将目录结构保留,一起打包到dist文件

写这个的原因 也是因为同事不知道发给运维哪些文件,有些文件只是我们开发要,并不部署的所以就过滤掉。

相关推荐
晓得迷路了1 分钟前
栗子前端技术周刊第 97 期 - Viteland:8 月回顾、Redux Toolkit 2.9、Nuxt 4.1...
前端·javascript·nuxt.js
前端双越老师4 分钟前
前端开发 AI Agent 智能体,需要掌握哪些知识?
前端·node.js·agent
EndingCoder5 分钟前
Electron 安全性最佳实践:防范常见漏洞
前端·javascript·electron·前端框架·node.js·桌面端
学前端搞口饭吃13 分钟前
React props的使用
前端·javascript·react.js
灵感__idea36 分钟前
JavaScript高级程序设计(第5版):前端的能力边界
前端·javascript·程序员
华洛37 分钟前
SEO还没死,GEO之战已经开始
前端·javascript·产品
IT_陈寒40 分钟前
Python性能优化:5个被低估的魔法方法让你的代码提速50%
前端·人工智能·后端
As33100101 小时前
Chrome 插件开发入门指南:从基础到实践
前端·chrome
不想上班只想要钱1 小时前
vue3 ts:声明的一个数组不能将类型“boolean”分配给类型“never”。
前端·vue.js
OEC小胖胖1 小时前
Next.js 介绍:为什么选择它来构建你的下一个 Web 应用?
开发语言·前端·web·next.js