1.介绍
webpack仅仅只支持本地的javascript模块,但是像CSS,LESS,TypeScript,JSX,CoffeeScript,图片等静态文件模块,我们是可以通过模块加载器(webpack-loader)来统一管理的。Loader 可以理解为是模块和资源的转换器,它本身是一个函数,接受源文件作为参数,返回转换的结果。loaders之间是可以串联的,一个加载器的输出可以作为下一个加载器的输入,最终返回到JavaScript上。
2.安装
找到需要加载的语言 例如 json
我们点击json 进去到loader-json github 进行安装
3.使用
创建一个上个博客一样的项目骨架。
安装需要的依赖:
$npm install css-loader style-loader --save-dev
//package.json
{
"name": "demo1",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "mnixu",
"license": "ISC",
"devDependencies": {
"css-loader": "^0.23.1",
"style-loader": "^0.13.1",
"webpack": "^1.13.1"
}
}
新建main.js:
//main.js
require('./style.css')
//style.css
body {
background: blue;
}
//index.html
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="bundle.js"></script>
</head>
<body>
<h1>hello world</h1>
</body>
</html>
新建webpack.config.js:
module.exports = {
entry: './main.js',
output: {
filename: 'bundle.js'
},
module:{
loaders:[
{
test: /\.css$/,
exclude: /node_modules/, //编译除了node_modules文件夹以外的
loader: 'style-loader!css-loader' //感叹号连接两个加载器,css-loader解析css文件 style-loader插入样式到html页面中
},
]
}
}
4.插件
在webpack中我们可以通过使用插件来满足某些需求,例如我们可以用 UglifyJs Plugin 来输出一个压缩的文件
因为 UglifyJs Plugin是webpack自带的插件 我们不需要依赖模块,但是在使用其他的插件时,我们可能需要依赖模块:
//index.html
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script type="text/javascript" src="bundle.js"></script>
</body>
</html>
//main.js
var thisIsLongName = "haha";
thisIsLongName += ' minixu' ;
document.write('<h1>' + thisIsLongName + '</h1>');
//webpack.config.js
var webpack = require('webpack');
module.exports = {
entry: './main.js',
output: {
filename: 'bundle.js'
},
plugins: [
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false
}
})
]
}
进行打包后发现我们的bundle.js果然被压缩了!
插件列表 http://webpack.github.io/docs/list-of-plugins.html
5.开发工具
webpack-dev-server 是一个小型的node.js的express服务,它能在我们改变代码后不用重新去执行webpack命令,实现自动更新代码,并且最厉害的是它通过socket.io服务实时监听我们的代码,当它们改变的时候,浏览器会自动进行刷新!
全局安装:
$npm install webpack-dev-server -g
运行:
webpack-dev-server
运行我们刚刚的项目:
它会启动一个服务,我们可以通过浏览器访问 http://localhost:8080/webpack-dev-server/。
会看到 顶部有App ready status 栏 ,如果想去掉它可以 使用 webpack-dev-server --inline 去启动服务。
其实浏览器打开
http://localhost:8080/ 也是能访问这个服务的,但是不会有热加载效果
注意:这个dev server会将打包生成的文件存在内存中,而不是硬盘里,所以,并不能看到生成的bundle.js。
如果你需要这个文件,你还是得需要输入webpack命令打包。
6.结语
在这里我们只是简单的把这个服务启动起来,没有进行任何配置,但是使用webpack-dev-server最好还是需要一些配置,
否则会出现一些问题,这些在之后的文章中会涉及到!