• 编写第一个webpack loader


    编写一个webpack loader,loader的作用是获取你写的源代码,根据自己的操作对源代码的字符进行自定义的处理,相当于解释器、翻译器.

    1、在入口文件(webpack.config.js中的entry配置的js文件)中写如下代码

    console.log('hello,vue');
    

    2、接下来编写一个loader,将console.log中的vue替换成react,项目根目录下新建loaders文件夹,新建customLoader.js文件,内容如下

    module.exports = function (source) {
        return source.replace(this.query.name, 'react')    //这个this.query是webpack配置的loader option中的变量,这里是vue;source指的是源代码.
    }
    

    3、项目根目录下新建webpack.config.js

    const path = require('path')
    module.exports = {
        mode: 'development',
        entry: {
            main: './src/index.js'
        },
        resolveLoader: {
            modules: ['node_modules', 'loaders']   //指的是在node_modules、loaders中查找loader,loaders是自己配置的,可以自行修改
        },
        module: {
            rules: [
                {
                    test: /.js/,
                    use: [
                        {
                            // loader: path.resolve(__dirname, './loaders/customLoader.js'),   //没使用resolveLoader就需要使用path路径
                            loader: 'customLoader',
                            options: {
                                name: 'vue'   
                            }
                        }
                    ]
                }
            ]
        },
        output: {
            filename: '[name].[contenthash].js',
            path: path.resolve(__dirname, 'dist')
        }
    }
    

    4、打包,修改成功

    扩展:如果想要在loader中使用异步操作,需要使用async

    4-1、customLoader.js 配置如下

    module.exports = function (source) {
        const callback = this.async();   //返回一个this.callback
        setTimeout(() => {
            let result = source.replace(this.query.name, 'react');
            callback(null,result)   //第一个参数是报错信息,第二个是处理后的源码
        }, 5000);
    }
    

      

  • 相关阅读:
    定时任务 常用cron表达式
    链接UTF-8编码带BOM尾,访问出现404
    centos安装nginx
    cnetos安装jdk
    javaweb数据分页
    mvn clean install对idea中项目结构的影响
    spring使用servlet过滤器filter,进行登录校验
    docker安装mysql并修改远程登陆权限
    使用token令牌控制接口幂等性
    718.最长重复子数组
  • 原文地址:https://www.cnblogs.com/uimeigui/p/14097925.html
Copyright © 2020-2023  润新知