首页 > 其他分享 >webpack 打包后复制文件

webpack 打包后复制文件

时间:2024-07-18 20:43:20浏览次数:14  
标签:fs const webpack 复制 path copy 打包

写在前面

项目中使用一些特定依赖的时候,会定义全局暴露的变量,不希望 webpack 将其压缩混淆,期望在打包后的成果物中保留原样。

copy-webpack-plugin

首先想到使用 webpack 插件 copy-webpack-plugin,可以直接复制原始资源到输出目录中(非最优解!)
安装依赖

npm install copy-webpack-plugin --save-dev

并在 config.js 中使用

const CopyWebpackPlugin= require('copy-webpack-plugin');
const path = require('path');

plugins: [
  new CopyWebpackPlugin({
    patterns: [
      {
        from: 'src/util.js',
        to: 'public',  // dist 的下级目录
      },
    ],
  }),
],

使用后发现js代码还是被混淆了,问题在于 webpack.config.js 中使用了 optimization.minimizer 进行了全面压缩,在复制过程中也进行了同步操作。
既然打包过程中使用插件复制不可行,可在打包结束后再进行复制。

fs-extra

fs-extra是 fs 模块的拓展模块,简化了复制等操作。

  • 安装依赖:
npm install fs-extra --save-dev
  • 在webpack中使用钩子函数,进行复制操作:
const fs = require('fs-extra')
const path = require('path')

module.exports = {
  plugins: [
	{
        apply: (compiler) => {
          compiler.hooks.afterEmit.tap('AfterEmitPlugin', async (compilation) => {
            // 开发环境跳过处理
            if( process.env.NODE_ENV === 'development' ) return;
            const sourcePaths = [
              path.resolve(__dirname, 'public', 'jsPlugin')
            ];
            const targetPath = path.resolve(__dirname, 'dist', 'public', 'jsPlugin');
            for (const sourcePath of sourcePaths) {
              try {
                await fs.copy(sourcePath, targetPath);
              } catch (err) {
                console.error(`Error copying ${sourcePath}:`, err);
              }
            }
          })
        });
    }
  ]
}

由于仅需要在打包的时候执行以上操作,故在函数中增加开发环境判断。

标签:fs,const,webpack,复制,path,copy,打包
From: https://www.cnblogs.com/_error/p/18310402

相关文章

  • vue中实现 点击复制文本指令
    1.创建copy.js,在里面创建指令import{ElMessage}from"element-plus";exportfunctionclickCopyDirective(app){app.directive('copy',{mounted(el){el.onmousemove=()=>{el.style.cursor='point......
  • 基于PySide6与requests的多功能B站小帮手软件GUI界面设计并打包为exe文件
    小生今日闲来无事,学习了PySide6,并基于PySide6为之前写过的爬虫程序设计了GUI界面,和ffmpeg一起打包成一个exe文件,做成一个面向大众群体的软件。该软件目前仍在持续更新中,目前是0.6.0版本喵。先放一张软件GUI成品图喵:话不多说,我们直接讲解喵~0.导入库下面是本程序所有......
  • 复制文件操作失败 从电脑复制到U盘
    问题如题,从电脑复制文件给U盘时失败,没有更多信息,错误代码什么的。当前用户权限是完全控制,更新了USB驱动,运行磁盘检查工具(chkdsk)来检查和修复磁盘错误,仍未解决。但从U盘给电脑复制文件可以成功。解决方法(暂时)启动电脑到安全模式:按Win+R,输入msconfig并按回车。在“系......
  • 2024-07-18 浅尝rollup-plugin-visualizer——文件打包分析体积大小
    前言:vite+vue项目rollup-plugin-visualizer:一个用于Rollup构建系统的插件,它能够生成可视化的报告,展示你的项目构建后的模块依赖关系和文件大小。仓库:https://github.com/btd/rollup-plugin-visualizer安装:yarnaddrollup-plugin-visualizer配置(vite.config.ts):import{......
  • eureka重启后py_eureka_client库心跳包往eureka slave节点复制失败问题排查
    问题描述peer1节点(python程序往这个节点注册数据)日志:12763988:07-1718:39:45.268WARN[]--[TaskBatchingWorker-target_10.29.46.118-8]c.n.e.c.ReplicationTask:35:ThereplicationoftaskLBS-PROXY/10.30.37.85:lbx-proxy:8089:[email protected]......
  • 2024-07-17 vite打包vue项目,无法正确加载,报错:TypeError: Failed to resolve module sp
    我这会打算打个包扔到线上看看效果,结果线上报错:TypeError:Failedtoresolvemodulespecifier"vue".Relativereferencesmuststartwitheither"/","./",or"../".奇怪,之前还好好的,因为本地调试什么的都正常,甚至昨天都可以打包。我不信邪,遂新建vue项目,做一下测试,这......
  • JS实现复制粘贴图片
    最近在开发公司的可视化编辑器应用,同事们提了一个需求,即可以直接复制图片到编辑器中粘贴,生成对应的图片组件.因为传统的点击上传太麻烦,得先把图片保存到本地,然后再回到编辑器点击上传,选择图片.流程太长了,如果可以直接复制粘贴图片,速度会更快,体验也更好一些.......
  • python的浅复制
    天天用着python写代码,但是其实很多东西原理都不是很清楚,还是得知其所以然,否则处处踩坑关键词:递归、列表、set,边遍历边修改边遍历边修改是一件很危险的行为,小白无知,竟然大胆的使用了,还莫名其妙work了,然后进入了细致的分析。第一种情况defbacktracing(index):globalc......
  • MySQL主从复制过程
    1、主库操作:修改数据库配置文件liunx的my.cnf文件;windows系统的my.ini文件[mysqld]#最大链接数max_connections=1000#主库----start---同一局域网内注意要唯一server-id=100#开启二进制日志功能,可以随便取(关键)log-bin=mysql-bin#记录的数据库(多数据库用逗号......
  • 2024-07-16 使用了.md文件作为路由文件来引用,在开发中能正常显示,打包的时候就报错了:Ca
    我使用了.md文件作为路由文件来引用,在开发中能正常显示,打包的时候就报错了//vite.config.ts import{defineConfig}from'vite'; importvuefrom'@vitejs/plugin-vue'; importmarkdownfrom"vite-plugin-md"; exportdefaultdefineConfig({  plugin......