webpack之loader配置

什么是Loader

官方解释是文件预处理器。Loader用于对模块的源代码进行转换。 webpack本身只能处理javascript的模块,所以就需要Loader来处理其他的任何类型的资源和模块。loader 可以将文件从不同的语言如(TypeScript)转换为javascript ,或者是将内联图像转换为dataURL,甚至可以直接在js模块中直接import引入css文件。

打包图片的loader
npm i -D file-loader

打包图片的loader
npm i -D url-loader

打包css的loader
npm i -D style-loader // 得到css-loader的内容后,把样式挂载到head标签中
npm i -D css-loader // 分析所有的css文件的关系,合并成一个css文件
npm i -D postcss-loader // 增加浏览器相关的声明前缀

安装sass-loader
npm i -D sass-loader node-sass

loader的基本配置 

module: { // loader的顺序从下到上,从右到左
    rules: [
        { // 支持vue文件的处理
            test: /\.vue$/,
            use: {
                loader: 'vue-loader' // npm install file-loader -D
            }
        }
    ]
},

file-loader

{
    test: /\.(jpg|png|gif)$/,
    use: {
        loader: 'file-loader', // npm install file-loader -D
        options: {
            name: '[name]_[hash].[ext]', // 打包出的图片的名称[ext]代表后缀
            outputPath: 'images/' // 图片打包到images/文件夹
        }
    }
},

打包字体文件 

{
    test: /\.(eot|ttf|svg)$/,
    use: {
        loader: 'file-loader', // npm install file-loader -D
    }
},

 url-loader

{
    test: /\.(jpg|png|gif)$/,
    use: { // 会将图片以base64的形式打包到js里面
        loader: 'url-loader', // npm install url-loader -D
        options: {
            name: '[name]_[hash].[ext]', // 使打包出的图片文件名+后缀和以前一样
            outputPath: 'images/', // 图片打包到images/文件夹
            limit: 2048 // <2kb生成base64直接加载到js里 >2kb会在images/生成文件,防止图片过大使得js文件过大,加载慢
        }
    }
},

css-loader

{ // css-loader合并所有的css文件
    test: /\.css$/,
    use: ['style-loader', 'css-loader', 'postcss-loader']
},

安装sass-loader的问题 

npm i -D sass-loader node-sass
如果安装出现报错,更换镜像使用:
npm install node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
再次报错:使用下面
npm install -g node-gyp
npm install --global --production windows-build-tools
{
    test: /\.scss$/,
    // loader执行顺序'sass-loader先翻译成css' =>'css-loader' => 'style-loader'
    // 执行顺序是从下到上,从右到左
    use: [
        'style-loader',
        {
            loader: 'css-loader',
            options: {               
                importLoaders: 2,
                // 如果在index.scss中又引入了sub.scss,
                // 加上这个属性会让sub.scss也经过下面两个loader处理
                // 否则不会经过下面两个loader处理
                modules: true // css模块化,防止全局样式的影响
                // 引入css时 import style from './index.css'
            }
        },
        'sass-loader',
        'postcss-loader' // npm i postcss-loader -D
    ]
},

postcss-loader使用方法 

在项目路径下创建postcss.config.js文件,并安装 npm i autoprefixer -D,文件内容如下

module.exports = {
    plugins: [ // npm i autoprefixer -D
        require('autoprefixer')
    ]
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wflynn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值