【轉】https://juejin.im/post/5c63afd56fb9a049b41cf5f4javascript
本章詳細介紹使用vue-cli3.0來搭建項目。 本章使用vue-cli3.0構建的項目是基於webpack的模板文件,構建後的項目屬於單頁面(SPA)應用。所以,該文檔後續操做與說明不適用於構建一個多頁面應用。css
相比於以前有以下優勢:html
# npm install -g @vue/cli
OR
# yarn global add @vue/cli
你可使用vue --version 或者 vue -V檢查其版本vue
注意事項:
vue-cli
改爲@vue/cli
。若是你已經安裝了舊版本的vue-cli(1.x或2.x),你先經過npm uninstall vue-cli -g
或 yarn global remove vue-cli
卸載它。node8.9
或更高版本
(推薦8.11.0+)npm install -g @vue/cli-init Vue init webpack myVue
可使用
vue ui
圖形化界面建立和管理項目,這裏不作闡述,請自行查看cli.vuejs.org/,下面以命令行形式進行建立:java
vue create vuedemo
複製代碼
你會被提示選取一個preset。你能夠選默認的包含了基本的Babel+ESLint設置的preset,也能夠選
手動選擇特性
來選取須要的特性。node
這個默認的設置很是適合快速建立一個新項目的原型,而手動設置則提供了更多的選項,它們是面向生產的項目更加須要的,下面以」手動設置「爲例。
以上下鍵移動,以空格鍵進行是否選定
webpack
若是後續你想在一個已經被建立好的項目中安裝插件,可使用 vue add 命令:git
D:\i\vuedemo> vue add vuex
出現如上字樣,說明安裝成功。請輸入命令
cd vuedemo
與yarn serve
運行環境。web
vue-cli3.0致力於Vue生態中的工具基礎標準化。它確保了各類構建工具可以基於智能的默認配置便可平穩銜接,這樣你就能夠專一在撰寫應用上,減小配置的時間。查看以下文件,會發現相比於vue-cli2.0少了
build
與config
文件夾,因此vue-cli3提供了一個可選的配置文件 ——vue.config.js
。請具體參考5.3和5.4(打包配置),這裏只詳細解讀文件做用。vue-router
|-- dist # 打包後文件夾 |-- public # 靜態文件夾 | |-- favicon.ico | |-- index.html #入口頁面 |-- src # 源碼目錄 | |--assets # 模塊資源 | |--components # vue公共組件 | |--views | |--App.vue # 頁面入口文件 | |--main.js # 入口文件,加載公共組件 | |--router.js # 路由配置 | |--store.js # 狀態管理 |-- .env.pre-release # 預發佈環境 |-- .env.production # 生產環境 |-- .env.test # 測試環境 |-- vue.config.js # 配置文件 |-- .eslintrc.js # ES-lint校驗 |-- .gitignore # git忽略上傳的文件格式 |-- babel.config.js # babel語法編譯 |-- package.json # 項目基本信息 |-- postcss.config.js # CSS預處理器(此處默認啓用autoprefixer)
Vue.config.js是一個可選的配置文件,若是項目的根目錄存在這個文件,那麼它就會被
@vue/cli-service
自動加載。你也可使用package.json中的vue字段,但要注意嚴格遵照JSON的格式來寫。這裏使用配置vue.config.js的方式進行處理。
const webpack = require('webpack') module.exports = { //部署應用包時的基本 URL publicPath: process.env.NODE_ENV === 'production' ? '/online/' : './', //當運行 vue-cli-service build 時生成的生產環境構建文件的目錄 outputDir: 'dist', //放置生成的靜態資源 (js、css、img、fonts) 的 (相對於 outputDir 的) 目錄 assetsDir: 'assets', // eslint-loader 是否在保存的時候檢查 安裝@vue/cli-plugin-eslint有效 lintOnSave: true, //是否使用包含運行時編譯器的 Vue 構建版本。設置true後你就能夠在使用template runtimeCompiler: true, // 生產環境是否生成 sourceMap 文件 sourceMap的詳解請看末尾 productionSourceMap: true, configureWebpack: config => { if (process.env.NODE_ENV === 'production') { // 爲生產環境修改配置... } else { // 爲開發環境修改配置... } }, // css相關配置 css: { // 是否使用css分離插件 ExtractTextPlugin 生產環境下是true,開發環境下是false extract: true, // 開啓 CSS source maps? sourceMap: false, // css預設器配置項 loaderOptions: {}, // 啓用 CSS modules for all css / pre-processor files. modules: false }, // webpack-dev-server 相關配置 devServer: { // 設置代理 hot: true, //熱加載 host: '0.0.0.0', //ip地址 port: 8085, //端口 https: false, //false關閉https,true爲開啓 open: true, //自動打開瀏覽器 proxy: { '/api': { //本地 target: 'xxx', // 若是要代理 websockets ws: true, changeOrigin: true }, '/test': { //測試 target: 'xxx' }, '/pre': { //預發佈 target: 'xxx' }, '/pro': { //正式 target: 'xxx' } } }, pluginOptions: { // 第三方插件配置 // ... } }
擴展:
Source map的做用:針對打包後的代碼進行的處理,就是一個信息文件,裏面儲存着位置信息。也就是說,轉換後的代碼的每個位置,所對應的轉換前的位置。有了它,出錯的時候,除錯工具將直接顯示原始代碼,而不是轉換後的代碼。這無疑給開發者帶來了很大方便。
建立.env.test文件,文件內容以下 NODE_ENV='test' # 測試環境 VUE_APP_TT='TT' 建立.env.pre-release文件,文件內容以下: NODE_ENV='pre-release' # 預發佈環境 建立.env.production文件,文件內容以下: NODE_ENV='production' # 正式環境 VUE_APP_T='la' Q='1' package.json配置
"scripts": { "serve": "vue-cli-service serve ", "build:pre": "vue-cli-service build --mode pre-release", #預發佈環境 "build:test": "vue-cli-service build --mode test", #測試環境 "build:prod": "vue-cli-service build --mode production", #正式環境 "lint": "vue-cli-service lint", "test:unit": "vue-cli-service test:unit" }
baseUrl
和 NODE_ENV
其餘環境變量使用 VUE_APP
開頭