写过 替换字符串 中指定文本的loader 和 删除项目中的 console.log() 打印语句。

    思路:

    1. 在 src 目录下面 新建一个 loaders 目录
    2. 编写项目需要的 loader
    3. 比如编写一个 移除 console.log() 的loader
    4. 新建一个 removeConsoleLog.js 文件
    5. module.exports 导出一个函数,这个函数接受一个参数,source,源文件字符串
    6. 在函数中对这个字符串 使用 replace + 正则 把console.log 替换为 空文本
    7. 返回处理后的字符串
    8. loader 也可以接受参数,可以借助于 loader-utils 工具获取参数,也可以使用 this.query 获取
    9. module.export 对外暴露的函数,不能使用箭头函数,因为 loader 中的 this 是有上下文的

    使用 自定义 loader

    1. 在 webpack.config.js 中使用
    2. 使用 use 指定 loader 的时候,需要写上完整路径,否则找不到
    3. 因为 webpack 在查找loader 的时候,先从 node_modules 目录查找
    4. 如果不想写 完整路径,需要在 resolveLoader 配置项中配置 modules 选项,指定 loader 目录
    1. // 替换字符串 loader
    2. module.exports = function(source) {
    3. console.log(this.query.params + '接受参数');
    4. const handleContent = source.replace('框架', 'Vue框架').replace('JS', 'JavaScript')
    5. return handleContent
    6. }
    7. // 移除 console.log loader
    8. module.exports = function removeConsoleLog(source) {
    9. const handleContent = source.replace(/console\.log\(\S*\)/g, '')
    10. return handleContent
    11. }
    12. // webpack.config.js
    13. resolveLoader: {
    14. modules: ['node_modules', './src/loaders']
    15. },
    16. module: {
    17. rules: [
    18. {
    19. test: /\.js$/,
    20. use: [
    21. {
    22. loader: 'removeConsoleLog'
    23. },
    24. {
    25. loader: './src/loaders/replaceLoader.js',
    26. options: {
    27. params: 'test replace string...'
    28. }
    29. }
    30. ]
    31. }
    32. ]
    33. }