个人打仗前端并非良久,关于webpack倒是久仰大名,也难怪, 作为一款优异的模块加载器兼打包东西,webpack最近风头可谓一时无二,本身也想着进修并愿望能够相识其事情方式和理念,抛开跟风不谈,最少进修新的手艺对本身是大有裨益的。
援用一张webpack官网的图片,作为一款模块打包器,webpack担任剖析模块间的依靠关联,随行将模块根据差别的加载器划定规矩天生相对应的资本。我们须要模块化东西为我们做的,包含初始加载量少,按需加载,自定义打包逻辑等功用功用,webpack都能够满足,它的loader加载器能够将各种类型的资本转换成我们所须要的模块,其雄厚的插件体系也让我们自定义需求。
装置
//node 环境自没必要多说
//全局装置webpack
npm install -g webpack
//进入项目目次
//天生package.json
npm init
//装置webpack依靠
npm install webpack --save-dev
基础运用
//静态页面:index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>webpack</title>
</head>
<body>
<script type="text/javascript" src="bundle.js" ></script>
</body>
</html>
//JS文件进口:entry.js
document.write("Hello world. ")
编译 entry.js 并打包到 bundle.js,于敕令行输入
webpack entry.js bundle.js
随即你会看到敕令行会显现日记,提醒你打包胜利,翻开浏览器运转index.html,你会看到Hello world.
设置
var webpack=require("webpack");
module.exports={
//页面进口设置
entry:"./entry.js",
//进口文件输出设置
output:{
path:__dirname,
filename:"bundle.js"
},
module:{
//加载器设置
loaders:[
//加载器能够运用简称比方style,其详细划定规矩可见webpack的resolveLoader.moduleTemplates api
//.css 文件运用style-loader和css-loader加载器来处置惩罚
{ test: /\.css$/, loader: 'style-loader!css-loader' },
//图片文件运用url-loader加载器来处置惩罚,小于8kb的话则转换成base64
{ test: /\.(png|jpg)$/, loader: 'url-loader?limit=8192'}
]
},
//插件项设置
plugins:[
//为bundle.js头部增加解释信息
new webpack.BannerPlugin("this file is created by cala")
]
}
webpack.config.js设置基础上存在于每个运用webpack项目中,作为一个设置项,通知webpack它的详细功用,包含加载器作用与插件项的功用,一切的加载器都是经由过程npm来加载,能够浏览响应的文档来相识差别加载器所供应的功用。
实行
webpack --watch
启动监听形式,云云便能够防止在每次修正模块后都从新编译,开启监听形式后,没有变化的模块会在编译后缓存到内存中,而不会每次都被从新编译
npm install webpack-dev-server -g
运用webpack-dev-server构建当地服务器,在浏览器输入localhost:8080会以监听形式自动运转webpack
关于webpack另有许多使人惊异的处所,看官方文档能够晓得许多关于webpack的事情道理或者是其相干的周边生态,道阻且长,也愿望本身能够不停的进修新的手艺,将来能够用于项目中,更深的体味其道理跟玄妙。