webpack 学习4 使用loader 以及常用的一些loader
webpack本身只支持处理JavaScript,其他的文件,如css img less是不识别的,所以才会有loader这个东西,它就是可以使webpack能够处理其他非js文件的拓展程序
首先我们在入口文件中引入css文件,我这里是index.js
import "./style.css"
然后下载
npm i style-loader -s -d
npm i css-loader -s -d
为什么要使用style-loader 先介绍以下这两个的用处
style-loader:使用<style>将css-loader内部样式注入到我们的HTML页面
css-loader: 加载.css文件
然后在webpack.config中配置
const path = require("path");//这个是node.js自带的路径模块 可以有效的防止不同机器上路劲出现差异问题
module.exports = {
mode: 'production',
entry: {
app: __dirname + '/src/index.js'
},
output: {
path: __dirname + '/build',//指定输出文件 的地址
filename: "./js/[name].js",//以入口文件的key值作为输入文件名 列入entry中是{app:"./src/index.js"} 那么对应的输出文件就是 app.js,这个只能是在entry参数为object时使用
},
module: {//模块
rules: [//规则
// {
// test: /\.css$/,//正则表达式,当匹配到.css结尾的文件时。使用以下loader
// use: [
// 'style-loader',//再使用 style-loader 顺序从下往上
// 'css-loader'//先使用 css-lloader
// ]
// },
//也可以配置使用 推荐
{
test: /\.css$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
modules:true,//开启css模块化
}
}
]
}
]
}
}
loader的基本使用就是这样。这样打包之后,发现所有的css样式,都添加到了html页面的<style>标签里面,这样在开发模式下是ok,但是生产模式下就不友好了,我们是不是可以将css提取出来放在外部文件中呢,答案是当然的。使用插件就可以,下一章,会有详细的记录。
常用的loader有
图片处理
file-loader
url-loader
npm i file-loader -s -d
npm i url-loader -s -d
在配置文件中配置
const path = require("path");//这个是node.js自带的路径模块 可以有效的防止不同机器上路劲出现差异问题
const webpack = require("webpack");
module.exports = {
mode: 'production',
entry: {
app: __dirname + '/src/index.js'
},
output: {
path: __dirname + '/build',//指定输出文件 的地址
filename: "./js/[name].js",//以入口文件的key值作为输入文件名 列入entry中是{app:"./src/index.js"} 那么对应的输出文件就是 app.js,这个只能是在entry参数为object时使用
},
module: {//模块
rules: [//规则
{
test: /\.css$/,//正则表达式,当匹配到.css结尾的文件时。使用以下loader
use: [
'style-loader',//再使用 style-loader 顺序从下往上
'css-loader'//先使用 css-lloader
]
},
{
test: /\.(png|jpg|gif)$/,
use: [
{
loader: 'file-loader',
options: {
name: '[hash].[ext]',//定义打包后的图片文件名
outputPath: "/img2",//定义打包后的图片放在那个目录,默认是/dist下(这里的dist是默认的输入地址,具体由output中的path指定)
publicPath: "./img",//在编写css代码的时候你使用的是background: url('./src/img0.png') 那么在打包之后输出的css代码就是background: url('builde_img.png'),而你输入的
//文件在img/builde_img_png下,这样肯定是找不到的,所以要给它配置一个发布地址,如例子,在打包后的输出的css文件中就是background: url('./img/builde_img.png')
}
}
]
},
{
test: /\.(png|jpg|gif)$/,
use: [
{
loader: "url-loader",//url-loader其实和file-loader一样都是又来处理图片等文件的loader,不过url-loader有一个功能,就是可以将指定的小的图片,
//转化base64,而大于这个大小的图片,则有file-loader处理,所以url-loader依赖与file-loader,经常的是将两个组合使用,注意使用url-loader的时候,
// 不要也不需要在rules中配置file-loader,否则会出现冲突导致转化失败
options: {
limit: 300000,//最小3k的图片,将转化成base64
}
}
]
}
]
}
}
以上就是常用loader使用的一个例子,常用loader还有很多,像是处理less的less-loader,html的html-loader等,使用方法都是大同小异,只是optins不同罢了,详情可以去webpack-loader去了解,本章不在叙述,下一章,记录webpack-plugin的使用
webpack 学习4 使用loader 以及常用的一些loader的更多相关文章
- webpack学习笔记一:安装webpack、webpack-dev-server、内存加载js和html文件、loader处理非js文件
一 .webpack学习环境准备: 1:window系统 2:安装node.js 官方网址 下载好后下一步下一步安装即可 安装步骤略过....... 3:nrm的安装 打开cmd命令控制台 输入:n ...
- webpack学习笔记—webpack安装、基本配置
文章结构: 什么是webpack? 安装webpack 'webpack基本配置 一.什么是webpack? 在学习react时发现大部分文章都是react和webpack结合使用的,所以在学reac ...
- webpack学习
// 一个常见的`webpack`配置文件 const webpack = require('webpack'); const HtmlWebpackPlugin = require('html-we ...
- webpack学习入门
写在前面的话 阅读本文之前,先看下面这个webpack的配置文件,如果每一项你都懂,那本文能带给你的收获也许就比较有限,你可以快速浏览或直接跳过:如果你和十天前的我一样,对很多选项存在着疑惑,那花一段 ...
- Webpack学习-Webpack初识
一.前言 webpack 到底是个什么东西呢,看了一大堆的文档,没一个能看懂的,因为上来就是给个module.exports 然后列一大堆配置,这个干啥,那个干啥,没一点用.但凡要用一个东西,一个东西 ...
- Webpack 学习笔记总结
Webpack安装 Linux系统默认已经安装了node&npm,但版本比较低,而且没法升级,可以重新下载Node然后通过软链接替换系统自带的node和npm; ln -s /path_to/ ...
- 更博不能忘——webpack学习笔记
webpack是前端构建系统就像grunt和gulp(之前有学习过grunt所以也就大概明白webpack是个什么东西),所以说前端技术大部分还真是相通的,现在觉得当时多看的东西并不白费,虽然长时间不 ...
- 【原】webpack学习笔记
之前在react的项目中有用过webpack,不过没有认真的去研究,这段时间又重新好好的学习一下webpack,发觉 webpack是一个很强大的东西.而且很好用,方便,接下来主要是做一下学习的笔记 ...
- webpack学习(入门基础)
webpack的学习webpack是什么?1:加载模块(将JS.sass/less.图片等作为模块来处理使用) 2:进行打包 webpack的优势?1:webpack以commonJS(JS的规范)的 ...
随机推荐
- Uva10491 Cows and Cars 【迁移自洛谷博客】
题目大意 假设有a头牛,b辆车(门的总数为a+b),你先选一个门,然后你最终选择前主持人会替你打开C扇有牛的门(不会打开你已经选择的门),问你要不要换门,输出"总是换门"的策略下, ...
- golang-练习2
反转字符串 package main import "fmt" func FirstReverse(str string) string { var str1 []rune run ...
- shell编程基础知识2
1.一维数组 定义:A={test1 test2 test3} 引用:echo ${A[0]} 表示引用第一个数组变量 echo ${A[1]} 表示引用第二个数组变量 显示数据参数:echo ${A ...
- STN空间变换网络
STN的主要思想是通过网络学习一个变化参数,然后计算出新图在原图上对应的坐标,再通过某种填充方法填充新图. 使得得到的新图很好的适应nn训练.可以理解为是拿来把不规范的图像变换为标准形式的图像. 网络 ...
- gensim Load embeddings
gensim package from gensim.models.keyedvectors import KeyedVectors twitter_embedding_path = 'twitter ...
- commons-fileupload-1.2.1.jar 插件上传与下载
1:首先在页面上写个文本域: <%@ page language="java" import="java.util.*" pageEncoding=&qu ...
- POJ 3348 Cows (凸包模板+凸包面积)
Description Your friend to the south is interested in building fences and turning plowshares into sw ...
- MISC_刷题笔记
图片隐写 png类型 查看文件头文件尾,更改长宽(bugku_隐写) zip类型 压缩包的多层嵌套,用strings看打印出来的是不是一个目录的样子(bugku_眼见非实)
- vue搭配的UI框架 pc端 + 移动端
PC桌面端UI框架: 1,iview (最新,用户评分高功能多炫酷 解决和避免了其他UI框架出现的一些小问题) 2, bootstrap (使用用户最多样式死板没特色) 3,Element ...
- winform防止输入法对扫码的干扰
把textbox的imemode的属性设为disable,就强制只能录入英文和半角符号,防止了中文输入法等的干扰. 参考:https://blog.csdn.net/jhycjhyc/article/ ...