当前位置: 首页 > news >正文

webpack5 之 css与js相关

目录

  • webpack5 之 css相关
    • 1:webpack5 之 css之加载、压缩、生成html
      • package.json
      • webpack.config.js
      • main.js 与 main.css
      • npm run build 打包效果
    • 2:webpack5 之 scss使用
      • package.json
      • webpack.config.js
      • main.js main.scss
      • npm run build效果
    • 3:webpack5 之 postcss、autoprefixer的配置 ( PostCSS自动补全浏览器前缀 )
      • package.json
      • webpack.config.js
      • postcss.config.js
      • main.js 与 main.scss
      • npm run build 效果
  • webpack5 之 js相关
    • 1:webpack5 之 es6语法的转化
      • package.json
      • webpack.config.js
      • babel.config.js
      • main.js
      • npm run build 效果
    • 2:webpack5 之 js代码的压缩
      • webpack.config.js ( TerserPlugin 自带的 )
      • index.html
      • npm run build 效果 ( 压缩js,去掉无用的js)

webpack5 之 css相关

1:webpack5 之 css之加载、压缩、生成html

package.json

  "devDependencies": {
    "style-loader": "^3.3.1",
    "css-loader": "^6.5.1",
    "mini-css-extract-plugin": "^2.5.3",
    "css-minimizer-webpack-plugin": "^2.0.0",
    "html-webpack-plugin": "^5.3.1",
    "webpack": "^5.67.0",
    "webpack-cli": "^4.9.2"
  },

webpack.config.js

const path = require('path')
const MiniCssExtract = require('mini-css-extract-plugin')
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin') //生产环境 进行压缩css
const HtmlWebpackPlugin = require('html-webpack-plugin') // 自动引入文件 插件
module.exports = (env) => {
  return {
    entry: {
      main: './src/main.js'
    },
    output: {
      path: path.resolve(__dirname, 'dist'),
      filename: 'bunder.js',
    },
    // loader相关配置
    module: {
      rules: [{
        test: /\.css$/, // 针对 .css 后缀的文件设置 loader
        use: [
          env.development ? 'style-loader' : {
            loader: MiniCssExtract.loader
          },
          'css-loader'
        ]
      }]
    },
    optimization: {
      minimizer: [
        // 压缩css - 生成环境
        new CssMinimizerPlugin(),
        // new TerserPlugin()
      ]
    },
    resolve: {
      alias: {
        '@': path.resolve(__dirname, './src')
      }
    },
    plugins: [
       // 分割css
      new MiniCssExtract({
        filename: '[name].css',
        chunkFilename: '[id].css'
      }),
      // 自动生成html ( 于打包后 dist目录下的 双击在浏览器显示 )
      new HtmlWebpackPlugin({
        // 打包输出HTML
        title: '自动生成 HTML',
        minify: {
          // 压缩 HTML 文件
          removeComments: true, // 移除 HTML 中的注释
          collapseWhitespace: true, // 删除空白符与换行符
          minifyCSS: true // 压缩内联 css
        },
        filename: 'index.html', // 生成后的文件名
        template: 'index.html', // 根据此模版生成 HTML 文件
        // chunks: ['main'] // entry中的 app 入口才会被打包
      }),
    ]
  }
}

main.js 与 main.css

main.js
import "@/css/main.css"
console.log("main.js");

css / main.css
body{
  background: yellow;
}

npm run build 打包效果

在这里插入图片描述
打开 dist / index.html 文件
在这里插入图片描述

2:webpack5 之 scss使用

package.json

  "devDependencies": {
    "node-sass": "^5.0.0",
    "sass-loader": "^11.0.1"
  },

webpack.config.js

const path = require('path')
const MiniCssExtract = require('mini-css-extract-plugin')
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin') //生产环境 进行压缩css
const HtmlWebpackPlugin = require('html-webpack-plugin') // 自动引入文件 插件
module.exports = (env) => {
  return {
    entry: {
      main: './src/main.js'
    },
    output: {
      path: path.resolve(__dirname, 'dist'),
      filename: 'bunder.js',
    },
    // loader相关配置
    module: {
      rules: [{
        test: /\.(scss|css)$/, // 针对 .scss 或者 .css 后缀的文件设置 loader
        use: [
          env.development ? 'style-loader' : {
            loader: MiniCssExtract.loader
          },
          'css-loader',
          'sass-loader' // 使用 sass-loader 将 scss 转为 css
        ]
      }]
    },
    optimization: {
      minimizer: [
        // 压缩css - 生成环境
        new CssMinimizerPlugin(),
        // new TerserPlugin()
      ]
    },
    resolve: {
      alias: {
        '@': path.resolve(__dirname, './src')
      }
    },
    plugins: [
      // 分割css
      new MiniCssExtract({
        filename: '[name].css',
        chunkFilename: '[id].css'
      }),
      // 自动生成html ( 于打包后 dist目录下的 双击在浏览器显示 )
      new HtmlWebpackPlugin({
        // 打包输出HTML
        title: '自动生成 HTML',
        minify: {
          // 压缩 HTML 文件
          removeComments: true, // 移除 HTML 中的注释
          collapseWhitespace: true, // 删除空白符与换行符
          minifyCSS: true // 压缩内联 css
        },
        filename: 'index.html', // 生成后的文件名
        template: 'index.html', // 根据此模版生成 HTML 文件
        // chunks: ['main'] // entry中的 app 入口才会被打包
      }),
    ]
  }
}

main.js main.scss

main.js
import "@/css/main.css"
import "@/css/main.scss"
console.log("main.js");

main.scss
$bgColor: red !default;
html {
  p {
    background-color: $bgColor;
  }
  .ppp {
    display: flex;
    justify-content: flex-end;
    color: #fff;
    background: #000;
  }
}

npm run build效果

在这里插入图片描述

3:webpack5 之 postcss、autoprefixer的配置 ( PostCSS自动补全浏览器前缀 )

package.json

  "devDependencies": {
    "autoprefixer": "9.8.6",
    "postcss-loader": "^6.1.0",
    "postcss-px-to-viewport": "^1.1.1",
  },
  "browserslist": [
    "> 1%",
    "last 2 version",
    "not ie <= 8"
  ]

webpack.config.js

    // loader相关配置
    module: {
      rules: [{
        test: /\.(scss|css)$/, // 针对 .scss 或者 .css 后缀的文件设置 loader
        use: [
          env.development ? 'style-loader' : {
            loader: MiniCssExtract.loader
          },
          'css-loader',
          'postcss-loader',
          'sass-loader' // 使用 sass-loader 将 scss 转为 css
        ]
      }]
    },

postcss.config.js

module.exports = {
  plugins: [require('autoprefixer')]
}

main.js 与 main.scss

main.js
import "@/css/main.css"
import "@/css/main.scss"
console.log("main.js");

main.scss
$bgColor: red !default;
html {
  p {
    background-color: $bgColor;
  }
  .ppp {
    display: flex;
    justify-content: flex-end;
    color: #fff;
    background: #000;
  }
}

npm run build 效果

在这里插入图片描述

webpack5 之 js相关

1:webpack5 之 es6语法的转化

package.json

  "devDependencies": {
    "@babel/core": "^7.13.16",
    "@babel/preset-env": "^7.13.15",
    "babel-loader": "^8.2.2",
    "babel-plugin-import": "^1.13.3",
    "webpack": "^5.67.0",
    "webpack-cli": "^4.9.2"
  },
  "dependencies": {
    "core-js": "^3.11.0"
  },

webpack.config.js

    // loader相关配置
    module: {
      rules: [
        {
          test: /\.js$/,
          use: {
            loader: 'babel-loader',
            options: {
              cacheDirectory: true
            },
          },
          exclude: /node_modules/
        },

      ]
    },

babel.config.js

const presets = [
  ["@babel/preset-env", {
    "useBuiltIns": 'usage', // 这里配置usage 会自动根据你使用的方法以及你配置的浏览器支持版本引入对于的方法。
    "corejs": "3.11.0" // 指定 corejs 版本 
  }]
]
const plugins = [
  ['import', {
    libraryName: 'vant',
    libraryDirectory: 'es',
    style: true
  }, 'vant']
]
module.exports = {
  plugins,
  presets
}

main.js

import "@/css/main.css"
import "@/css/main.scss"
console.log("main.js");
let a = 100;
console.log("a",a);
const set = new Set([1, 2, 3, 1])
console.log('res,', set, '; set-arr', [...set])

npm run build 效果

在这里插入图片描述

2:webpack5 之 js代码的压缩

webpack.config.js ( TerserPlugin 自带的 )

const TerserPlugin = require('terser-webpack-plugin');// js压缩
    optimization: {
      minimizer: [
        // 压缩js - 生产环境
        new TerserPlugin({
          // 多进程
          parallel: true,
          //删除注释
          extractComments: false,
          terserOptions: {
            compress: { // 生产环境去除console
              drop_console: true,
              drop_debugger: true,
            },
          },
        }),
      ]
    },

index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <!-- <link rel="stylesheet" href="./dist/css/style.css"> -->
</head>
<body>
  <script src="./dist/bunder.js"></script>
  <p>
    我是p
    <div class="ppp">我是ppp</div>
  </p>
</body>
</html>

npm run build 效果 ( 压缩js,去掉无用的js)

  • npm run build 效果
    在这里插入图片描述
    在这里插入图片描述
  • npm run dev效果
    在这里插入图片描述

相关文章:

  • 最新总结MySQL核心知识点
  • Servlet 项目的创建和部署
  • android获取进程内存使用信息、一键加速(内存清理)与进程重要级别解析
  • 面试题之HashMap与HashTable的区别
  • ASEMI整流桥SKBPC3516,SKBPC3516参数,SKBPC3516应用
  • java固定资产设备管理系统(源码开源分享)
  • 计算机网络学习笔记
  • Leetcode 84.柱状图中最大的矩形
  • 鸿蒙智联开发者平台项目的理解介绍
  • apollo配置中心
  • 华为CSE框架的一些知识点
  • vxe-table 将表格指定行设置颜色后,选中行、悬浮行样式失效解决。
  • 这些提高摸鱼效率的自动化测试技巧,提高打工人幸福感~
  • HelloSpring
  • Vite为啥如此之快
  • python3.6+scrapy+mysql 爬虫实战
  • 2019.2.20 c++ 知识梳理
  • angular2开源库收集
  • docker容器内的网络抓包
  • HashMap剖析之内部结构
  • in typeof instanceof ===这些运算符有什么作用
  • JS 面试题总结
  • js继承的实现方法
  • Laravel 菜鸟晋级之路
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • Python中eval与exec的使用及区别
  • TCP拥塞控制
  • Web设计流程优化:网页效果图设计新思路
  • Yeoman_Bower_Grunt
  • 安卓应用性能调试和优化经验分享
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 分类模型——Logistics Regression
  • 基于 Babel 的 npm 包最小化设置
  • 技术胖1-4季视频复习— (看视频笔记)
  • 来,膜拜下android roadmap,强大的执行力
  • 扑朔迷离的属性和特性【彻底弄清】
  • 深度学习在携程攻略社区的应用
  • 实现菜单下拉伸展折叠效果demo
  • 小程序 setData 学问多
  • 小程序开发中的那些坑
  • 用 Swift 编写面向协议的视图
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​configparser --- 配置文件解析器​
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #define与typedef区别
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (3)nginx 配置(nginx.conf)
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (ibm)Java 语言的 XPath API
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (二)PySpark3:SparkSQL编程
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练