webpack是什么
Webpack 是一个模块打包器。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。
百度网盘视频下载:http://pan.baidu.com/s/1jIPJucu 百度网盘在线观看:http://pan.baidu.com/share/link?shareid=1645979812&uk=2469628767&fid=988128759555711
基本命令
webpack // 最基本的启动webpack的方法
webpack -w // 提供watch方法;实时进行打包更新
webpack -p // 对打包后的文件进行压缩
webpack -d // 提供source map,方便调式代码
全局安装
# npm install webpack -g
项目安装:
# 进入项目目录
# 确定已经有 package.json,没有就通过 npm init 创建
# 安装 webpack 依赖
# npm install webpack --save-dev
使用ES6
安装 babel-loader:
# npm install babel-loader --save-dev
安装转码规则:
# npm install babel-preset-es2015 --save-dev
ES7不同阶段语法提案的转码规则(共有4个阶段),选装一个
# npm install --save-dev babel-preset-stage-0
# npm install --save-dev babel-preset-stage-1
# npm install --save-dev babel-preset-stage-2
# npm install --save-dev babel-preset-stage-3
参考格式:
{
test: /\.js$/,
loader: 'babel?presets[]=es2015,presets[]=stage-0'
}
编译css
安装css-loader:
# npm install css-loader --save-dev
安装style-loader
# npm install style-loader --save-dev
参考格式:
{
test: /\.css$/,
loaders: ['style', 'css', 'autoprefixer']
}
编译less
# npm install less --save-dev
安装less-loader:
# npm install less-loader --save-dev
参考格式:
{
test: /\.less/,
loaders: ['style', 'css', 'autoprefixer', 'less'],
}
使用autoprefixer自动补上浏览器兼容
# npm install autoprefixer-loader --save-dev
参考格式:
{
test: /\.css$/,
loaders: ['style', 'css', 'autoprefixer']
}, {
test: /\.less/,
loaders: ['style', 'css', 'autoprefixer', 'less'],
}
编译文件
安装file-loader:
# npm install file-loader --save-dev
参考格式:
{
test: /\.(eot|woff|svg|ttf|woff2|gif)(\?|$)/,
loader: 'file-loader?name=[hash].[ext]'
}
编译图片
# npm install url-loader --save-dev
参考格式:
{
test: /\.(png|jpg)$/,
loader: 'url?limit=1200&name=[hash].[ext]'
}
编译JSX
# npm install jsx-loader --save-dev
# npm install babel-preset-react --save-dev
参考格式:
{
test: /\.jsx$/,
loaders: ['jsx', 'babel?presets[]=es2015,presets[]=stage-0,presets[]=react']
}
示例源码
在项目目录下,新建一个webpack.config.js文件,把下面代码复制进去,然后在新建一个app.js和index.js文件,写上console.log('你好世界');
执行命令:webpack 然后找到build目录就看到编译后的文件了
var webpack = require('webpack');
module.exports = {
entry: {
app: './app', //编译的入口文件
index: './index', //编译的入口文件
},
output: {
publicPath: '/build/', //服务器根路径
path: './build', //编译到当前目录
filename: '[name].js' //编译后的文件名字
},
module: {
loaders: [{
test: /\.js$/,
loader: 'babel?presets=es2015'
}, {
test: /\.css$/,
loaders: ['style', 'css', 'autoprefixer']
}, {
test: /\.less/,
loaders: ['style', 'css', 'autoprefixer', 'less'],
}, {
test: /\.(eot|woff|svg|ttf|woff2|gif)(\?|$)/,
loader: 'file-loader?name=[hash].[ext]'
}, {
test: /\.(png|jpg)$/,
loader: 'url?limit=1200&name=[hash].[ext]' //注意后面那个limit的参数,当你图片大小小于这个限制的时候,会自动启用base64编码图片
}
]
},
plugins: [
new webpack.optimize.CommonsChunkPlugin('common.js') //将公用模块,打包进common.js
],
resolve: {
extensions: ['', '.js', '.jsx'] //后缀名自动补全
}
};
牛逼
@blackjack 多谢支持
有源码吗?
来自酷炫的 CNodeMD
@wanghaa 最下面的示例源码就是
弱弱地问下,要怎么用呢?
@moxiaobei2 在项目目录下,新建一个webpack.config.js文件,把示例代码复制进去,然后在新建一个app.js和index.js文件,写上console.log(‘你好世界’); 执行命令:webpack 然后找到build目录就看到编译后的文件了
@1340641314 好的,我试试。期待中。。
@moxiaobei2 go
请问我想在项目下的SRC目录下放js/html/css等源文件要怎么运行webpack命令?要怎么配置?
entry: {
app: './app', //编译的入口文件
index: './index', //编译的入口文件
},
output: {
publicPath: '/build/', //服务器根路径
path: './build', //编译到当前目录
filename: '[name].js' //编译后的文件名字
}
你配置一个入口文件,然后引入你编译的模块,参考如下:
import './font/iconfont.css'; //字体图标
import './less/common.less'; //公共css样式
import './less/index.less'; //首页css样式
import './lib/swiper/swiper-3.3.1.min.css'; //移动端滑块插件css
import './lib/swiper/swiper-3.3.1.min'; //移动端滑块插件js
@anotherWill 晚上我看看有没有时间,不然我做一个demo出来吧
@1340641314 如果我用entry: ‘.webpack’,这种方式配置入口的话要怎么搞?
@anotherWill 直接写你要编译的文件入口路径就行了
@1340641314 我知道那样是可以。但是我只写一个标示。例如index.webpack.js/login.webpack.js只需要配置入口为’.webpack’就可以了。不用写那么多入口文件。但是我不知道在src目录下要怎么运行webpack命令。老是爆粗。
@anotherWill 你应该是在项目目录下运行吧,然后’./src/路径’;
@1340641314 我试了不行。等我有空再搞搞。
@anotherWill 今天不用加班,晚上录制个视频,顺便做个demo出来
@1340641314 厉害。
@anotherWill 现在可以了,就是英语很渣。凑合着先看看
@1340641314 谢谢。
mayrk 自豪地采用 CNodeJS ionic
小贝越来越厉害了
ps: 普通话你得加强一下了
@wwj559 哎😣
真巧,我也在做一个webpack的视频,点击此处 看到公众号的视频介绍文章,进入了公众号就可以看到历史的视频了。 我也这周才开始弄,每天一集WEB技术5分钟短视频,欢迎大家关注并拍砖。
@ron-liu 牛,我普通话和英语都很渣。。。
@1340641314 没有,我都听得很懂。我们差不多同时开始做同样的事情,真是有缘。
@ron-liu 呵呵,互相学习
mark 自豪地采用 CNodeJS ionic
mark 学习 自豪地采用 CNodeJS ionic
全局安装应该是:npm install webpack -g 吧
@zhuyunhe 已修正,谢谢大神指导
@1340641314 不敢,我是小白,谢谢大神写的博客,学习了
@zhuyunhe 我也是小白
mark
赞楼主,webpack应该好好推广一下。个人觉得webpack是个很牛叉的东西,它不仅仅是一个构建工具,还是一个模块化的工具。浏览器的开发,先天性的模块化支持不足,webpack可以作为一个模块化的polifill。
@vinnyguitar 多谢支持
做到最后一步打包公共模块的时候报这个错额
@zhuyunhe 这个应该是你写的js代码报错吧
@1340641314 我找到错了,是common.js应该在最前面引入,如图
mark
说来@我一下
学习啦