webpack模块管理器
概念:webpack是模块加载器兼打包工具,它能把各种资源,例如JS(含JSX)、coffee、样式(含less/sass)、图片等都作为模块来使 用和处理。
作用和优势:
- webpack 是以 commonJS 的形式来书写脚本,但对 AMD/CMD 的支持也很 全面,方便旧项目进行代码迁移。
- 能被模块化的不仅仅是 JS 了。
- 开发便捷,能替代部分 grunt/gulp 的工作,比如打包、压缩混淆、图片转 base64等。
- 扩展性强,插件机制完善,特别是支持 React 热插拔(见 react-hot-loader ) 的功能让人眼前一亮。
Webpack可以将多种静态资源 js、css、less 转换成一个静态文件,减少了 页面的请求。
webpack的安装
全局安装
npm install webpack -g
查看安装版本:
webpack -v
查看安装情况:
webpack -help
当前项目安装:
npm init
一路回车,即在当前项目创建了package.json文件。
将webpack 安装在当前项目的开发依赖:
npm install webpack --save-dev
使用npm安装style-loader和css-loader
npm install css-loader style-loader --save-dev
使用npm安装babel插件
npm install babel-core babel-loader babel-preset-es2015 babel-preset-stage-0 --save-dev
项目结构如下:
module1.js代码如下:
function test1(){
return 1;
}
module.exports = test1;
module2.js代码如下:
function test2(){
return 1;
}
module.exports = test2;
app.css代码如下:
body{
background-color: red;
}
.box {
background:url("../assets/2.jpg") no-repeat;
}
main.js代码如下:
var t1 = require("./module1");
var t2 = require("./module2");
require("./app.css");
console.log(t1() + t2());
webpack.config.js代码如下:
var path = require("path");
module.exports ={
//用来配置需要打包的入口文件
entry:{
main:path.resolve(__dirname,"main")
},
//配置打包后的文件名字和文件夹
output:{
filename:"[name].bundle.js",
path:path.resolve(__dirname,"build")
},
module:{
//加载器配置
rules:[
{test:/\.css$/,loader:"style-loader!css-loader"},
{test:/\.(jpg|png|gif|jpeg)$/,loader:"url-loader"},
{test:/\.js$/,loader:"babel-loader",query:{presets:["es2015"]}}
]
},
}
package.json模板,直接npm install
{
"name": "demo",
"version": "1.0.0",
"description": "",
"main": "a.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {},
"devDependencies": {
"babel-core": "^6.25.0",
"babel-loader": "^7.1.1",
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-0": "^6.24.1",
"css-loader": "^0.28.4",
"file-loader": "^0.11.2",
"style-loader": "^0.18.2",
"url-loader": "^0.5.9",
"webpack": "^3.4.1"
}
}