1.全局安装webpack npm install -g webpack
2.初始化项目目录 npm init //能够一路回车
3.在当前项目安装webpack cnpm i webpack
4.安装webpack-cli cnpm i webpack-cli -D
,-D在开发环境中局部安装css
webpack --mode development
mkdir/md src //删除文件是rd/s/q type nul> src/index.js //建立入口文件index.js
src/index.js建立完以后,运行webpack --mode development/production
会自动将src/index.js文件打包到dist/main.js文件(自动生成dist和main.js)
而后,创建html,引用dist/main.js文件便可html
--watch 实时刷新 文件修改后自动打包
可是它不能实时刷新浏览器,若是须要则安装webpack-dev-server,它的做用是修改后发布到服务器上
--progress 查看进度
--display-modules 显示隐藏的模块
--colors 彩色显示
--display-reasons 显示打包缘由node
webpack --mode development --watch --progress --display-modules --colors --display-reasons
cnpm i -g webpack-dev-server
npm install webpack-dev-server --save-dev
webpack-dev-server --mode development --output-public-path dist
,指定publicPath,dist是index.html文件所引用js的地址目录.(注意,这里是将文件打包保存在内存中,没有写入磁盘)webpack-dev-server --port 3000
,能够直接在webpack.config.js配置文件中配置devServer属性,开启热更新和portlocalhost:8080
,显示的是根目录的index.html文件,能够修改index.js能够看到页面在实时自动刷新。若是根目录没有index.html,那么将会列出根目录全部文件夹,且页面就不能实时刷新了。css-loader 处理css文件
style-loader 将css-loader处理以后的文件做为标签<style>
插入html
处理css文件的两种方式:webpack
require('style-loader!css-loader!./index.css')
,这里的index.css和index.js同级webpack --mode development --module-bind "css=style-loader!css-loader"
cnpm i css-loader style-loader --save-dev
建立对象进行配置es6
moudule.exports={ //entry... }
字符串:单输入
数组,多输入,打包到一块
对象表示(hash),多页面入口web
entry : {//入口 html_1:'./src/html_1/index.js',/*第一个页面入口*/ html_2:['./src/html_2/index.js','./src/html_2/index2.js'],/*第二个页面入口*/ app:'./src/app.js',/*应用入口*/ vendors:'./src/vendors.js',/*第三方入口*/ }
单入口,单出口,固定 output:{filename:'index.js',path:'/dist/js'}
多入口,多出口,name或者hash(MD5或者版本号,惟一性)
publicPath 占位符,上线的时候设置服务器地址npm
output:{ filename:'[name].js',/*文件名,或者filename:'[name]-[hash].js'*/ path:__dirname + '/dist/js'/*文件路径*/, publicPath:"" }
若是是node方式,输出路径以下json
const path = require("path") output:{path:path.resolve(__dirname,"./dist/js/bundle.js")}; //path.resolve()方法解析了当前路径,将相对路径改成绝对路径
引用前安装 npm install html-webpack-plugin --save-dev
配置引用 var htmlWebpackPlugin = require('html-webpack-plugin');
数组
plugins:[ new webpack.optimize.UglifyJsPlugin(), new HtmlWebpackPlugin({template: './src/index.html'}) ]
两个目标:浏览器
全部loader都有exclude和include属性,设置不打包和打包范围
module:{ rules:[ { test:/\.js$/, exclude:/node_modules/,//exclude设置那些不须要用babel-lader,include表示须要用 loader:"babel-loader" } ] }
query:{presets:['latest']}
{"presets":["env"]}
"babel":{"presets":["latest"]}
cnpm i babel-loader
cnpm install -g babel-cli
cnpm i babel-preset-env --save-dev
babel es6.js --presets es2015
{"presets":["env"]}
或者"babel": {"presets": ["es2015"]}
//webpack --config 文件名 webpack --config webpack.config2.js
在package.json中设置,package.json中要用双引号,要不要是编译器报错
"scripts": { "webpack":"webpack --mode development --config webpack.config.js --progress --display-modules --colors --display-reason", "server":"webpack-dev-server --mode development --output-public-path dist" },
而后命令行敲cnpm run server