若是你已经读了 Webpack学习笔记 - 体验篇,是否是有想进一步了解 Webpack
的冲动。css
没有。那是由于包子太大,你尚未咬馅儿呢。html
Webpack
把项目当作一个总体,经过一个给定的入口文件 index.js
,从这个文件开始找到项目依赖的全部文件,而后使用 loaders
处理这些文件,最后将全部文件打包为一个浏览器可识别的JavaScript文件 bundle.js
。jquery
将Webpack学习笔记 - 体验篇中示例进行深加工。webpack
给 Webpack
增长配置文件 webpack.config.js
:git
module.exports = { entry: "./src/index.js", //入口文件 output: { path: "./dist/", //打包输出目录 filename: "bundle.js" //打包输出文件名 } }
项目根据目录下执行 webpack
指令,输出结束以下:github
Hash: a4364839552719a85945 Version: webpack 1.14.0 Time: 629ms Asset Size Chunks Chunk Names bundle.js 278 kB 0 [emitted] main [0] ./src/index.js 92 bytes {0} [built] [2] ./src/hello.js 170 bytes {0} [built] - 1 hidden modules
输出结果和最终效果与Webpack学习笔记 - 体验篇中示例相同。web
给项目增长样式文件、json数据文件、图片npm
新建 src/hello.css
文件,内容以下:json
#hello { margin: auto; width: 80%; height: 500px; background-color: #00FF00; background-image: url(img/webpack.png); background-position: top center; background-size: 100% auto; background-repeat: no-repeat; line-height: 2.0em; font-family: 'Microsoft YaHei'; font-size: 2.0em; text-align: center; color: red; }
新建 src/hello.json
文件,内容以下:浏览器
{ "hello": "Hello Webpack, the Webpack test project! From Json." }
修改 hello.js
文件,内容以下:
var $ = require('jquery'); var json = require('./hello.json'); module.exports = function() { var hello = $('<div></div>'); hello.html(json.hello); return hello; };
修改 src/index.js
文件,内容以下:
var $ = require('jquery'); var logo = require('./img/logo.png'); var style = require('./hello.css'); var hello = require('./hello.js'); $('#hello').append('<img title="webpack logo" src="' + logo + '" /> Webpack logo'); $('#hello').append(hello());
新建 src/img
目录,将 logo.png
和 webpack.png
拷贝至 img
目录。
修改配置文件 webpack.config.js
以下
module.exports = { entry: "./src/index.js", //入口文件 output: { path: "./dist/", //打包输出目录 filename: "bundle.js", //打包文件名 publicPath: "./dist/" //资源发布路径 }, module: { loaders: [ { test: /\.css$/, //处理css文件 loader: 'style!css' }, { test: /\.json$/, //处理json文件 loader: 'json' }, { test: /.*\.(gif|png|jpe?g|svg)$/i, //处理图片 loaders: [ 'url?limit=8192&name=[name].[ext]', 'image-webpack?{optimizationLevel: 7, interlaced: false, pngquant:{quality: "65-90", speed: 4}, mozjpeg: {quality: 65}}' ] } ] } }
安装 loader
模块
npm install style-loader css-loader json-loader url-loader image-webpack-loader --save-dev
项目根目录下执行 webpack
指令,输出结束以下
Hash: 0b88a10526d6c19b7e49 Version: webpack 1.14.0 Time: 4701ms Asset Size Chunks Chunk Names webpack.png 40 kB [emitted] bundle.js 291 kB 0 [emitted] main [0] ./src/index.js 258 bytes {0} [built] [8] ./src/hello.js 179 bytes {0} [built] + 8 hidden modules
输出目录 dist
结构以下:
webpack-test-project |--dist | |--bundle.js | |--webpack.png
查看效果
浏览器打开 index.html
文件,点击看效果
webpack.config.js
管理项目。loader
模块,支持多种文件的打包处理。