• webpack plugins webpack-html-plugin postcss


    1.Plugin

    (1)什么是插件(plugin)

    plugin 用于扩展webpack的功能,当然loader也是变相的扩展了webpack ,但是它只专注于转化文件这一个领域,而plugin的功能更加的丰富,而不仅局限于资源的加载。

    (2)如何使用插件

    ① 通过npm安装对应的插件。
    ② 用require导入插件。
    ③ 在plugins中new插件。

    2.webpack-html-plugin

    (1)什么是HtmlWebpackPlugin

    HtmlWebpackPlugin会在打包结束之后自动创建一个index.html, 并将打包好的JS自动引入到这个文件中。

    (2)HtmlWebpackPlugin使用

    https://www.webpackjs.com/plugins/html-webpack-plugin/

    安装HtmlWebpackPlugin:

    npm install --save-dev html-webpack-plugin
    
    • 1

    配置HtmlWebpackPlugin:

    const HtmlWebpackPlugin = require('html-webpack-plugin');
    plugins: [new HtmlWebpackPlugin()]
    
    • 1
    • 2

    (3)HtmlWebpackPlugin高级使用-打包多页应用

    https://github.com/jantimon/html-webpack-plugin#configuration

    默认情况下HtmlWebpackPlugin生成的html文件是一个空的文件,如果想指定生成文件中的内容可以通过配置模板的方式来实现。可以添加多个入口,多个HtmlWebpackPlugin,打包后生成多个html,并且引入不同的js.

     plugins: [
        new HtmlWebpackPlugin({
          filename: 'index.html',
          template: './src/index.html', //配置html模板
          minify: { collapseWhitespace: true }, //让html文件压缩,
          title: 'index',
          chunks: ['index'],  //引入index.js
        }),
        new HtmlWebpackPlugin({
          filename: 'main.html',
          template: './src/main.html', //配置html模板
          minify: { collapseWhitespace: true }, //让html文件压缩,
          title: 'main',
          chunks: ['main'],  //引入main.js
    }),  
    ],
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    3.webpack-postcss

    (1)什么是PostCSS

    https://www.postcss.com.cn/

    PostCSS和sass/less不同, 它不是CSS预处理器,PostCSS是一款使用插件去转换CSS的工具,PostCSS有许多非常好用的插件。

    (2)使用PostCSS自动补全浏览器前缀

    ① 安装postcss-loader

    npm i -D postcss-loader
    
    • 1

    ② 安装需要的插件

    npm i -D autoprefixer
    
    • 1

    ③ 配置postcss-loader
    在css-loader or less-loader or sass-loader之前添加postcss-loader
    ④ 创建postcss-loader配置文件
    postcss.config.js

    https://github.com/browserslist/browserslist#queries

    ⑤ 在postcss.config.js配置文件中配置autoprefixer

    module.exports = {
        plugins: {
            "autoprefixer": {
                "overrideBrowserslist": [
                    // "ie >= 8", // 兼容IE7以上浏览器
                    // "Firefox >= 3.5", // 兼容火狐版本号大于3.5浏览器
                    // "chrome  >= 35", // 兼容谷歌版本号大于35浏览器,
                    // "opera >= 11.5" // 兼容欧朋版本号大于11.5浏览器,
                    "chrome  >= 36",
                ]
            }
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    (3)使用PostCSS自动将px转换成rem

    https://www.npmjs.com/package/postcss-pxtorem

    ① 安装postcss-pxtorem

    npm install postcss-pxtorem -D
    
    • 1

    ② 在配置文件中配置postcss-pxtorem

    module.exports = {
        plugins: {
            "autoprefixer": {
                "overrideBrowserslist": [
                    "ie >= 8", // 兼容IE7以上浏览器
                    "Firefox >= 3.5", // 兼容火狐版本号大于3.5浏览器
                    "chrome  >= 35", // 兼容谷歌版本号大于35浏览器,
                    "opera >= 11.5" // 兼容欧朋版本号大于11.5浏览器,
                ]
            },
            "postcss-pxtorem": {
                rootValue: 100, // 根元素字体大小
                // propList: ['*'] // 可以从px更改到rem的属性
                propList: ["height"]
            }
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    属性:

    • rootValue (Number) :root 元素的字体大小。
    • unitPrecision (Number) :允许REM单位增长到的十进制数。
    • propList ( array ) :可以从px更改到rem的属性。
      值需要精确匹配。使用通配符 * 启用所有属性,示例:[‘'];在单词的开头或者结尾使用。( [‘position’] 将匹配 background-position-y );使用 与属性不匹配。! 示例:[’‘,‘letter-spacing’]!,将"非"前缀与其他前缀合并。 示例:[’',‘font*’]!。
    • selectorBlackList ( array ) 要忽略和离开的选择器。
      如果值为字符串,它将检查选择器是否包含字符串。[‘body’] 将匹配 .body-class,如果值为 regexp,它将检查选择器是否匹配正则表达式。[/^body$/] 将匹配 body,但不匹配 .body。
    • replace (Boolean) 替代包含rems的规则,而不是添加回退。
    • mediaQuery (Boolean) 允许在媒体查询中转换 px。
    • minPixelValue (Number) 设置要替换的最小像素值。

    4.webpack-图片合并(postcss-sprites)

    (1)将打包之后的图片合成精灵图。

    (2)如何合并图片

    利用postcss-sprites或者webpack-spritesmith都可以合并图片

    https://www.npmjs.com/package/postcss-sprites
    https://www.npmjs.com/package/webpack-spritesmith

    postcss-sprites安装:

    npm i postcss-sprites
    
    • 1

    配置:postcss.config.js:

    "postcss-sprites": {
       // 告诉webpack合并之后的图片保存到什么地方
       spritePath: "./bundle/images",
       // 告诉webpack合并图片的时候如何分组
       groupBy: function (image) {
          // url: '../images/animal/animal1.png',
          let path = image.url.substr(0, image.url.lastIndexOf("/"));
          // console.log(path, "!!!!!!");
          let name = path.substr(path.lastIndexOf("/") + 1);
          // console.log(name, "!!!!!!!!");
             return Promise.resolve(name);
          },
          //如何过滤图片
          filterBy: function (image) {
             let path = image.url;
             if(!/\.png$/.test(path)){  //png类型的图片不合并
                 return Promise.reject();
              }
              return Promise.resolve();
          }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
  • 相关阅读:
    房间预定小程序怎么做_打造用户的专属空间预定小程序
    redis5.0配置一主两从三哨兵
    ZCMU--5115: Buying Keys(C语言)
    zookeeper:服务器有几种状态?
    Spring boot框架 配置open api 3.0(基于swagger ui) 集成knife4j,快捷生成API文档规范
    actuator--基础--6.2--端点解析--metrics端点
    计算物理专题----蒙特卡洛积分实战
    linux 下MySQL本地安装mysql - u root - p 无法登入
    Performing Inference In INT8 Precision
    【C++风云录】梦幻般的机器人世界:探索ROS、PCL、OpenCV和更多顶尖技术
  • 原文地址:https://blog.csdn.net/weixin_45002586/article/details/127869533