webpack构建与loaders
loaders 定义
先了解一下webpack,webpack是一个用于针对js文件的构建工具,在被构建的js文件中,我们可以使用require语句和webpack loader,如下:
var css = require("css!./file.css");
// => returns css code from file.css, resolves imports and url(...)
css代码中的 @import与url()类似js的require()请求资源文件,css-loader 将会对 file.css文件中的 @import 和 url(...) 请求的资源进行解析处理,并转交
给适合处理请求资源文件的file-loader 或 url-loader。详情请看官网:https://www.npmjs.com/package/css-loader
基于上面示例,我对loader的定义是 转译器
loaders 特征
1、loaders 支持链式,它们被应用在资源的的管道中,最后一个loader预期返回javascript;每个laoder会返回任意格式的资源,并交给下一个loader进行处理.
2、loaders 支持同步和异步
3、loaders 运行在node.js环境中,可以做任何可能的事情(使用node.js api)
4、loaders 接受查询参数,可以通过配置loader来使用
5、loaders 可以在配置中通过正则匹配的文件扩展名来绑定
6、loaders 可以通过npm发布,安装
7、除了在package.json文件配置 main入口(指定js文件)之外,一般的js模块都可以作为导出的loader
8、loaders 可以访问配置
9、plugins 可以给予 loaders 更多的特征
10、loaders 可以处理额外的任意文件
...
如果你对一些loader示例感兴趣,请查看loaders列表:http://webpack.github.io/docs/list-of-loaders.html
loaders 解析
loaders解析类似于模块解析,一个loader模块 就是一个执行于node.js环境中的函数;一般情况下,你应该通过使用npm来
管理你的loaders,但是在你的项目中,也可以使用单个js模块来作为你的loader
1、引用loaders
loaders经常被命名为XXX-loader,XXX 代指文件mime类型的名称,如:json-loader
我们可以通过全名(如:json-loader),也可以通过简写名(如:json)来引用loaders
2、loaders 安装
如果loader存在于npm中,你可以像下面代码来安装loader:
npm install xxx-loader --save
or
npm install xxx-loader --save-dev
3、用法
使用require语句指定loaders
我们使用 感叹号! 来将资源文件与loaders分开,使用多个loaders,应在所有的转换规则(loader)之前加上感叹号!,如:
require(!style!css!less!./src/css/index.less);
注:使用多个loaders是由右向左处理的,文件依次按less-loader,css-loader,style-loader处理
通过在webpack.config.js文件中配置指定loaders
{
module: {
loaders: [
{ test: /\.jade$/, loader: "jade" },
// => "jade" loader is used for ".jade" files
{ test: /\.css$/, loader: "style!css" },
// => "style" and "css" loader is used for ".css" files
// Alternative syntax:
{ test: /\.css$/, loaders: ["style", "css"] },
]
}
}
通过在命令行中配置使用
通过命令行你可以将loaders绑定到扩展的文件进行转换,如:
webpack --module-bind jade --module-bind 'css=style!css'
这里使用jade-loader绑定到 扩展的jade文件进行转换,使用style-loader,css-loader绑定到css文件进行转换
4、查询字符串
Loader可以通过查询字符串(类似web页面url中的查询字符串)传递查询参数,使用问号?将 loader与查询字符串连接,loader后跟查询字符串,如:
url-loader?mimetype=image/png
or
url-loader?{"mimetype"="image/png"}
require写法
require("url-loader?mimetype=image/png!./file.png");
webpack.config.js配置
{ test: /\.png$/, loader: "url-loader?mimetype=image/png" }
or
{
test: /\.png$/,
loader: "url-loader",
query: { mimetype: "image/png" }
}
命令行绑定
webpack --module-bind "png=url-loader?mimetype=image/png"
ps:转载请注明 博客园:杨君华,文章有不足之处,望指正,多包涵。
webpack构建与loaders的更多相关文章
- webpack构建vue项目(配置篇)
最近公司要求用vue重构项目,还涉及到模块化开发,于是乎,我专门花了几天的时间研究了一下webpack这个目前来看比较热门的模块加载兼打包工具,发现上手并不是很容易,现将总结的一些有关配置的心得分享出 ...
- webpack构建具备版本管理能力的项目
webpack是时下十分流行的编译和打包工具,它提供一种可扩展的loader的方式,简单的配置,便可以编译打包各类型的文件,包括js.css.image.font.html,以及各种预编译语言都不在话 ...
- (24/24) webpack小案例--自己动手用webpack构建一个React的开发环境
通过前面的学习,对webpack有了更深的认识,故此节我们就利用前面相关知识自己动手用webpack构建一个React的开发环境,就算是一个小案例吧. 注:此处使用的开发工具是Webstorm. 1. ...
- 深入浅出的webpack构建工具--webpack4+vue搭建环境 (十三)
深入浅出的webpack构建工具--webpack4+vue搭建环境 (十三) 从上面一系列的webpack配置的学习,我们现在来使用webpack来搭建vue的开发环境.首先我们来设想下我们的项目的 ...
- 深入浅出的webpack构建工具---HappyPack优化构建(九)
阅读目录 一:什么是HappyPack? 作用是什么? 二:如何在配置中使用HappyPack? 回到顶部 一:什么是HappyPack? 作用是什么? Webpack是允许在NodeJS中的,它是单 ...
- 深入浅出的webpack构建工具---DevServer配置项(二)
深入浅出的webpack构建工具---DevServer配置项(二) 阅读目录 DevServer配置项 1. contentBase 2. port 3. host 4. headers 5. hi ...
- 深入浅出的webpack构建工具---webpack基本配置(一)
深入浅出的webpack构建工具---webpack基本配置(一) 阅读目录 一:webpack入门构建: 1. 安装webpack到全局 2. 安装webpack到本项目. 3. 如何使用webpa ...
- webpack构建工具快速上手指南
最近在研究react项目,接触到webpack打包工具.刚接触的时候一脸茫然,经过最近的学习,下面我来带大家开启webpack入门之旅. webpack是什么 webpack是近期最火的一款模块加载器 ...
- 用React & Webpack构建前端新闻网页
这是一篇给初学者的教程, 在这篇教程中我们将通过构建一个 Hacker News 的前端页面来学习 React 与 Webpack. 它不会覆盖所有的技术细节, 因此它不会使一个初学者变成大师, 但希 ...
随机推荐
- 硬盘分区时GPT和MBR的区别/选择
最明显的区别是MBR最大支持2T的硬盘,而GPT则更大. 1.最先出现在Windows8中设置新磁盘,系统会询问你是想要使用MBR还是GPT分区,GPT是一种新的硬盘分区标准.GPT带来了很多新特性, ...
- xcoj1062
题意:给出一个闭合折线上的一堆点(不按顺序),然后再给一个点P,要求判断P是否在闭合折线内 sol attempt1:一开始觉得是个模板题的,后来发现不对劲: 给出的点并不按照顺序.这样模板大法就不行 ...
- [NOIP2012] 普及组
寻宝 大模拟 #include<iostream> #include<cmath> #include<algorithm> using namespace std; ...
- C#点击按钮关闭当前窗体 打开另一个窗体。
网上有很多是隐藏当前窗体,但是这样占用资源,效果不好,因此改进方法如下: private void button1_Click(object sender,EventArgs e) { this.hi ...
- Guava的异常工具类--Throwables
Guava为我们提供了一个非常方便并且实用的异常处理工具类:Throwables类. 这个类的API可以参见:http://docs.guava-libraries.googlecode.com/gi ...
- Django admin coercing to Unicode: need string or buffer, tuple found
见 http://stackoverflow.com/questions/29762306/django-admin-coercing-to-unicode-need-string-or-buffer ...
- 【Beta版本】冲刺-Day5
队伍:606notconnected 会议时间:12月13日 目录 一.行与思 二.站立式会议图片 三.燃尽图 四.代码Check-in 一.行与思 张斯巍(433) 今日进展:继续修改界面及图标设计 ...
- 捉襟见肘之UIView中contentMode属性
UIView.h @property(nonatomic) UIViewContentMode contentMode; // default is UIViewContentModeScaleToF ...
- HTTP,TCP/IP协议
本文转自cnblogs:http://www.cnblogs.com/xhwy/archive/2012/03/03/2378293.html 一.概述 1.1 TCP HTTP UDP: 都 ...
- Setting up Django and your web server with uWSGI and nginx
https://uwsgi.readthedocs.io/en/latest/tutorials/Django_and_nginx.html Setting up Django and your we ...