首页 前端知识 npm run build打包jquery项目

npm run build打包jquery项目

2024-08-04 22:08:36 前端知识 前端哥 371 73 我要收藏

build.js 文件代码如下

const fs = require('fs');
const path = require('path');
  
// 指定要打包的HTML文件路径和输出目录路径
var pathName = "./";
const outputDir = 'dist';
// 要忽略的文件夹
const ignore =['dist','.git','.idea','node_modules']
// 匹配html文件
var ipReg = /\.(htm|html|js|version)$/i;

// 定义dist目录路径  
const distDir = path.resolve(__dirname, 'dist');
// 创建输出目录(如果不存在)
if (!fs.existsSync(outputDir)) {
  fs.mkdirSync(outputDir);
}else{
  // 删除dist目录
  fs.rmdirSync(distDir, { recursive: true });
  // 再创建
  fs.mkdirSync(outputDir);
}
var jsContent = `// 轮播通知
var noticeLists = []
// 规章制度
var rulesLists = []
// ERP使用手册
var ErpManualList = []
// 公司通用模板
var globalTemplates = []
// 项目资料模板
var projectTemplates = []
// 产品白皮书
var ProductWhitePaper = []
// 公共服务
var publicService = []`;
// 遍历源文件夹中的所有文件和子文件夹
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);
      if(fileOrDir=='ErpFileJson.js'){
        // 将新内容写回文件  
        fs.writeFile(subSubTargetPath, jsContent, err => {  
          if (err) {  
            console.error(err);  
            return;  
          }
        });
      }
    } else if (fs.lstatSync(subSubSourcePath).isDirectory() && subSubSourcePath.indexOf("\\file\\")<0) {
      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 (ignore.indexOf(fileOrDir) < 0 && fs.lstatSync(sourcePath).isDirectory()) {
    xunhuan(targetPath,sourcePath);
  }
});

主要是用node代码 读取文件内容判断文件还是文件夹,文件夹就继续循环判断,将目录结构保留,一起打包到dist文件
写这个的原因 也是因为同事不知道发给运维哪些文件,有些文件只是我们开发要,并不部署的所以就过滤掉。

转载请注明出处或者链接地址:https://www.qianduange.cn//article/14773.html
标签
评论
发布的文章

RapidJSON介绍

2024-08-14 00:08:38

jQuery 4 beta 震撼发布

2024-08-14 00:08:36

cJSON的使用

2024-08-14 00:08:36

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!