日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達者為師

網(wǎng)站首頁 編程語言 正文

webpack-loader: loader的使用(圖片、txt文件、url、less)

作者:小強有個dream 更新時間: 2022-04-04 編程語言

多個文件導(dǎo)入loader處理

// 文件base.css
@import './base.css';

// 文件login.css
.title {
    color: red;
    display: grid;
    transition: all .5s;
    user-select: none;
    background: linear-gradient(to bottom, white, black);
}
module.exports = {
    entry: './src/index.js',
    module: {
        rules: [
            {
                test: /\.css$/,
                use: ['style-loader', {
                    loader: 'css-loader',
                    options: {
                        importLoaders: 1 // 工作時找到其其它css,讓前1個的loader取處理
                    }
                },
                {
                    loader: 'postcss-loader',
                    options: {
                        postcssOptions: {
                            plugins: [
                                // require('autoprefixer'),
                                'postcss-preset-env' // 這是個工具包集合,包括autoprefixer
                            ]
                        }
                    }
                }]
            }
        ]
    }
  };

分析

module中rules的use執(zhí)行順序是從后往前執(zhí)行
處理base.css:

  1. postcss-loader通過postcss-preset-env插件對base.css進行加前綴等兼容處理
  2. 執(zhí)行css-loader發(fā)現(xiàn)@import引入的文件,importLoaders: 1交給前面一個loader(postcss-loader)處理
    // css-loader可以處理 import / require的文件, 得到樣式的數(shù)組
  3. style-loader 將樣式處理得到style標(biāo)簽

處理import/require引入的圖片

import importImg from '../assets/xx.png' // import導(dǎo)入

function packageImage() {
    // let img = require('../assets/xx.png').default // require導(dǎo)入
    return `
    <img src="${importImg}" />
    `
}

document.body.innerHTML += packageImage();
  module.exports =  {
    module: {
        rules: [
            {
                test: /\.(png|jpe?g|gif|svg)$/i,
                use: {
                    loader: 'file-loader',
                    options: {
                        esModule: false // 不轉(zhuǎn)為esModule
                    }
                }
            }
        ]
    }
  }

處理 css中background-image引入的圖片, 并自定義打包后的名稱及存放路徑

// /src/css/image.css
.bg {
    background-image: url(../assets/xx.png);
    background-size: cover;
    width: 200px;
    height: 400px;
}
// /src/js/login.js
import '../css/login.css'

function login() {
    return `
    <div class="title">login-title</div>
    `
}

document.body.innerHTML += login();
  module.exports =  {
    module: {
        rules: [
            {
                test: /\.css$/,
                use: ['style-loader', {
                    loader: 'css-loader',
                    options: {
                        importLoaders: 1, // 工作時找到其其它css,讓前1個的loader取處理
                        esModule: false
                    }
                },
                {
                    loader: 'postcss-loader',
                    options: {
                        postcssOptions: {
                            plugins: [
                                // require('autoprefixer'),
                                'postcss-preset-env' // 這是個工具包集合,包括autoprefixer
                            ]
                        }
                    }
                }
                
            ]
            },
            {
                test: /\.(png|jpe?g|gif|svg)$/i,
                use: {
                    loader: 'file-loader',
                    options: {
                        esModule: false, // 不轉(zhuǎn)為esModule
                        name: '[name].[hash:6].[ext]', // 保留原文件名name,加上6位文件hash,ext后綴
outputPath: 'img' // 存放路徑
                    }
                }
            }
        ]
    }
  }

處理.txt文件

// file.txt
file123
// webpack.config.js
  module.exports =  {
    module: {
        rules: [
            {
                test: /\.txt$/i,
                use: {
                    loader: 'raw-loader',
                    options: {
                        esModule: false
                    }
                }
            }
        ]
    }
  }

url-loader處理圖片

      module.exports =  {
        module: {
            rules: [
                {
                    test: /\.(png|jpe?g|gif|svg)$/i,
                    use: 
                    {
                        loader: 'url-loader',
                        options: {
                            esModule: false, // 不轉(zhuǎn)為esModule
                            name: '[name].[hash:6].[ext]', // 保留原文件名name,加上6位文件hash,ext后綴
                            outputPath: 'img', // 存放路徑
                            limit: 25 * 1024 // 大于25字節(jié)不做處理
                        }
                    }
                }
            ]
        }
      }

處理less

module: {
    rules: [
      {
        test: /\.less$/,
        use: ['style-loader', {
          loader: 'css-loader',
          options: {
            importLoaders: 1 // 工作時找到其其它css,讓前1個的loader取處理
          }
        },
          {
            loader: 'postcss-loader',
            options: {
              postcssOptions: {
                plugins: [
                  // require('autoprefixer'),
                  'postcss-preset-env' // 這是個工具包集合,包括autoprefixer
                ]
              }
            }
          },
          "less-loader"
        ]
      }
    ]
  }

原文鏈接:https://blog.csdn.net/qq_36413371/article/details/121263523

欄目分類
最近更新