用vue-cli1/2搭建一个vue项目时,能够看到有不少关于webpack配置的文件。咱们不须要知道那些繁琐的配置文件有什么做用,只需在控制台输入npm run dev
,项目自动启动,咱们就能够愉快的写业务代码了。javascript
虽然vue-cli帮咱们作好了一切,咱们就能不用学webpack了吗?NoNoNo...现代前端工程师必备的技能就是模块化构建打包项目,不信去那些招聘网站的前端JD看看。废话很少说,下面让咱们用webpack构建一个简单的vue-cli。php
下载地址:http://nodejs.cn/download/,傻瓜式安装,一直下一步就ok。安装完毕,在控制台输入node -v
检查是否按照成功。css
NodeJS是JavaScript的运行环境,像浏览器同样。安装以后能够经过
node
命令运行JavaScript代码,好比:node a.js
前端
npm(node package manage of JavaScript)做用:Node.js下载后自带npm,相似于迅雷下载资源,能够下载项目所需的依赖模块/包。vue
npm init
初始化生成package.jsonshift+右击
,出现【在此处打开命令窗口(W)】,cmd
控制台,命令路径即为当前文件夹目录,npm init -y
,回车,以后会在根目录建立一个package.json。命令:npm install webpack@3.12.0 --save-dev
java
测试webpack在本地是否可用,webpack -v
若是出现webpac
k为无效命令,则使用全局安装webpack:npm install webpack@3.12.0 -g
。安装成功后就能够使用webpack
命令玩耍了。node
建议安装wepack3,webpack4对vue-cli的兼容还不是很好webpack
webpack能够看作是模块打包机:它作的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其转换和打包为合适的格式供浏览器使用。git
Grunt和Gulp的工做方式是:在一个配置文件中,指明对某些文件进行相似编译,组合,压缩等任务的具体步骤,工具以后能够自动替你完成这些任务。es6
不少文件类型,好比vue、css、img、字体...须要咱们配置相应的loader才能完成正确解析并打包。
好比,把css打包到js文件中,须要安装css加载器,安装命令:npm install --save-dev style-loader css-loader
css-loader
和 style-loader
,两者处理的任务不一样css-loader
使你可以使用相似@import 和 url(...)
的方法实现 require()
的功能style-loader
将全部的计算后的样式用<style></style>
加入页面中,两者组合在一块儿使你可以把样式表嵌入webpack打包后的JS文件中
命令行打包(不推荐):
webpack {entry file} {destination for bundled file} // 如webpack ./js/main.js ./dist/bundle.js 自动建立dist目录
这种打包方式,在js文件中引入css文件时要注明loader
:require('style-loader!css-loader!../css/index.css')
注意顺序不能错!
配置文件打包(推荐):
须要在项目的根目录建立webpack.config.js.项目里配置以下:
module.exports = { entry: __dirname + "/src/main.js",// 入口文件,能够多个 output: { path: __dirname + "/dist", // 绝对路径,打包后的文件存放的文件夹 filename: "build.js" // 相对路径,打包后输出的文件 }, // 1. 不一样webpack版本配置loader的方式不一样,webpack3用loaders,webpack4用rules // 2. 命令行方式引入css的require('style-loader!css-loader!../css/index.css') 就能够写成 require('../css/index.css') module: { loaders: [ { test: /\.css$/, loader: 'style-loader!css-loader' }, { test: /\.(jpg|png|jpeg|svg)$/, loader: 'url-loader', options: { // 大于10000字节会被打包成重命名的图片资源,不然打包成base64 limit: 10000 // name: utils.assetsPath('img/[name].[hash:7].[ext]') } }, { test: /\.vue$/, loader: 'vue-loader' }, { test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/, options: { presets: ['env'], // 处理关键字,es6/7/8/9...都能转化 plugins: ['transform-runtime'] // 处理函数 } } ] } }
package.json中配置
scripts:{"build": 'webpack'}
(webpack
命令会默认运行webpack.config.js
文件),执行npm run build
便可打包
上面4步就能够完成项目的打包任务,可是开发环境还须要更进一步配置。webpack-dev-server
能够像php/java/.net...同样搭建为咱们搭建一个服务器,这样就能够热更新项目代码,实现实时运行项目,进而方便咱们调试项目。
npm install webpack-dev-server -g
npm install webpack-dev-server --save-dev
scripts:{"dev": 'webpack-dev-server --hot --inline'}
// 实现热更新和在线编译npm run dev
具体代码见:https://github.com/tzy13755126023/webpack-vue-cli
最后,webpack版本更新很频繁,各类npm包也更新很频繁,这就会致使一个兼容问题,动不动就报错,这点很让人头疼,很容易会致使从入门到放弃。