Webpack 是当下最热门的前端资源模块化管理和打包工具。它能够将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源。还能够将按需加载的模块进行代码分隔,等到实际须要的时候再异步加载。经过 loader
的转换,任何形式的资源均可以视做模块,好比 CommonJs 模块、 AMD 模块、 ES6 模块、CSS、图片、 JSON、Coffeescript、 LESS 等。javascript
what-is-webpack: http://webpack.github.io/docs/what-is-webpack.htmlcss
命令行:html
cd ... //进入文件 mkdir ... //新建文件 npm init //初始化 —————————— npm install webpack --save-dev //安装webpack atom //打开当前目录 //新建hello.js文件 webpack hello.js hello.bundle.js //打包文件:新建的文件名 打包后的文件名
安装完webpack后的文件:前端
新建style.css , world.js 文件,在hello.js文件中引入world.js 和 style.css 文件:java
npm install css-loader style-loader --save-dev //要安装引入css文件的插件,要不就会出错
或者直接在命令行绑定;后可直接查看进度、模块、缘由等;webpack
webpack --config webpack.dev.config.js //运行配置文件webpack.dev.config.js npm install html-webpack-plugin --save-dev //安装插件html-webpack-plugin
在命令行配置:git
或者在package.json中配置:github
<% %> //运行 <%= %> //取值
files:web
options:npm
配置文件:(分为单页面HTML和多页面HTML)
能够进行一系列的配置,支持以下的配置信息
如果在生成的文件中直接是地址引入,会增长http请求;若要优化,可直接引入js内容:
如下是github中提供的源代码示例:
如下为测试结果:
Loader:Webpack 自己只能处理 JavaScript 模块,若是要处理其余类型的文件,就须要使用 loader 进行转换;eg: .css、.less……
解析以ES6写的js文件:
npm install --save-dev babel-loader babel-core //安装babel,解析ES6 npm install --save-dev nanel-preset-latest //安装解析ES6最新版本的插件
可在babel的官网查看:
exclude和include后的路径为相对路径,在npm run webpack时,时间比较慢;缘由是由于loaders的文件比较多,写为相对路径也比较慢,修改成如下:(__dirname:该行代码所在的目录)
query也可不写,在package.json里配置babel插件:
解析css文件:
npm install postcss-loader --save-dev //安装解析css的插件 npm install autoprefixer --save-dev //安装添加前缀的插件 //css文件中display:flex; 由于浏览器的兼容性,flex要加前缀-wibkit- / -moz-等
因以前安装了css-loader 和 style-loader,因此这里不用安装;
解析less及scss文件:
npm install less-loader --save-dev //安装解析less的插件 npm install scss-loader --save-dev //安装解析scss的插件
*若在.less文件中有@import的写法,可不用加?importLoader,less插件会解析;可是在css文件中有import的写法,必定要加;
处理模板文件:
npm install html-loader --save-dev //安装解析模板文件的插件 npm install ejs-loader --save-dev //安装解析.ejs和.tpl文件的插件,都用ejs.loader
处理图片:
//安装解析图片的插件 npm install file-loader --save-dev npm install url-loader --save-dev npm install image-webpack-loader --save-dev
url-loader的处理方法:若 图片的大小 大于 limit , 给file-loader处理;若 小于 limit,图片就转为base64;
image-webpack的处理方法:使用file-loader和url-loader,压缩图片的大小;
学习网址:http://webpack.github.io/docs/
http://www.imooc.com/video/14186/0