webpack的loader

code_lee3年前node1938

webpack打包图片文件的配置:

const path = require('path')

module.exports = {
    mode: "production",
    entry: './src/index.js',
    output: {
        filename: "bundle.js",  // 打包后文件名
        path: path.resolve(__dirname, 'dist') // 打包放到哪个文件夹下
    },
    module: {
        rules: [{
            test: /\.(jpg|png|gif)/,      // 匹配打包文件的后缀
            use: {
                loader: "file-loader",   // d打包图片需要的loader,
                options: {
                    // placeholder 占位符
                    name: '[name].[ext]',// 打包生成图片的命名格式
                    outputPath: 'images' //打包图片路径
                }
            }
        }]
    }
}


打包该index.js

var Header = require('./header.js');
var Sidebar = require('./sidebar.js');
var Content = require('./content.js');
const avatar=require('./avatar.jpg');

new Header();
new Sidebar();
new Content();

console.log(avatar)

图片.png


url-loader打包图片文件

const path = require('path')

module.exports = {
    mode: "production",
    entry: './src/index.js',
    output: {
        filename: "bundle.js",  // 打包后文件名
        path: path.resolve(__dirname, 'dist') // 打包放到哪个文件夹下
    },
    module: {
        rules: [{
            test: /\.(jpg|png|gif)/,      // 匹配打包文件的后缀
            use: {
                loader: "url-loader",   // 打包图片需要的loader,
                options: {
                    // placeholder 占位符
                    name: '[name].[ext]',// 打包生成图片的命名格式
                    outputPath: 'images', //打包图片路径
                    limit: 2048
                }
            }
        }]
    }
}

打包css样式

const path = require('path')

module.exports = {
    mode: "production",
    entry: './src/index.js',
    output: {
        filename: "bundle.js",  // 打包后文件名
        path: path.resolve(__dirname, 'dist') // 打包放到哪个文件夹下
    },
    module: {
        rules: [{
            test: /\.(jpg|png|gif)/,      // 匹配打包文件的后缀
            use: {
                loader: "url-loader",   // d打包图片需要的loader,
                options: {
                    // placeholder 占位符
                    name: '[name].[ext]',// 打包生成图片的命名格式
                    outputPath: 'images', //打包图片路径
                    limit: 2048
                }
            }
        },{
            test: /\.(css)/,      // 匹配打包文件的后缀
            use: ['style-loader', 'css-loader','sass-loader']
        }]
    }
}

打包scss文件

相关文档:https://webpack.js.org/loaders/sass-loader/

npm install sass-loader sass webpack --save-dev

或者

npm install sass-loader node-sass --save-dev
const path = require('path')

module.exports = {
    mode: "production",
    entry: './src/index.js',
    output: {
        filename: "bundle.js",  // 打包后文件名
        path: path.resolve(__dirname, 'dist') // 打包放到哪个文件夹下
    },
    module: {
        rules: [{
            test: /\.(jpg|png|gif)/,      // 匹配打包文件的后缀
            use: {
                loader: "url-loader",   // d打包图片需要的loader,
                options: {
                    // placeholder 占位符
                    name: '[name].[ext]',// 打包生成图片的命名格式
                    outputPath: 'images', //打包图片路径
                    limit: 2048
                }
            }
        },{
            test: /\.(scss)/,      // 匹配打包文件的后缀
            use: ['style-loader', 'css-loader','sass-loader']
        }]
    }
}

样式属性添加厂商前缀:postcss-loader

https://webpack.js.org/loaders/postcss-loader/

根目录下新建postcss.config.js

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

此时webpack.config.js 配置

const path = require('path')
module.exports = {
    mode: "production",
    entry: './src/index.js',
    output: {
        filename: "bundle.js",  // 打包后文件名
        path: path.resolve(__dirname, 'dist') // 打包放到哪个文件夹下
    },
    module: {
        rules: [{
            test: /\.(jpg|png|gif)/,      // 匹配打包文件的后缀
            use: {
                loader: "url-loader",   // d打包图片需要的loader,
                options: {
                    // placeholder 占位符
                    name: '[name].[ext]',// 打包生成图片的命名格式
                    outputPath: 'images', //打包图片路径
                    limit: 2048
                }
            }
        },{
            test: /\.(scss)/,      // 匹配打包文件的后缀
            use: ['style-loader', 'css-loader','sass-loader','postcss-loader']
        }]
    }
}

css模块化样式

修改css-loader配置

const path = require('path')

module.exports = {
    mode: "production",
    entry: './src/index.js',
    output: {
        filename: "bundle.js",  // 打包后文件名
        path: path.resolve(__dirname, 'dist') // 打包放到哪个文件夹下
    },
    module: {
        rules: [{
            test: /\.(jpg|png|gif)/,      // 匹配打包文件的后缀
            use: {
                loader: "url-loader",   // d打包图片需要的loader,
                options: {
                    // placeholder 占位符
                    name: '[name].[ext]',// 打包生成图片的命名格式
                    outputPath: 'images', //打包图片路径
                    limit: 2048
                }
            }
        },{
            test: /\.(scss)/,      // 匹配打包文件的后缀
            use: [
                'style-loader',
                {
                    loader: "css-loader",
                    options: {
                        importLoaders: 2,
                        modules: true
                    }
                },
                'sass-loader',
                'postcss-loader'
            ]
        }]
    }
}

要打包的index.js

import avatar from './avatar.jpg';
import style from './index.scss';

var img = new Image();
img.src = avatar;
img.classList.add(style.avatar);

var root = document.getElementById('root');
root.append(img);


返回列表

上一篇:webpack配置

下一篇:webpack的plugin

相关文章

node 的path模块中 path.resolve()和path.join()的区别

node 的path模块中 path.resolve()和path.join()的区别

【引言】path.resolve("www")    //D:\www\vue\koa-demo\www一、path模块的引入直接引用。no...

CommonJS模块与ES6模块的区别

到目前为止,已经实习了3个月的时间了。最近在面试,在面试题里面有题目涉及到模块循环加载的知识。趁着这个机会,将CommonJS模块与ES6模块之间一些重要的的区别做个总结。语法上有什么区别就不具体说了...

JWT

JWT

Token 简析Token 是什么Token 本质是字符串,用于请求时附带在请求头中,校验请求是否合法及判断用户身份Token 与 Session、Cookie 的区别Session 保存在服务端,用...

项目文档-基础阶段-Element-UI 入门

Element-UI 入门简介饿了么开源组件库github 4w+ star访问官网 基本用法初始化项目vue create element-test 安装npm i&n...

Window版本的nvm下载安装以及配置

Window版本的nvm下载安装以及配置

1. nvm下载nvm各版本下载链接:https://github.com/coreybutler/nvm-windows/releases建议下载安装版的,非安装版还需要额外配置环境变量。2. nv...

node.js原生开发服务端项目之使用本地node.js变量存储session信息实现登录

使用session实现登录的思路:1.服务端收到客户端请求,解析请求头获取sessionId。2.如果sessionId不存在,则生成一个唯一的sessionId,生成sessionId的规则可以根据...