zoukankan      html  css  js  c++  java
  • 641 webpack配置和css处理:默认打包,配置文件,依赖图,css-loader,style-loader,less-loader,browserslist,PostCSS,postcss-loader,autoprefixer,postcss-preset-env

    webpack默认打包



    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
    </head>
    <body>
      <!-- <script src="./src/index.js" type="module"></script> -->
      <script src="./dist/main.js"></script>
    </body>
    </html>
    

    index.js

    import { sum, mul } from './js/math.js';
    const { dateFormat, priceFormat } = require('./js/format');
    
    console.log(sum(20, 30));
    console.log(mul(20, 30));
    
    console.log(dateFormat("1213"));
    console.log(priceFormat("1213"));
    
    

    format.js

    const dateFormat = (date) => {
      return "2020-12-12";
    }
    
    const priceFormat = (price) => {
      return "100.00";
    }
    
    module.exports = {
      dateFormat,
      priceFormat
    }
    
    

    math.js

    export const sum = (num1, num2) => {
      return num1 + num2;
    }
    
    export const mul = (num1, num2) => {
      return num1 * num2;
    }
    
    


    webpack默认打包


    Webpack配置文件


    wk.config.js

    const path = require('path');
    
    module.exports = {
      entry: './src/main.js',
      output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, './build')
      },
      mode: 'development',
    }
    

    指定配置文件


    Webpack依赖图


    编写案例代码


    css-loader的使用


    css-loader的使用方案


    loader配置方式


    Loader的配置代码


    认识style-loader


    配置style-loader


    如何处理less文件?


    Less工具处理


    less-loader处理


    浏览器兼容性


    浏览器市场占有率

    我们工具通常会查询的一个网站就是caniuse;
    https://caniuse.com/usage-table


    认识browserslist工具


    浏览器查询过程


    Browserslist编写规则


    命令行使用browserslist

    windows系统不需要加后面的参数,只需要写npx browserslist即可。


    配置browserslist


    默认配置和条件关系


    认识PostCSS工具


    命令行使用postcss


    插件autoprefixer


    postcss-loader


    单独的postcss配置文件


    postcss-preset-env


    举个例子


    目录结构


    wk.config.js

    const path = require('path');
    
    module.exports = {
      entry: "./src/main.js",
      output: {
        filename: "bundle.js",
        // 必须是一个绝对路径
        path: path.resolve(__dirname, "./build")
      },
      module: {
        rules: [
          { 
            // 规则使用正则表达式
            test: /.css$/, // 匹配资源
            use: [
              // { loader: "css-loader" },
              // 注意: 编写顺序(从下往上, 从右往做, 从后往前)
              "style-loader", 
              // 为了回头处理@import的css文件,写成对象
              {
                loader: "css-loader",
                options: {
                  importLoaders: 1 
                }
              },
              "postcss-loader"
            ],
            // loader: "css-loader"
          },
          {
            test: /.less$/,
            use: [
              "style-loader",
              {
                loader: "css-loader",
                options: {
                  // @import的css文件,回头能被前面的"less-loader"、"postcss-loader"处理
                  importLoaders: 2 
                }
              },
              "postcss-loader",
              "less-loader"
            ]
          }
        ]
      }
    }
    

    main.js

    import { sum, mul } from './js/math.js';
    const { dateFormat, priceFormat } = require('./js/format');
    import "./js/test";
    import "./js/component";
    
    console.log(sum(20, 30));
    console.log(mul(20, 30));
    
    console.log(dateFormat("1213"));
    console.log(priceFormat("1213"));
    

    .browserslistrc

    >1%
    last 2 version
    not dead
    

    postcss.config.js

    module.exports = {
      plugins: [
        'postcss-preset-env'
      ]
    }
    

    package.json

    {
      "name": "01_learn_webpack",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "build": "webpack --config wk.config.js"
      },
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "autoprefixer": "^10.2.3",
        "css-loader": "^5.0.1",
        "less": "^4.1.0",
        "less-loader": "^7.2.1",
        "postcss": "^8.2.4",
        "postcss-cli": "^8.3.1",
        "postcss-loader": "^4.1.0",
        "postcss-preset-env": "^6.7.0",
        "style-loader": "^2.0.0",
        "webpack": "^5.14.0",
        "webpack-cli": "^4.3.1"
      }
    }
    
    

    component.js

    // import "css-loader!../css/index.css";
    import "../css/index.css";
    import "../css/component.less";
    
    function component() {
      const element = document.createElement("div");
      element.innerHTML = ["Hello", "Webpack"].join(" ");
      element.className = "content";
      return element;
    }
    
    document.body.appendChild(component());
    

    component.less

    @fontSize: 50px;
    @fontWeight: 700;
    
    .content {
      font-size: @fontSize;
      font-weight: @fontWeight;
    }
    

    index.css

    @import "./test.css";
    
    .demo {
      color: red;
    }
    

    test.css

    .content {
      /* 十六进制通常是写几位 */
      color: #12345678;
    }
    
    :fullscreen {
      color: red;
    }
    
    .content {
      user-select: none;
      transition: all 2s ease;
    }
    

  • 相关阅读:
    HttpClient使用详解
    JBPM的.jpdl.xml文件中文出现乱码
    maven实现项目热部署
    基于Solr和Zookeeper的分布式搜索方案的配置
    MySQL5.7 多线程复制,配置和测试结果(转)
    重庆--上海手动切换容灾方案执行步骤
    elasticsearch Unassigned 分片解决办法
    基于docker使用elasticsearch-dump,es数据导入导出
    iperf3 测试linux服务器之间带宽
    elasticsearch重庆上海移动切换方案
  • 原文地址:https://www.cnblogs.com/jianjie/p/14479163.html
Copyright © 2011-2022 走看看