初始化项目: package.jsonjavascript
{ "name": "webpack_test", "version": "1.0.0" }
安装webpackcss
npm install webpack@1 -g //全局安装 npm install webpack@1 --save-dev //局部安装
建立入口src/js/ : entry.jshtml
document.write("entry.js is work");
建立主页面 build/: index.html前端
<script type="text/javascript" src="js/build.js"></script>
编译jsjava
webpack src/js/entry.js build/js/build.js
建立第二个js: src/js/content.jsnode
module.exports = " <br> It works from content.js";
更新入口js : entry.jswebpack
* document.write("entry.js is works."); * document.write(require("./content.js"));
编译js:git
webpack src/js/entry.js build/js/build.js
安装样式的loadergithub
npm install css-loader style-loader --save-dev
建立样式文件: src/css/test.cssweb
body { background: red; }
更新入口js : entry.js
+ require("style-loader!css-loader!../css/test.css"); * document.write("entry.js is works."); * document.write(require("./content.js"));
编译js, 并查看页面效果
webpack src/js/entry.js build/js/bundle.js
更新入口js : entry.js
- require("style-loader!css-loader!./test.css"); + require("./test.css");
编译:
webpack src/js/entry.js build/js/bundle.js --module-bind css=style-loader!css-loader
建立webpack.config.js
module.exports = { entry: "./src/js/entry.js",//入口路径配置 output: {//出口配置 path: __dirname + '/build/js',//输出路径 filename: "bundle.js"//输出文件名 }, module: { loaders: [//模块加载器配置 { test: /\.css$/, loader: "style!css"} //全部css文件声明使用css-loader和style-loader加载器 ] } };
编译
webpack webpack --progress //编译显示进度
自动编译
webpack --watch //编译并启动监视(但须要刷新浏览器)
浏览器自动刷新(热加载)----解决手动刷新浏览器问题
npm install webpack-dev-server@1 -g webpack-dev-server 访问: http://localhost:8080/webpack-dev-server/ ; http://localhost:8080 !!!发现问题----访问的是文件夹路径而不是页面 devServer:{ contentBase: './build',//内置服务器动态加载页面所在的目录 historyApiFallback:true,//不跳转 inline:true } contentBase : 默认webpack-dev-server为根文件夹提供内置的服务,若是其余目录下的文件 提供服务须要在此设置目录(咱们设置为build文件夹) historyApiFallback : 开发单页面的时候很是有用,它依赖于H5的 history API,当 设置为true的时候全部的跳转都指向index.html; port:能够设置端口号,不设置时候默认为 8080 inline : 设置为true的时候回自动刷新(有的版本须要配合hot : true使用) webpack-dev-server 访问: http://localhost:8080 问题:页面没有热加载,自动刷新,由于index的src引入的硬盘中的build文件而不是webpack-dev-server服务器内存中的build 特色: 自动编译并刷新界面 不生成编译后的文件, 直接在内存中编译处理, 并启动服务器运行项目
安装依赖的loader
npm install url-loader file-loader --save-dev url-loader比file-loader功能更加完善是对file-loader的上层封装,但两者需配合使用
添加config中loader的配置
{ test: /\.(png|jpg)$/, loader: "url-loader?limit=8192" } //若是图片小于limit就会进行Base64编码
定义引用图片的样式: test.css
#box1{ background-image: url(../img/logo.jpg); height: 200px; width: 200px; } #box2{ background-image: url(../img/big.jpg); height: 200px; width: 200px; }
在页面引用样式或图片: index.html
<div id="box1"></div> <div id="box2"></div>
编译并浏览
webpack-dev-server
一、图片大于8kb的时候没法打包到js文件中, 二、index.html引入js的时候发现没有打包进去的图片路径不对 三、解决方法: * //publicPath : './js/',//webpack的绝对路径,设置服务index.html资源的路径
配置npm script命令
"scripts": { "start": "webpack-dev-server", "build": "webpack" } npm start: 编译运行项目 npm build: 编译打包