webpack入门
1.入门
webpack网站:https://doc.webpack-china.org/
npm install webpack -g
但是官方不推荐,这会将项目中的webpack锁定到指定版本,并且在使用不同webpack版本的项目中,可能会导致构建项目失效。
npm init -y
npm install webpack --save-dev
webpack -v //查看版本
在终端中的语法:
webpack {entry file} {destination for bundled file}
e.g. webpack src/entry.js dist/bundle.js
2.webpack.config.js
//引用Node中的path模块
这个代码写完后,可以在终端中直接输入webpack就会进行打包。
多入口文件:
3.设置webpack-dev-server
npm install webpack-dev-server --save-dev
/webpack.config.js:
devServer:{
contentBase:path.resolve(__dirname,'dist'),
host:'localhost',
compress:true,
port:1717
}
在终端中输入 webpack-dev-server 。也可以在package.json中'scripts'写'server':'webpack-dev-server',然后npm run server;
4.Loaders
Loaders是webpack的重要功能,通过使用不同的loader,webpack可以对不同文件格式进行特定处理。
举例:可以把SASS文件写法转换成CSS,而不在使用其他转换工具。
可以把ES6,ES7代码,转换成大多数浏览器兼容的JS代码。
可以把React中的JSX转换成Javascript代码
注意:所有的Loaders都需要在npm中单独安装,并在webpack.config.js中进行配置
示例
在src/css文件夹下建立一个index.css
然后在/src/entry.js中首行加入代码:import css from './css/index..css';
npm install style-loader --save-dev
npm install css-loader --save-dev
引入代码压缩模块,const uglify = require('uglifyjs-webpack-plugin'); 然后在plugins new uglify();
5.打包HTML文件
假设src目录中有个index.html 这个HTML文件不应当包含任何script引入标签,因为这个任务应该交给webpack来执行:
在webpack.config.js中,先引入我们的html-webpack-plugin
const htmlPlugin = require('html-webpack-plugin');
引入后用npm进行安装
npm install html-webpack-plugin -save-dev
最后在webpack.config.js里对plugins进行插件配置
new htmlPlugin({
minify:{ removeAttributeQuotes:true},
hash:true,
template:'./src/index.html'
})
.. 终端中输入webpack, 在dist文件夹下查看已经生成的文件
6.CSS中图片的处理
如果HTML中有<div>里面的background是url图片地址,
直接用webpack是会报错的,需要使用file-loader和url-loader
npm install file-loader url-loader --save-dev
*url-loader已经封装了file-loader的功能(我也不懂为啥要分开装。。反正上面说那就这样吧)
option中的limit会对图片大小判断,如果是5000b以下则会使用Base64编码(也就是一大串乱码)
7.CSS分离
实际开发中可能需要我们单独分离出CSS样式
直接使用npm install安装就可以。
npm install --save-dev extract-text-webpack-plugin
安装后在webpack.config.js中用require引入
const extractTextPlugin = require('extract-text-webpack-plugin');
在plugins属性中进行配置
new extractTextPlugin('/css/index.css')
然后修改一下原来我们的style-loader和css-loader
运行webpack进行打包,dist目录下会生成css文件夹
这样的话图片是不会显示的,有一个比较通用的解决方法是:
8.HTML中图片打包
1.如何使用本地环境下的webpack呢?
答:在package.json的"script"中写一行 "build":"webpack",然后npm run build
2.如何让打包的图片也能在某个文件夹内输出?
答:在url-loader的options里写一行outputPath:'images/'(例如limit:5000,outputPath....)
Webpack官方不推荐你使用img标签,而是希望你完全使用Javascript,
如果使用了带src属性的img标签,那么打包出来的图片是不会显示的。
有一款国人的插件 html-withimg-loader
9.打包和分离LESS,SASS
1.怎么让webpack-dev-server自动在新的标签页弹出
答:在package.json的“scripts”中 "server":"webpack-dev-server --open" 加上--open这个参数
LESS:
npm install less --save-dev
npm install less-loader --save-dev
浏览器的内核:
1.IE Trident
2.Safari Webkit
3.Chrome Blink
4.Firefox Gecko
5.Opera Presto
postcss-loader作用是给css3属性加一下浏览器兼容的前缀
npm install --save-dev(-D) postcss-loader autoprefixer
在webpack.config.js同级目录下新建postcss.config.js
14.打包第三方类库
使用webpack.optimize.CommonsChunkPlugin,
运行webpack命令
16.集中拷贝静态资源
npm install --save-dev copy-webpack-plugin
热更新: