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

Webpack 1.13.2 执行 shell 命令解决 打印时没有背景色和文字颜色的问题

这是因为 Webpack 1.13.2 不支持新的插件钩子 API。Webpack 1 的插件系统使用的是 plugin 方法,而不是 Webpack 4+ 中的 hooks

在 Webpack 1 中,你可以使用以下代码来确保 sed 命令在打包完成后执行:

const { exec } = require('child_process');

module.exports = {
  // 你的其他 Webpack 配置
  plugins: [
        function() {
      this.plugin('compile', function() {
        // `grep -F '@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}' node_modules/bootstrap/dist/css/bootstrap.min.css`
        // `sed -i 's|@media print{\\*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}|@media print{|g' node_modules/bootstrap/dist/css/bootstrap.min.css`,
        exec(
          `grep -F '@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}' node_modules/bootstrap/dist/css/bootstrap.min.css`,
          (error, stdout, stderr) => {
            if (error) {
              // 如果处理过的 (code: 1), 就不再继续执行, 也不用打印错误信息
              if (error.code !== 1) {
                console.error(`执行 grep 命令时出错: ${error.message}`);
              }
              return;
            }
            if (stderr) {
              console.error(`grep 命令输出错误: ${stderr}`);
              return;
            }
            console.log(`grep 命令执行完成`);

            exec(
              `sed -i 's|@media print{\\*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}|@media print{|g' node_modules/bootstrap/dist/css/bootstrap.min.css`,
              (error, stdout, stderr) => {
                if (error) {
                  console.error(`执行 sed 命令时出错: ${error.message}`);
                  return;
                }
                if (stderr) {
                  console.error(`sed 命令输出错误: ${stderr}`);
                  return;
                }
                console.log(`sed 命令执行完成`);
              },
            );
          },
        );
      });
    },
  ],
};

说明

  • 先通过 grep 所有是否需要修改, 如果不需要修改就不改了, 否则在 --watch 模式下会死循环的 build
  • this.plugin('compile', callback)compile 事件在 Webpack 编译开始之前触发,因此 sed 命令会在打包之前执行。
  • exec 命令直接在 compile 钩子中执行 sed,确保替换操作在打包完成后运行。

以上的 plugin 解决了引用 bootstrap 的 css 后, 打印时没有背景色和文字颜色的问题.


http://www.kler.cn/a/393264.html

相关文章:

  • 学法减分交管12123模拟练习小程序源码前端和后端和搭建教程
  • 什么时候需要复写hashcode()和compartTo方法
  • 密码学的基本原理
  • 半导体企业如何利用 Jira 应对复杂商业变局?
  • JVM详解:JVM的系统架构
  • 【Vue】Vue3.0(十九)Vue 3.0 中一种组件间通信方式-自定义事件
  • 【云计算解决方案面试整理】3-7主流云计算平台、云计算架构、安全防护
  • ubuntu内核切换network unclaimed 网卡丢失
  • nginx配置负载均衡详解
  • 【聚类】Kmeans聚类方法概述及其MATLAB实现
  • 前端单元测试框架 引入说明
  • SpringBoot(四)配置拦截器、filter、跨域
  • Day41 | 动态规划 :完全背包应用 完全平方数单词拆分(类比爬楼梯)
  • 【Paper Note】跨音频-视觉匹配识别的3D CNN
  • Apache Doris 技术系列文章:高级特性与性能优化
  • SpringBoot(三)集成日志
  • Java线程的sleep和wait的区别
  • 力扣 LeetCode 349. 两个数组的交集(Day3:哈希表)
  • 一文理解吸收《红黑树》的精华
  • AI生成字幕模型whisper介绍与使用
  • 软件开发中的 Pull Request 工作流:逐步指南
  • springboot读取modbus数据
  • 《AI 使生活更美好》
  • 【go从零单排】gin+gorm理解及实现CRUD
  • 机器学习系列----KNN分类
  • 【Linux网络】Linux网络编程套接字,UDP与TCP