webpack个人学习笔记(二)

关于webpack----个人学习笔记

一、webpack加载css、less、sass

   1.了解loader

                 loader 让webpack 能够去处理那些非JavaScript文件(webpack自身只理解JavaScript)。loader可以将所有类型的文件转换为webpack能够处理的有效模块, 然后你就可以利用webpack的打包能力,对他们进行处理

            本质上, webpack loader 将所有类型的文件,转换为应用程序的依赖图(和最终的bundle)可以直接引用的模块

                 在更高层面,在webpack的配置中 loader 有两个目标:

                     1.test 属性,用于标识出应该被对应的 loader 进行转换的某个或某些文件。

                     2.use 属性,表示进行转换时,应该使用哪个 loader 。

        

   2.安装 loader       

          安装 style-loader 和 css-loader

          下载:

           npm install style-loader css-loader --save-dev

   3.配置 loader

        1) 在webpack.config.js 文件中配置 module 中的 rules

                   在 webpack 的配置中 loader 有两个目标:

                   1.test 属性,用于标识出应该被对应的 loader 进行转换的某个或某些文件。

                   2.use 属性,表示进行转换时,应该使用哪个 loader 。

module: {
    rules: [
        {
            test: /\.css$/,
            use: ['style-loader', 'css-loader']
            // 引用顺序 style-loader在前, css-loader在后
        }
    ]
}

   4.编译less 和 sass

        1)   @width: 10px;

              @height: @width + 10px;                         编译为                #header {

                                                                           --------------->                width: 10px;

              #header {                                                                                  height: 10px; 

                height: @height;                                                                }

                width: @width;

              }

      2)安装 loader

            安装less-loader 和 less

            下载:

            npm install less-loader less --save-dev

           

           配置 loader

module: {
    rules: [
        {
            test: /\.less$/,
            use: ['style-loader', 'css-loader', 'less-loader']
            // 引用顺序 style-loader在前, css-loader在后
        }
    ]
}

    3)sass 安装 loader

         安装 sass-loader 和 node-sass

         下载:

         npm install sass-loader node-sass --save-dev

 

         配置 loader

module:{
    rules:[
        {       //以.scss结尾的文件
            test:/\.scss$/,//标识出应该被对应的loader进行转换的某个或者某些文件
            use:[{loader: 'style-loader'},{loader: 'css-loader'},{loader: 'sass-loader'}]//表示进行转换时应该使用哪个loader
            //use: ['style-loader', 'css-loader', 'sass-loader']
        }
    ]
}

二、使用PostCSS处理浏览器前缀

           安装loader

           安装 postcss-loader 和 autoprefixer

 

           下载

           npm install --save-dev postcss-loader autoprefixer

         

           配置loader

                  搭配 autoprefixer 使用

module:{
    rules:[
        {     //以.css结尾的文件
            test:/\.scss$/,//标识出应该被对应的loader进行转换的某个或者某些文件
            use:['style-loader','css-loader','less-loader',{
                loader: 'postcss-loader',
                options: { // 选项设置
                    plugins: [
                        require("autoprefixer")({
                           browsers: [
                                'ie >= 8', //ie版本大于等于ie8
                                'Firefox >= 20', //火狐浏览器大于20版本
                                'Safari >= 5', //safari大于5版本
                                'Android >= 4', //版本大于Android4
                                'Ios >= 6', //版本大于ios6
                                'last 4 version' //浏览器最新的四个版本
                            ]
                        })
                    ] //插件,处理自动添加兼容性
                 },
             }]//表示进行转换时应该使用哪个loader
        }
    ]
}

第二种配置方式---webpack.js中如下配置 

module:{
    rules:[
        {     //以.css结尾的文件
            test:/\.scss$/,//标识出应该被对应的loader进行转换的某个或者某些文件
            use:['style-loader','css-loader','less-loader',{
                loader: 'postcss-loader',
                options: { // 选项设置
                    plugins: [
                        require("autoprefixer")
                    ] //插件,处理自动添加兼容性
                 },
             }]//表示进行转换时应该使用哪个loader
        }
    ]
}

并在pakage.json里加上下图设置:

"browserslist": [
    'ie >= 8', //ie版本大于等于ie8
    'Firefox >= 20', //火狐浏览器大于20版本
    'Safari >= 5', //safari大于5版本
    'Android >= 4', //版本大于Android4
    'Ios >= 6', //版本大于ios6
    'last 4 version' //浏览器最新的四个版本
]

以上配置容易造成loader版本不兼容问题,导致编译失败

最佳配置方式

    1.根目录创建postcss.config.js文件

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

    2.根目录创建.browserslistrc文件,填写对应得浏览器版本信息

defaults
not ie < 8
last 2 versions
> 1%
iOS 7
last 3 iOS versions

   3.webpack.config.js文件中引入postcss-loader

{
    test: /\.css$/,
    use: ['style-loader', 'css-loader']
},
{
    test: /\.less$/,
    use: ['style-loader', 'css-loader', 'less-loader']
},
{
    test: /\.scss$/,
    use: ['style-loader', 'css-loader',  'sass-loader']
},

三、文件处理

   1.图片处理

         1)安装loader

              下载安装file-loader

              npm install --save-dev file-loader

        2)配置config文件

modules:{
    rules:[
        {
            test:/\.(png|jpg|gif|jpeg)$/,
            use:'file-loader'
        }
    ]
}

       3)选项配置

{
  test:/\.(png|jpg|gif|jpeg)$/,
  use:[
      {
          loader: 'file-loader',
          options: {
             // name: '[path]wangou.jpg', // 资源相对于context的路径
             name: '[hash]wangou.jpg', // hash生成一串哈希值
             // context: '../' //默认为webpack.config.js所在的路径--->根目录
            publicPath: 'http://www.abc.com/img', // 设置发布后的路径
            outputPath: './img' // 生成一个img文件夹存放图片
         }
      }
  ]
}
配置 options

     name: 为你的文件配置自定义文件名模板 (模人值[hash].[ext])

     context: 配置自定义文件的上下文,默认为 webpack.config.js

     publicPath: 为你的文件配置自定义 public 发布目录

     outputPath: 为你的文件配置自定义 output 输出目录



     [ext]:资源扩展名

     [name]: 资源的基本名称

     [path]: 资源相对于context的路径

     [hash]: 内容的哈希值

   2.字体文件处理

          1)下载字体文件

               以bootstrap 字体文件为例

               下载地址: https://v3.bootcss.com/getting-started/

          2)配置config文件

rules:[
    {
        test:/\.css$/,
        use:['style-loader','css-loader']
    },
    { // 搭配css处理loader使用
        test:/\.(ttf|woff|woff2|eot|svg)$/,
        use:[{
            loader: 'file-loader',
           options:{
               outputPath:'font/'
           },
           
        }]
    }
]

       入口文件--index.js中引入,在html文件中使用对应的图标即可生效

import './css/bootstrap.min.css';

   3.第三方js库处理

        以jquery库为例

           1)本地导入

                编写配置文件:

                           webpack.ProvidePlugin参数是键值对形式,键就是我们项目中使用的变量名,值就是键所指向的库。webpack.ProvidePlugin会先从npm安装的包中查找是否有符合的库。

                       如果webpack配置了resolve.alias选项(理解成“别名”),那么webpack.ProvidePlugin就会顺着设置的路径一直找下去

                       使用webpack.ProvidePlugin 前需要引入webpack

const webpack = require("webpack");

resolve:{
    alias: {
        jQuery:path.resolve(__dirname,'public/js/jquery.min.js')
    }
},
plugins:[
    new webpack.ProvidePlugin({
    jQuery: 'jQuery'
   })
]

          2)npm安装模块

               安装 jquery 库:

               npm install jquer --save-dev

               直接在js里 import 引入

               import $ from 'jquery'

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值