從頭搭建Vue項(xiàng)目

基本信息

Vue CLI 3需要 nodeJs ≥ 8.9 (官方推薦 8.11.0+)。

Vue CLI 是一個(gè)基于 Vue.js 進(jìn)行快速開發(fā)的完整系統(tǒng)。有三個(gè)組件:

  1. CLI:@vue/cli 全局安裝的 npm 包,提供了終端里的vue命令(如:vue create 、vue serve 、vue ui 等命令)
  2. CLI 服務(wù):@vue/cli-service是一個(gè)開發(fā)環(huán)境依賴。構(gòu)建于 webpackwebpack-dev-server 之上(提供 如:serve、build 和 inspect 命令)
  3. CLI 插件:給Vue 項(xiàng)目提供可選功能的 npm 包 (如: Babel/TypeScript 轉(zhuǎn)譯、ESLint 集成、unit和 e2e測試 等)

安裝步驟

  1. 安裝腳手架cnpm i -g @vue/cli(文件名 不支持駝峰(含大寫字母))
  2. 創(chuàng)建一個(gè)vue項(xiàng)目vue create createvue
  3. 項(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)配置

  1. 配置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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容