webpack

npm i webpack webpack-cli -D

npx webpack
执行 npx webpack 默认运行 webpack.config.js 配置文件 并将 src/index.js 构建输出到 dist/main.js
注:npx node8 自带命令,先安装后执行

loader

webpack 默认支持JS和JSON文件,其他类型文件必须借助loader处理。
loader 作用:转换特定类型的文件
css-loader :处理.css文件,打包.css 文件进bundle.js
style-loadermini-css-extract-plugin中的loader

style-loader :将bundle.js中的css提取出并通过style标签形式添加到页面
mini-css-extract-plugin中的loader:将bundle.js中的css提取成单独文件,并通过<link href= "css文件地址" rel="stylesheet"> 引入页面

babel-loader 处理js特性中不被特定浏览器(browerslist配置)支持的部分降级处理成es5 api (核心包 core-js)
postcss-loader :为browerslist配置中需要支持的浏览器列表增加特定css前缀或特定浏览器的css写法。(其中核心包:Autoprefixer):
less-loader :处理less 成 css
sass-loader :处理sass 成 css

loader 执行顺序是从后往前,上一个loader的处理结果会进入下一个loader被处理:

rules: [
      {
        
        test: /\.css$/,
        use: [MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader'], // 从右往前
      },
      {
        
        test: /\.less$/,
        use: [
          MiniCssExtractPlugin.loader,
          'css-loader',
          'postcss-loader',
          'less-loader'         
        ], // 从右往前
      },

thread-loader 让写在其后的loader的worker 池中运行(每个 worker 都是一个独立的 node.js 进程)


use: [
          "thread-loader",
          // 耗时的 loader (例如 babel-loader)
        ],

image-webpack-loader 图片压缩loader

plugin

实现单一任务的插件

  • html-webpack-plugin 将打包生成的文件(如xxx[hash].js、xxx[hash].css文件)自动插入到html文件中
  • eslint-webpack-plugin
    eslint 插件

dev-Server

开发时启动服务器

  • hot 热模块替换

webpack-dev-server启动一个服务之后,浏览器和服务端是通过websocket进行长连接,webpack内部实现的watch就会监听文件修改,只要有修改webpack会重新打包编译到内存中,每次热更新都会请求一个携带hash值的json文件和一个js,websocker传递的也是hash值,内部机制通过hash值检查进行模块热替换, 至于内部原理,因为水平限制,目前还看不懂。
hot:true ( 热替换,不刷新页面。如果热更新失败(可能某些模块不支持HMR),则刷新页面;如果编译报错,修改后重新编译通过,则刷新页面)
hot: ‘only’ (如果编译报错,修改后重新编译通过,不刷新页面。)

  • proxy 配置接口代理,将本地请求的接口(/a/b)代理到外部地址(http://www.xxx.com/a/b),从而避开浏览器的同源策略限制,实现跨域请求

设置环境变量

cross-env 设置环境变量,跨平台(windows或linux)可正常运行

"serve": "cross-env NODE_ENV=development VUE_APP_FLAG=local webpack serve -c build/webpack.dev.js",
    "serve:sit": "cross-env NODE_ENV=development VUE_APP_FLAG=sit webpack serve -c build/webpack.dev.js",

optimization 优化

splitChunks 将 boundle.js 分包 (chunk)
webpack分包
默认配置,动态引入的模块(经判断需要时才引入js 、vue组件),才会抽离出来;
默认值有2个配置,1个是vendors (将供应商(node_modules)的抽离一个文件),1个是其他文件,(超大或 共享且动态引入 才会抽离)。
可在spliChunks.cacheGroup中指定那个路径的包单独抽离,比如element-ui

optimization: {
    chunkIds: 'named',
    splitChunks: { // 将 boundle.js 分包 
      chunks: 'all',
      cacheGroups: {
       
        'element-ui': {
          name: 'element-ui',
          chunks: 'all',
          test: /[\\/]node_modules[\\/]element-ui[\\/]/,
          priority: 40,
        },

minimizer 最小化

optimization: {
    minimizer: [
      new CssMinimizerPlugin({ //css-minimizer-webpack-plugin 压缩优化css
        parallel: 4,
      }),
      new TerserPlugin({ // terser-webpack-plugin 压缩混淆js
        parallel: 4,
        terserOptions: {
          parse: {
            ecma: 8,
          },

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值