基本信息
Vue CLI 3需要 nodeJs ≥ 8.9 (官方推薦 8.11.0+)。
Vue CLI 是一個(gè)基于 Vue.js 進(jìn)行快速開發(fā)的完整系統(tǒng)。有三個(gè)組件:
- CLI:@vue/cli 全局安裝的 npm 包,提供了終端里的vue命令(如:vue create 、vue serve 、vue ui 等命令)
- CLI 服務(wù):@vue/cli-service是一個(gè)開發(fā)環(huán)境依賴。構(gòu)建于 webpack 和 webpack-dev-server 之上(提供 如:serve、build 和 inspect 命令)
- CLI 插件:給Vue 項(xiàng)目提供可選功能的 npm 包 (如: Babel/TypeScript 轉(zhuǎn)譯、ESLint 集成、unit和 e2e測試 等)
安裝步驟
- 安裝腳手架
cnpm i -g @vue/cli(文件名 不支持駝峰(含大寫字母)) - 創(chuàng)建一個(gè)
vue項(xiàng)目vue create createvue - 項(xiàng)目配置
在配置項(xiàng)目過程中會提供兩個(gè)選項(xiàng):
- default(babel,eslint):
默認(rèn)設(shè)置(直接enter)非常適合快速創(chuàng)建一個(gè)新項(xiàng)目的原型,沒有帶任何輔助功能的 npm包 - Manually select features:
手動配置(按方向鍵 ↓)是我們所需要的面向生產(chǎn)的項(xiàng)目,提供可選功能的 npm 包
其中配置項(xiàng)
? Check the features needed for your project: (Press <space> to select, <a> to toggle all, <i> to invert selection)
>( ) Babel //轉(zhuǎn)碼器,可以將ES6代碼轉(zhuǎn)為ES5代碼,從而在現(xiàn)有環(huán)境執(zhí)行。
( ) TypeScript// TypeScript是一個(gè)JavaScript(后綴.js)的超集(后綴.ts)包含并擴(kuò)展了 JavaScript 的語法,需要被編譯輸出為 JavaScript在瀏覽器運(yùn)行,目前較少人再用
( ) Progressive Web App (PWA) Support// 漸進(jìn)式Web應(yīng)用程序
( ) Router // vue-router(vue路由)
( ) Vuex // vuex(vue的狀態(tài)管理模式)
( ) CSS Pre-processors // CSS 預(yù)處理器(如:less、sass)
( ) Linter / Formatter // 代碼風(fēng)格檢查和格式化(如:ESlint)
( ) Unit Testing // 單元測試(unit tests)
( ) E2E Testing // e2e(end to end) 測試
單元檢測
? Pick a unit testing solution: (Use arrow keys)
> Mocha + Chai //mocha靈活,只提供簡單的測試結(jié)構(gòu),如果需要其他功能需要添加其他庫/插件完成。必須在全局環(huán)境中安裝
Jest //安裝配置簡單,容易上手。內(nèi)置Istanbul,可以查看到測試覆蓋率,相較于Mocha:配置簡潔、測試代碼簡潔、易于和babel集成、內(nèi)置豐富的expect
在哪里存放配置
? Where do you prefer placing config for Babel, PostCSS, ESLint, etc.? (Use arrow keys)
> In dedicated config files // 獨(dú)立文件放置
In package.json // 放package.json里
是否保存此次配置
? Save this as a preset for future projects? (Y/n) // y:記錄本次配置,然后需要你起個(gè)名; n:不記錄本次配置

配置項(xiàng)目.png
相關(guān)配置
- 配置vue.config.js
之前所有的配置文件都在vue create 搭建時(shí)preset預(yù)設(shè),后期開發(fā)者也可以通過命令參數(shù) 、 vue.config.js 更改配置配置
根據(jù)需要在根目錄下新建 vue.config.js自行配置
注:
命令行中執(zhí)行vue inspect > output.js , 這樣我們會得到一份最終生效的 webpack配置信息文件output.js。
module.exports = {
baseUrl: '/',// 部署應(yīng)用時(shí)的根路徑(默認(rèn)'/'),也可用相對路徑(存在使用限制)
outputDir: 'dist',// 運(yùn)行時(shí)生成的生產(chǎn)環(huán)境構(gòu)建文件的目錄(默認(rèn)''dist'',構(gòu)建之前會被清除)
assetsDir: '',//放置生成的靜態(tài)資源(s、css、img、fonts)的(相對于 outputDir 的)目錄(默認(rèn)'')
indexPath: 'index.html',//指定生成的 index.html 的輸出路徑(相對于 outputDir)也可以是一個(gè)絕對路徑。
pages: {//pages 里配置的路徑和文件名在你的文檔目錄必須存在 否則啟動服務(wù)會報(bào)錯
index: {//除了 entry 之外都是可選的
entry: 'src/index/main.js',// page 的入口,每個(gè)“page”應(yīng)該有一個(gè)對應(yīng)的 JavaScript 入口文件
template: 'public/index.html',// 模板來源
filename: 'index.html',// 在 dist/index.html 的輸出
title: 'Index Page',// 當(dāng)使用 title 選項(xiàng)時(shí),在 template 中使用:<title><%= htmlWebpackPlugin.options.title %></title>
chunks: ['chunk-vendors', 'chunk-common', 'index'] // 在這個(gè)頁面中包含的塊,默認(rèn)情況下會包含,提取出來的通用 chunk 和 vendor chunk
},
subpage: 'src/subpage/main.js'//官方解釋:當(dāng)使用只有入口的字符串格式時(shí),模板會被推導(dǎo)為'public/subpage.html',若找不到就回退到'public/index.html',輸出文件名會被推導(dǎo)為'subpage.html'
},
lintOnSave: true,// 是否在保存的時(shí)候檢查
productionSourceMap: true,// 生產(chǎn)環(huán)境是否生成 sourceMap 文件
css: {
extract: true,// 是否使用css分離插件 ExtractTextPlugin
sourceMap: false,// 開啟 CSS source maps
loaderOptions: {},// css預(yù)設(shè)器配置項(xiàng)
modules: false// 啟用 CSS modules for all css / pre-processor files.
},
// 配置webpack
// vue.config.js 中的 outputDir => output.path
// vue.config.js 中的 baseUrl => output.publicPath
configureWebpack: {
plugins: [
// new MyAwesomeWebpackPlugin()
//......
]
},
devServer: {// 環(huán)境配置
host: 'localhost',
port: 8080,
https: false,
hotOnly: false,
open: true, //配置自動啟動瀏覽器
// proxy: {// 配置多個(gè)代理(配置一個(gè) proxy: 'http://localhost:4000' )
// '/api': {
// target: '<url>',
// ws: true,
// changeOrigin: true
// },
// '/foo': {
// target: '<other_url>'
// }
// }
// 配置跨域代理
proxy: 'http://192.168.37.101:81'
},
pluginOptions: {// 第三方插件配置
// ...
}
}
運(yùn)行
npm run serve