Webpack打包时替换掉node_modules中的js文件的方法

问题背景

在Webpack项目中,需要自动替换掉已安装的库中的部分js文件。说是覆盖,其实是一种“换源”,在检测到目标位置文件被使用时,将其resource指向我们真正希望使用的文件。

具体方法

webpack.config.js文件中,使用webpack自带的NormalModuleReplacementPlugin插件

JavaScript
const path = require('path')
const webpack = require('webpack')

//...

module.exports = {
  //...
  plugins: [
    new webpack.NormalModuleReplacementPlugin(
      /UnrealBloomPass\.js/, //正则匹配UnrealBloomPass.js,其中\.是.的转义
      result => {
        if ( result.resource ) {
          //将源修改为我们真正希望使用的文件
          result.resource = path.resolve(__dirname, '../src/assets/UnrealBloomPass.js')
        }
      }
    ),
    // 根据webpack版本不同,有时使用request关键字,如下所示
     new Webpack.NormalModuleReplacementPlugin(
          /VabTabsBar\/index\.vue/, 
          result => {
            if (result.request ) {
              result.request = resolve('public/static/replace_stuff/index.vue')
            }
          }
     )
  ]
}

以上代码实现的功能:采用正则匹配方式检测到node_modules中的UnrealBloomPass.js被使用时(,也可以使用路径,在这里我直接使用的是文件名),将其源替换为我们希望真正使用的文件:src/assets/UnrealBloomPass.js

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇