美文网首页
webpack的概述

webpack的概述

作者: 小黄不头秃 | 来源:发表于2023-06-11 15:13 被阅读0次
    // webpack是一个流行的前端项目构建工具(打包工具),可以解决当前web开发占领所面临的困境
    // webpack提供有好的模块化支持,以及代码压缩混淆,处理js兼容性问题,性能优化等强大的功能
    // ,从而让程序员把工作重心放到功能实现上,提高了开发效率和项目的可维护性
    
    
    /**
     * 配置webpack
     * (1)运行 npm install webpack webpack-cli -D命令,安装webpack相关的包
     * (2)在项目根目录中,创建名为 webpack.config.js 的webpack配置文件
     * (3)在webpack 的配置文件中,初始化如下基本配置
     *      moudel.exports = {
     *          mode:"development"//mode用来指定构建模式
     *      }
     * (4)在package.json配置文件中的scripts节点下,新增dev脚本如下
     *      "scripts":{
     *          "dev":"webpack"//script 节点下的脚本,可以通过 npm run 执行
     *      }
     * */ 
    
    /**
     * webpack 的4.x版本中的默认行为
     * 打包文件的入口文件为 src -> index.js
     * 打包的输出文件为 dist-> main.js
     * 
     * 如果修改打包的入口与出口,可以在 webpack.config.js 中新增如下配置信息
     * cosnt path = require('path')//导入nodejs 的模块
     * module.exports = {
     * entry:path.join(__dirname,'./src/index.js'),
     * output:{
     * path:path.join(__dirname,'./dist'),//输出文件的存放路径
     * filename:'mian.js'//输出文件的名称
     * }
     * }
     * */ 
    
    /**
     * 配置webpack 的自动打包功能
     * (1)运行npm install webpack-dev-server -D支持项目的自动打包的工具
     * (2)修改package.json -> scripts 中的dev命令如下
     *      "dev": "webpack-dev-server --open --host 127.0.0.1 --port 8888"
     * (3)src -> index.html 中,script脚本的引用路径,修改为“/buldle.js”
     * (4)运行npm run dev 命令,重新打包
     * (5)在浏览器中访问 http://localhost:8080 地址,查看自动打包效果
     * 
     * 注意:
     * (1)这个包在运行的时候会自动启动一个http服务
     * (2)打包生成的输出文件,默认放到根目录下面,而且是虚拟的,看不见的
     * 
     * 附加:
     * //package.json中的配置文件
     * //--open 打包完成后自动打开浏览器页面
     * //--host 配置IP地址
     * //--port 配置端口
     * "scripts":{
     * "dev":"webpack-dev-server --open --host 127.0.0.1 --port 8888"
     * }
     * 
     * 
     * */  
    
    /**
     * 配置html-webpack-plugin 生成预览页面
     * (1)运行 npm install html-webpack-plugin -D 命令,安装生成预览页面的插件
     * (2)修改webpack.config.js 文件头部区域,添加如下配置信息
     * //导入生成预览页面的插件,得到一个构造函数
     * const HtmlWebpackPlugin = require('html-webpack-plugin')
     * const htmlPlugin = new HtmlWebpackPlugin({
     *     template:"./src/index.html",//要用到的模板文件
     *     filename:"index.html"//指定生成的文件名称,该文件存在于内存之中,在目录中不显示
     * })
     * (3)修改webpack.config.js 文件中向外暴露的配置对象,新增如下节点
     * module.exports = {
     * plugin:[htmlPlugin]//plugin数组是webpack打包期间会用到的一些插件列表
     * }
     * */  
    
    /**
     * webpack 中的加载器
     * 通过loader 打包非js模块
     * 在实际的开发过程中,webpack只能打包处理以js后缀名结尾的模块,其他非js后缀名结尾的模块,webpack默认处理不了,需要调用loder加载器才可以正常打包,否则会报错
     * loader 加载器可以协助 webpack打包处理特定的文件模块,
     * 比如:less-loader -> .less
     *      sass-loader -> .scss
     *      url-loader -> css中与url路径相关的文件
     * 
     * ## 打包处理css文件
     * (1)运行npm i style-loader css-loader -D
     * (2)在webpack.config.js的module -> rules 数组中,添加loader规则如下
     *      module:{
     *          rules:[
     *          {test:/\.css$/,use:['style-loader','css-loader']
     *          }
     *          ]
     *      }
     *      其中,test表示匹配的文件类型,use 表示对应要调用的loader
     * 
     * ## 打包处理less文件
     * (1)运行npm i less-loader less -D 命令
     * (2)在webpack.config.js的module -> rules 数组中,添加loader规则如下
     *      module:{
     *          rules:[
     *          {test:/\.less$/,use:['style-loader','css-loader','less-loader']
     *          }
     *          ]
     *      }
     *      其中,test表示匹配的文件类型,use 表示对应要调用的loader
     * 
     * ## 打包处理scss文件
     * (1)运行npm i sass-loader node-sass -D 命令
     * (2)在webpack.config.js的module -> rules 数组中,添加loader规则如下
     *      module:{
     *          rules:[
     *          {test:/\.scss$/,use:['style-loader','css-loader','sass-loader']
     *          }
     *          ]
     *      }
     *      其中,test表示匹配的文件类型,use 表示对应要调用的loader
     * 
     * !!注意!!
     * use 数组中指定的loader顺序是固定的
     * 多个loader的调用顺序是从后往前调用的
     * 
     * ## 配置postCSS 自动添加css的兼容前缀
     * (1)运行npm i postcss-loader autoprefixer -D命令
     * (2)创建postcss.config.js 并初始化如下配置
     * const autoprefixer = require('autoprefixer')//导入自动添加前缀插件
     * module.exports = {
     *  plugins:[ autoprefixer ]//挂在插件
     * }
     * (3)在webpack.config.js 的 module -> rules 数组中 修改 css 的loader 规则如下:
     *      module:{
     *          rules:[
     *          {test:/\.css$/,use:['style-loader','css-loader','postcss-loader']
     *          }
     *          ]
     *      }
     * 
     * ## 打包样式表中的图片和字体文件
     * (1)运行 npm i url-loader file-loader -D命令
     * (2)在webpack.config.js 的module -> rules 数组中,添加loader规则如下:
     *      moduleL{
     *          rules:[
     *              {test:/\.jpg|png|gif|bmp|ttf|eot|svg|woff|woff2$/,
     *              use:'url-loader?limit=16940'}
     *      ]
     * }
     *      !!其中?之后的是 loader 的参数项
     *      limit 用来指定图片的大小,单位是字节(byte)只有小于limit的图片才会被转换
     * 
     * ## 打包处理js文件中的高级语法
     * (1)安装babel转换器相关的包:npm i babel @babel/core @babel/runtime -D
     * (2)安装babel语法插件相关的包:npm i @babel/preset-env @babel/plugin-transform-runtime @babel/plugin-proposal-class-properties -D
     * (3)在根目录中,创建babel 配置文件 babel.config.js 并初始化基本配置如下:
     *      module.exports = {
     *          presets:['@babel/preset-env'],
     *          plugins:['@babel/plugin-transform-runtime','@babel/plugin-proposal-class-properties']
     *          }
     * (4)在webpack.config.js 的module->rules 数组中,添加loader规则:
     *      //exclude 为排除项,表示babel-loader 不需要处理 node_modules 中的js文件
     *      { test:/\.js$/,use:"babel-loader",exclude:/node_modules/}
     * */  
    
    

    相关文章

      网友评论

          本文标题:webpack的概述

          本文链接:https://www.haomeiwen.com/subject/mprpedtx.html