Webpack学习笔记
来源:互联网 发布:crm node online 编辑:程序博客网 时间:2024/06/06 14:11
傻瓜版Webpack2.x版本示例项目(Webpack+Vue项目即将推出)
- 下载webpack-demo
项目目录
├── app│ ├── app.js│ ├── app.scss│ ├── config.json│ ├── demo.js│ ├── demo.tmpl.html│ ├── greeter.js│ ├── icon.png│ ├── index.temp.html│ ├── jquery-1.11.3.min.js│ ├── main.js│ ├── main.scss├── package.json└── webpack.config.js
- 运行
- npm install webpack -g 安装webpack,运行webpack -h查看是否安装成功
- npm install webpack-dev-server -g 安装webpack-dev-server,可以通过一个socket.io服务实时监听文件的变化并自动刷新页面
- 安装第三方npm模块npm install
- 在根目录下运行webpack-dev-server命令开启本地服务
- 直接打开http://localhost:8080/测试
package.json
{ "name": "camera", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "webpack --progress --colors" }, "author": "vcxiaohan", "license": "ISC", "devDependencies": { "css-loader": "^0.26.4", "extract-text-webpack-plugin": "^2.1.0", "file-loader": "^0.10.1", "html-webpack-plugin": "^2.28.0", "json-loader": "^0.5.4", "node-sass": "^4.5.0", "sass-loader": "^6.0.3", "style-loader": "^0.13.2", "url-loader": "^0.5.8", "webpack": "^2.2.1" }}
webpack.config.js
var webpack = require('webpack'); var HtmlWebpackPlugin = require('html-webpack-plugin'); var ExtractTextPlugin = require('extract-text-webpack-plugin'); // 必须配合html-webpack-plugin才能生效 module.exports = { devtool: 'source-map', //配置生成Source Maps,以便报错时能定位到具体的行列 entry: { // 入口文件配置项 main: __dirname + "/app/main.js", // js文件标识,传入HtmlWebpackPlugin的chunks参数位置,以便生成多个页面时能引用不同的js文件 demo: __dirname + "/app/demo.js", // }, output: { // 输出文件配置项 path: __dirname + "/public", // 打包后的文件存放的地方 filename: "[name].js" // 打包后输出文件的文件名 }, module: { // 在配置文件里添加JSON loader loaders: [{ test: /\.json$/, loader: "json-loader" // webpack2.x 版本不能省略loader后缀 }, { test: /\.scss$/, loader: ExtractTextPlugin.extract({ // extract-text-webpack-plugin2.x 版本写法 fallback: 'style-loader', use: 'css-loader!sass-loader' }) }, { test: /\.(png|jpg)$/, loader: 'url-loader?limit=10&name=[hash].[ext]' // url-loader需要配合file-loader使用才能生效,否则读取大图片的时候会报错 }, ] }, plugins: [ // 插件配置项 new HtmlWebpackPlugin({ // 生成多页面 template: __dirname + "/app/index.tmpl.html", // 使用模板 filename: 'index.html', // 输出的html文件名 chunks: ['main', 'common'], // 引用的js文件标识,必须要引入CommonsChunkPlugin独立出来的common文件 }), new HtmlWebpackPlugin({ // 生成多页面 template: __dirname + "/app/demo.tmpl.html", filename: 'demo.html', chunks: ['demo'], }), new webpack.BannerPlugin("by vcxiaohan"), //new webpack.optimize.UglifyJsPlugin(),// 压缩js new ExtractTextPlugin("[name].css"), // 提取css样式为单独的文件 new webpack.optimize.CommonsChunkPlugin({ // 把main文件标识的公共部分提取出来独立成common文件 name: 'common', chunks: ['main'] }), ], devServer: { // 本地服务配置项 contentBase: "./public", // 自定义本地服务器基本目录 inline: true, // 实时刷新 proxy: { // 代理 '/': { target: 'http://v4.faqrobot.net', changeOrigin: true // 解决跨域代理 } } } }
快速命令
- npm install webpack -g 安装webpack,运行webpack -h查看是否安装成功
- npm install webpack -save-dev 安装webpack到项目根目录
- npm install css-loader style-loader –save-dev 安装css-loader来读取css,安装style-loader把读取到的css它插入到页面
- npm install json-loader –save-dev 安装json-loader来读取json
- npm install sass-loader –save-dev 安装sass-loader来预处理css
- webpack –watch 启动监听模式
- npm install webpack-dev-server -g 可以通过一个socket.io服务实时监听文件的变化并自动刷新页面
- npm install extract-text-webpack-plugin –save-dev 安装提取文本插件,分离CSS文件
- npm install html-webpack-plugin –save-dev 安装生成页面插件
- npm install url-loader -save-dev 将样式中引用到的图片转为模块来处理
- npm install vue -save 安装vue.js
- npm install vue-loader –save-dev 安装vue读取插件,解析vue文件中的每个语言块,然后传输到其它的loaders
- npm install vue-template-compiler –save-dev 用于将Vue 2.x模板预编译为render函数,以避免运行时编译开销和CSP限制
细节整理
- extract-text-webpack-plugin需要配合html-webpack-plugin使用才能生效
- url-loader需要配合file-loader使用才能生效,否则读取大图片的时候会报错
- CommonsChunkPlugin提取出来的文件,必须要在HtmlWebpackPlugin里面引用,否则报错webpackJsonp is not defined?
- Babel其实是几个模块化的包,其核心功能位于称为babel-core的npm包中,不过webpack把它们整合在一起使用,但是对于每一个你需要的功能或拓展,你都需要安装单独的包(用得最多的是解析Es6的babel-preset-es2015包和解析JSX的babel-preset-react包)。
参考文档
- 入门Webpack,看这篇就够了
- webpack官方文档
- Webpack傻瓜式指南(一)
- Webpack傻瓜指南(二)开发和部署技巧
- 用webpack-dev-server开发时代理,决解开发时跨域问题
- 用webpack的CommonsChunkPlugin提取公共代码的3种方式
- webpackJsonp is not defined?
- Vue + Webpack + Vue-loader 系列教程(1)功能介绍篇
- devDependencies和dependencies的区别
- babel的polyfill和runtime的区别
- webpack 配合babel 将es6转成es5 超简单实例
- Babel 全家桶
- webpack之babel插件困惑解疑
- Webpack2 升级指南和特性摘要
- html-webpack-plugin用法全解
- html-webpack-plugin 中使用 title选项设置模版中的值无效
- webpack多页应用架构系列(七):开发环境、生产环境傻傻分不清楚?
1 0
- webpack学习笔记
- webpack学习笔记
- webpack学习笔记<使用>
- Webpack 学习笔记
- webpack学习笔记
- webpack 学习笔记
- webpack入门学习笔记
- webpack学习笔记
- webpack学习笔记一
- 【转】webpack学习笔记
- webpack 学习笔记
- Webpack学习笔记
- webpack学习笔记
- webpack学习笔记(一)
- Webpack学习笔记(二)
- webpack学习笔记1
- webpack学习笔记
- webpack学习笔记
- 【HDU 5635 LCP Array】
- Mac maven的配置
- Linux运行级别和运行模式
- C++第二次实验-选择设计结构-项目3(定期存款利息计算器)
- Maximum Subarray连续子序列最大和 -- LeetCode(经典动态规划)
- Webpack学习笔记
- selector
- C#基础知识之分支结构
- 在webstorm中可以git操作和github操作,省去了命令行的操作了,也可以add,commit,push,pull
- zabbix邮件报警脚本_简单版
- PAT_A 1031. Hello World for U (20)
- iframe宽高自适应
- 小型企业实现安全保障的12步战略
- 玩转Unity资源,对象和序列化