webpack 1.x 学习总结
webpack介绍(from github):
A bundler for javascript and friends. Packs many modules into a few bundled assets. Code Splitting allows to load parts for the application on demand. Through "loaders," modules can be CommonJs, AMD, ES6 modules, CSS, Images, JSON, Coffeescript, LESS, ... and your custom stuff. ——from github
总之意思就是说webpack是一个打包工具,他可以通过“代码分割”打包的时候包含所需要的部分,通过loader处理各种类型包含commonjs、amd、es6、css、iamge等等各种类型的文件。
各类文件处理方式:
webpack相比较grunt按照任务执行操作,他是根据文件类型处理文件。项目中主要的文件类型有html、css、less/sass、image、tpl(模板文件)、js.下面分别进行说明:
.html:
处理html文件需要html-laoder,webpack.config.js配置文件中的配置方式如下所示:
{
test:/\.html/,
loader:'html-loader'
},
html进行更加复杂操作需要html-webpack-plugin插件,配置如下图所示:
plugins:[
new htmlWebpackPlugin({
filename:'a.html',
template:"index.html",
inject:'body',//body head false
title:'webpack is a',
chunks:['a']
//excludeChunks:['c'],
minify:{
removeComments:true,
collapseWhitespace:true
}
})
]
ps参数说明:
Filename:打包后文件名
Template:模板对象
Inject:body/head/false(不自动注入)
Minify:removeComments/collapseWhitespace(压缩)
Chunks:包含哪些chunk
excludeChunks:不包含哪个chunk
自定义参数:可在模板中通过<%=xxx%>方式获取
compilation.assets[路径].source():内联插入
.js:
webpack可以处理普通js,对于es6(CSMAScript-262第六次修改,也叫ECMA2015)语法需要转换成普通js,因此需要一个转换器--babel,babel需要知道你想要转换哪些es6特性。通过presets可以设置,转换哪些特性,设置presets的值为latest或者env则转换所有特性,配置如下:
module:{
loaders:[
{
test:/\.js$/,
loader:'babel-loader',
include:path.resolve(__dirname,"src"),
exclude:path.resolve(__dirname,"node_modules"),
query:{
presets:['latest']
}
}
]
}
因为babel处理比较耗时,特制定include(指定扫描哪些路径)与exclude(指定扫描排除哪些路径)
.css:
css-loader用于处理css文件 style-loader用于将css-loader处理后的文件插入到页面中(建立style标签)
{
test:/\.css$/,
loader:'style-loader!css-loader'
},
.css/less:
less文件通过less-loader处理,处理后仍需要css-loader和style-loader,如有需要还需要post-css-loader(增加浏览器前缀)
{
test:/\.less$/,
loader:'style-loader!css-loader!less-loader'
}
.jpg...:
处理图片文件可以使用file-loader和url-loader,两者的区别:file-loader负责加载图片,url-loader可以设置一个limit值,当图片大小大于该阈值时使用file-loader加载,当图片小于该阈值时会被硬编码成base64格式,添加到文件中。配置如下所示:
{
test:/\.(jpg|png|gif|svg)/,
loader:'file-loader',//url-loader
query:{
name:'static/[name]-[hash].[ext]',
//limit:'20000' //单位b
}
//test:/\.(jpg|png|gif|svg)/i,
//loaders:[
// 'url-loader?limit=20000&name=assets/[name]-[hash:5].[ext]',
// 'image-webpack'
//]
}
.tpl
tpl主要是指项目中用到的各种模板文件,比如ejs/jade.....我们需要安装响应的“loader”,以ejs为例,首先要安装ejs-loader
{
test:/\.tpl/,
loader:'ejs-loader'
}
了解到的只是webpack打包冰山一角,持续跟进webpack中。。。。
webpack 1.x 学习总结的更多相关文章
- vue第二单元(webpack的配置-学习webpack的常用配置)
第二单元(webpack的配置-学习webpack的常用配置) #课程目标 掌握webpack的常用配置 掌握如何根据实际的需求修改webpack的对应配置 了解webpack-dev-server的 ...
- webpack 3.X学习之多页面打包
简介 我们开发不可能只写一个页面,每次都要写很多页面,这时为了开发效率,我们使用前端自动化工具webpack,那么webpack是如何打包页面的呢?又是如何打包多页面的呢? 单页面打包 我们知道要打包 ...
- webpack入门-个人学习资源收集
本来是想自己写哈个人学习webpack心德的,不过网上现在已经有各种比较好的,详细的入门或者深入资源了. 所以我就简单总结了一下,我在入门webpack时看的一些博客和文档,以及顺道看到的一些觉得也应 ...
- Webpack打包工具学习使用
Webpack 是当下最热门的前端资源模块化管理和打包工具.它可以将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源.还可以将按需加载的模块进行代码分隔,等到实际需要的时候再异步加载.通过 ...
- webpack vuejs项目学习心得
最近在做移动端的项目,最近webpack和vuejs很火,就想到了用vuejs webpack来构建我的项目 先了解了一些webpack的入门基础 http://webpack.github.io/d ...
- webpack之基础学习
webpack工作原理: 通过一个入口文件,main.js开始找到你的项目的所有依赖文件,使用loaders处理它们,最后打包为一个浏览器可识别的JavaScript文件. Webpack的核心原理 ...
- webpack 3.X学习之Babel配置
Babel是什么 Babel是一个编译JavaScript的平台,它的强大之处表现在可以通过编译帮你达到: 使用下一代的javascript(ES6,ES7,--)代码,即使当前浏览器没有完成支持: ...
- webpack 3.X学习之图片处理
CSS中图片处理 在src目录下新建一个images目录,把图片放入images文件夹中:在index.html文件中增加一个div标签: /src/index.html: <div id=&q ...
- webpack 3.X学习之CSS处理
Loaders Loaders是Webpack最重要的功能之一,他也是Webpack如此盛行的原因.通过使用不同的Loader,Webpack可以的脚本和工具,从而对不同的文件格式进行特定处理. Lo ...
- webpack 3.X学习之基本配置
创建配置文件webpack.config.js 在根目录在手动创建webpack.config.js,配置基本模板 module.exports ={ entry:{}, output:{}, mod ...
随机推荐
- property--staticmethod--classmethod
特性(property): 作为装饰器使用,调用方式从最初的方法调用改变为属性调用 类方法(classmethod):和类进行交互,单不和实例进行交互 在函数中可以不用上传参数 静态方法(static ...
- Debian GNU/Linux 8.4 (jessie)编译安装php.md
编译遇到的问题很多.网上的文章往往是记录遇到的报错,贴上对应的解决. 而实际的环境,如操作系统,安装的软件必然有差异,所以,更重要的是,如何找到解决方法(不担保按步骤做可以编译成功),并将过程自动化. ...
- emacs elpy代码补全功能
emcas中使用elpy编辑python代码,经常需要格式化代码 格式化代码方法C-c C-r f (elpy-format-code) 使用这个快捷键时,需要保证两点, 1.已经安装了yapf或者a ...
- hibernate的集合映射(详细笔记)
- Linux系列教程(十)——Linux文本编辑器vim
通过前面几篇博客我们终于结束了Linux常用命令的介绍,Linux常用命令主要包括以下: ①.Linux文件和目录处理命令 ②.Linux链接命令和权限管理命令 ③.Linux文件搜索命令 ④.Lin ...
- B树,B+树,B*树
参考资料 http://www.cnblogs.com/Bob-FD/archive/2012/06/20/2556505.html 第一节.B树.B+树.B*树 1.前言: 动态查找树主要有:二叉查 ...
- 1026: [SCOI2009]windy数
1026: [SCOI2009]windy数 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 8247 Solved: 3708[Submit][Sta ...
- css设置黑体宋体等(转)
代码如下: .selector{ font-family:"Microsoft YaHei",微软雅黑,"MicrosoftJhengHei",华文细黑,STH ...
- 浅谈Jquery中的bind(),live(),delegate(),on()绑定事件方式 [转载]
前言 因为项目中经常会有利用jquery操作dom元素的增删操作,所以会涉及到dom元素的绑定事件方式,简单的归纳一下bind,live,delegate,on的区别,以便以后查阅,也希望该文章日后能 ...
- 分布式框架Dubbo入门
Dubbo简介 Dubbo是一个Alibaba开源额分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.dubbo就是个服务框架,只有在分布式的时候,才有dubb ...