首先安装Node.js,webpack需要nodejs的支持。
用npm安装webpack:
npm install webpack -g
此时webpack已经安装到了全局环境中,但是一般我们都会把webpack安装在项目依赖中:
npm install webpack --save-dev
还有webpack开发工具,需要单独安装:
npm install webpack-dev-server --save-dev
类似gulp,webpack需要创建webpack.config.js:
var webpack = require("webpack");
var ExtractTextPlugin = require('extract-text-webpack-plugin');
module.exports = {
entry: "./entry.js",
output: {
path: './dist',
filename: 'bundle.js'
},
module: {
loaders: [{
test: /\.js[x]?$/,
exclude: /node_modules/,
loader: 'babel',
query: {
presets: ['es2015', 'react']
}
}, {
test: /\.css$/,
loader: ExtractTextPlugin.extract("style",'css!postcss')
}]
},
postcss: [
require('autoprefixer')
],
plugins: [
new webpack.BannerPlugin("Copyright snakebang 2016"),
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.optimize.UglifyJsPlugin(),
new ExtractTextPlugin("style.css")
]
};
JS
Babel是我们webpack中都会用到的loader,我们需要单独安装它:
// npm一次性安装多个依赖模块,模块之间用空格隔开
npm install --save-dev babel-core babel-loader babel-preset-es2015 babel-preset-react
然后配置一下config文件中的loader:
loaders: [{
test: /\.js[x]?$/,
exclude: /node_modules/,
loader: 'babel',
query: {
presets: ['es2015', 'react']
}
},
...]
引用js的话,我们可以用npm安装你需要的js库,比如react和jquery,我们可以在编译的js中引入:
import $ from 'jquery';
\*或者*\
var $ = require('jquery');
CSS
css-loader的话,我们需要安装最起码的两个loader:
npm install style-loader css-loader
loader配置 :
{
test: /\.css$/,
loader: 'style!css'//添加对样式表的处理
}
我们可以用 postcss-loader 和 autoprefixer 来完成自动添加浏览器前缀
/*loaders*/
{
test: /\.css$/,
loader: 'style!css!postcss'
}
/*postcss*/
postcss: [
require("autoprefixer")
]
插件
编译完成css和js是在一个文件里的,我们可以用插件把js和css文件分离:
安装:
npm install --save-dev extract-text-webpack-plugin
配置:
var webpack = require('webpack');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
module.exports = {
entry: __dirname + "/app/main.js",
output: {
path: __dirname + "/build",
filename: "bundle.js"
},
module: {
loaders: [
{
test: /\.json$/,
loader: "json"
},
{
test: /\.js[x]?$/,
exclude: /node_modules/,
loader: 'babel',
query: {
presets: ['es2015', 'react']
}
},
{
test: /\.css$/,
loader: ExtractTextPlugin.extract('style', 'css!postcss')
}
]
},
postcss: [
require('autoprefixer')
],
plugins: [
new webpack.optimize.OccurenceOrderPlugin(),
new webpack.optimize.UglifyJsPlugin(),
new ExtractTextPlugin("style.css")
]
}