使用webpack/rollup打包时将文件中部分内容动态替换

本文介绍了如何在Webpack和Rollup构建中使用`string-replace-webpack-plugin`和`rollup-plugin-replace`来实现全局内容替换,包括配置示例和多条件替换方法。
摘要由CSDN通过智能技术生成

要求:在打包时将全局中的部分内容替换,混淆视听

webpack打包写法:

1.下载插件:string-replace-webpack-plugin

npm install --save-dev string-replace-loader 

2.在webpack.config.ts中引入并配置

const StringReplacePlugin = require('string-replace-webpack-plugin')



module.exports = {
  module: {
    rules: [
      {
        test: /(agent|index)\.ts$/, //这里写匹配文件,我项目中需要将agent.ts和index.ts文件夹的数据替换
        use: [
          {
            loader: 'string-replace-loader',
            options: {
              search: 'oldValue',
              replace: 'newValue',
            },
          },
        ],
      },
    ],
  },
}
/**
其中option还有其他写法
1.正则替换
    options: {
              search:new RegExp(`\\b${keyword}\\b`, 'g'),
              replace: 'newValue',
            },



*/

 当替换内容不止一条时,使用multiple进行多条件替换

const key: string[] = [
  'user_Agent',
  'userAgentClientHints',
  'fonts_',
  'domBlockers',
]

//循环创建替换条件
function convertArray(arr: string[]): { search: RegExp; replace: string; flags: string }[] {
  return arr.map((item, index) => ({
    search: new RegExp(`\\b${item}\\b`, 'g'),
    replace: JSON.stringify(index + 1),
    flags: 'g',
  }))
}
const replaceArr = convertArray(key)

module.exports = {
  module: {
    rules: [
      {
        test: /(agent|index|confidence)\.ts$/,
        use: [
          {
            loader: 'string-replace-loader',
            options: {
              multiple: replaceArr,
            },
          },
        ],
      },
    ],
  },
}

使用rollup打包替换

1.安装依赖包 rollup-plugin-replace

npm i @rollup/plugin-replace

2.在rollup.config.ts引入并配置

import replace from 'rollup-plugin-replace'


export default {
  input: 'src/main.ts', // 你的入口文件
  output: {
    file: 'dist/bundle.js',
    format: 'umd',
  },
  plugins: [
    replace({
      include: ['src/**/*.ts'], // 匹配所有的 TypeScript 文件
      values: {
        demo: 'nihao', // 将 'demo' 替换为 'nihao'
      },
    }),
    // 其他插件...
  ],
};

 多条件引入

import replace from 'rollup-plugin-replace'

const key: string[] = [
  'user_Agent',
  'userAgentClientHints',

]
const transformedKey: { [key: string]: string } = {}

for (let i = 0; i < key.length; i++) {
  transformedKey[key[i]] = String(i + 1)
}


export default {
  input: 'src/main.ts', // 你的入口文件
  output: {
    file: 'dist/bundle.js',
    format: 'umd',
  },
  plugins: [
    replace({
      replace({
      include: ['src/**/index.ts', 'src/agent.ts'],
      values: transformedKey,
             }),
    }),
    // 其他插件...
  ],
};

打包效果:

修改前:

修改后(字段替换为列表中的索引):

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值