• webpack基础知识


    //loader
    //模块:模块主要是运用各种loader用于对模块的源代码进行转换,将lass、sass、或者es6\TS编译转换为html能识别的css、js等,或者进行一些代码压缩图片等等的处理
    //style-loader:
    处理css文件中的url()等
    npm install style-loader --save-dev@0.23.1
    css-loader:
    将css插入到页面的style标签
    npm install --save-dev css-loader@2.2.2
    loaders配置:
    修改webpack.config.js中module属性中的配置代码如下:
    webpack.config.js的基本配置
    const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin') //path:Node.js Path模块 表示当前处置文件的目录 //path_resolve:将文件转为绝对路径 //__dirname:nodejs中的全局变量,指向当前文件所在的目录 //入库起点(entry point)指示webpack应该使用哪个模块,来作为构建其内部依赖图的开始, //进入入口起点后,webpack会找到有哪些模块和库是入口起点(直接和间接)依赖的。 //默认值是./src/index.js,但你可以通过在webpack.config.js中配置entry属性,来指定一个(或多个)不同的入口起点 //单文件入口配置 module.exports={ //入口文件的配置项 entry:{ main:'./src/index.js' }, //出口文件的配置项 output:{ path:path.resolve(__dirname,'dist'),//把dist目录变为绝对路径 filename:'index.js',//main.js输出到dist目录下的文件名称 }, //模块,例如解读css.图片如何转换,压缩 module:{}, //插件,用于生产模板和各种功能 plugins:[], //配置webpack开发服务功能(安装完webpack=dev-server后,可以在这里做一些配置) devServer:{ contentBase:path.join(__dirname,'dist'),//项目目录 compress:true,//gzip压缩 port:9000,//服务端口 //host:'0.0.0.0',//ip地址 https:true,//开启https open:true,//启动后自动打开浏览器 proxy:{//代理 '/api':{//'/api'开头的请求会被代理 target:'http://localhost:3000',//代理地址 pathRewrite:{'^/api':''},//替换接口中'/api'字符串 } } } } //多文件入口配置 //添加多个entry对象,对象key作为最终输出文件名 //修改output的filename为动态获取文件名 // module.exports={ // //入口文件的配置项 // entry:{ // main:'./src/main.js', // index:'./src/index.js' // }, // //出口文件的配置项 // output:{ // path:path.resolve(__dirname,'dist'),//把dist目录变为绝对路径 // filename:'[name].js',//main.js输出到dist目录下的文件名称 // }, // //模块,例如解读css.图片如何转换,压缩 // //loaders的配置是修改webpack.config.js中的module属性中的配置 // //loaders执行顺序是倒序,后缀为.css的文件流会流转到css-loader,依次到style-loader,直至完成这条loaders链 // module:{ // /* // noParse:过滤不需要解析的文件 // rules:设置解析规则数组 // {test:xxx}:匹配特定条件,一般是提供一个正则表达式或正则表达式的数组 // {include:xxx}:匹配特定条件,一般是提供一个字符串或字符串数组 // {exclude:xxx}:排除特定条件,一般是提供一个字符串或字符串数组 // {loader:[xxx]||xxx}:解析需要的loader,一般是提供一个字符串或字符串数组 // */ // rules:[ // { // test:/\.css$/, // use:['style-loader','css-loader'] // } // ] // }, // //插件,用于生产模板和各种功能 // plugins:[], // //配置webpack开发服务功能 // devServer:{}, // /* // webpack提供了一个Plugin插件配置项,可以讲项目中的js文件通过配置的插件进行解析 // 插件(Plugins)是用来拓展webpack功能的,他们会在整个构建过程中生效,执行相关的任务。 // Loaders和Plugins常常被弄混,但是他们其实是完全不同的东西,可以这么来说,loaders是在打包构建过程 // 中用来处理源文件的(jsx、scss、less),一次处理一个,插件并不直接操作单个文件,它直接对整个构建过程起作用 // 使用某个插件,需要通过npm进行安装,然后再webpack.config.js配置文件的plugins(试一个数组)配置项中添加该插件的实例 // */ // plugins:[ // new HtmlWebpackPlugin({ // template:path.join(__dirname,'/index.html')//new一个这个插件的实例,并传入相关的参数 // }) // ] // }
    //环境变量env的使用
    const path = require("path");
    const HtmlWebpackPlugin = require("html-webpack-plugin");
    //path:Node.js Path模块  表示当前处置文件的目录
    //path_resolve:将文件转为绝对路径
    //__dirname:nodejs中的全局变量,指向当前文件所在的目录
    //入库起点(entry point)指示webpack应该使用哪个模块,来作为构建其内部依赖图的开始,
    //进入入口起点后,webpack会找到有哪些模块和库是入口起点(直接和间接)依赖的。
    //默认值是./src/index.js,但你可以通过在webpack.config.js中配置entry属性,来指定一个(或多个)不同的入口起点
    
    //单文件入口配置
    module.exports = (env) => {
        console.log(env.NODE_ENV);//local
        console.log(env.production)
      return {
        //入口文件的配置项
        entry: {
          main: "./src/index.js",
        },
        //出口文件的配置项
        output: {
          path: path.resolve(__dirname, "dist"), //把dist目录变为绝对路径
          filename: "index.js", //main.js输出到dist目录下的文件名称
        },
        //模块,例如解读css.图片如何转换,压缩
        module: {},
        //插件,用于生产模板和各种功能
        plugins: [],
        //配置webpack开发服务功能(安装完webpack=dev-server后,可以在这里做一些配置)
    
        devServer: {
          contentBase: path.join(__dirname, "dist"), //项目目录
          compress: true, //gzip压缩
          port: 9000, //服务端口
          //host:'0.0.0.0',//ip地址
          https: true, //开启https
          open: true, //启动后自动打开浏览器
          proxy: {
            //代理
            "/api": {
              //'/api'开头的请求会被代理
              target: "http://localhost:3000", //代理地址
              pathRewrite: { "^/api": "" }, //替换接口中'/api'字符串
            },
          },
        },
      };
    };
  • 相关阅读:
    git或gitee 提交代码到远程仓库
    gitee 创建代码仓库,并提交本地代码
    Logback 实现日志链路追踪
    navicat 查看,设计并导出数据库 ER图
    Jackson 使用 @JsonFormat 注解进行时间格式化
    Redis 缓存常见问题
    jedis 与 redission 实现分布式锁
    Redis 集群模式搭建
    Redis 哨兵模式高可用
    Notepad++ 正则表达式提取信息
  • 原文地址:https://www.cnblogs.com/dongxiaolei/p/16029606.html
Copyright © 2020-2023  润新知