Vue-Cli 3.0 + vue.config.js

     雖然一直沒有親手搭建過vue項目,可是2.0的時候就開始自學(但並無實踐項目)。而後公司最近有我的用3.0作了個項目,公司讓我參與進去,我就順便學習了一把3.0。(美滋滋)javascript

    由於電腦的環境仍是以前自學時候的2.0,所以如今須要先升級到3.0。下面是具體步驟:css

    1. npm uninstall -g vue-clihtml

    2. npm install -g @vue/clivue

    3. vue create [new-dir]    //進去後會有一些選擇讓你作,我選的default,而後下載用選npmjava

    4. cd [new-dir] webpack

    4. npm run serve web

    至此3.0版本的項目就初始化好。能夠看到目錄結構真的是很是的精簡。我參考同事已經作好的項目,是多了幾個文件,分別是:vue-cli

      1.  vue.config.jsnpm

      2. .env & .env.development & .env.[其餘環境]json

 

   下面就講下vue.config.js  (一個配置文件,替代了2.0的webpack.config.js)

  官方說vue.config.js是一個可配的文件,若是存在(與package.json同級),會被@vue/cli-service自動加載

  功能:完成關於端口號的配置,打包以後的路徑配置,圖片的配置等

  i:chainWebpack

    容許對內部webpack配置作更細粒度的修改,好比修改、增長loader(鏈式操做)

chainWebpack:config=>{
   config.module.rule('xx').tap( () => {return {key:val,key:val}} )   //修改loader選項
   config.module.rule('xx').end()    //添加一個新的loader
   config.plugin('xx').tap( args => { ...; return args} )    //修改插件選項
}

ii:configureWebpack

     調整webpack配置(development(開發)/production(生產))

     若是須要基於環境有條件的配置,或者想直接修改配置,就能夠返回一個函數,參數會收到已解析好的而配置,在函數內可直接改配置

 configureWebpack: config => {
if (process.env.NODE_ENV === 'production') {
           //xxxxx
        }else if(process.env.NODE_ENV==='development'){
//xxxx
} },

 iii:css

   css的處理

css: {
        loaderOptions: {   //向css相關的loader傳遞選項 設置後每一個sass文件都會預加載這兩個文件
            sass: {
                data: `@import "@/env/${process.env.VUE_APP_PROJECT_ENV}/css/_variables.scss"; 
                       @import "@/css/_variables.scss";`   
            }
        }
    }
 
 
 //聲明變量具體的值(主題文件夾下的css文件夾)

$variable-color-theme: #ff8c05;
$variable-color-theme-deeper: #ff7505;
$variable-color-theme-disabled: #f7d5b1;
 
 
//主題色是變量(外層css文件夾)

$color-theme: $variable-color-theme;
$color-theme-deeper: $variable-color-theme-deeper;
$color-theme-disabled: $variable-color-theme-disabled;

iv: productionSourceMap:false

   若是設置成false,項目在打包後是會壓縮加密的,運行速度會加快,可是運行時報錯是沒法得知

   若是設置成ftrue, 項目會加載所有源碼,則會具體顯示運行時的報錯,運行速度會變慢,並且暴露了源碼

  v: vue-loader+transformAssetUrls

    vue-loader: 解析和轉換.vue文件,提取出其中的邏輯代碼js/css/html,再分別把他們交給對應的loader去處理

    transformAssetUrls: 模板編譯中,編譯器將某些資源的某些屬性轉成可被調用(etc: img的src屬性),使得這些資源能夠被webpack處理

 chainWebpack: config => {
        config.module
            .rule('vue')
            .use('vue-loader')
            .loader('vue-loader')
            .tap(() => {
                return {
                    transformAssetUrls: {
                        video: ['src', 'poster'],
                        source: 'src',
                        img: 'src',
                        image: 'xlink:href'
                    }
                }
            })
    }

   vi:聲明新的路徑變量 @env

   如下@env表明的路徑變量爲src/env下的,若是是esim環境,就在/esim目錄裏,若是是wesim環境,就在/wesim目錄裏

   用於:在不一樣環境下,可能同一位置上引入的組件內容不同,用於導入這些組件的時候,聲明路徑

configureWebpack: config => {
        Object.assign(config.resolve.alias, {'@env': path.resolve(`src/env/${process.env.VUE_APP_PROJECT_ENV}`)})
     
    } 

 vii:filemanager-webpack-plugin

      用於在build以前及以後複製、打包、移動、刪除文件以及文件夾

const FileManagerPlugin = require('filemanager-webpack-plugin')
 configureWebpack: config => {
        if (process.env.NODE_ENV === 'production') {
            config.plugins.push(new FileManagerPlugin({
                onEnd: {
                    archive: [
                        {
                            source: './dist',
                            destination: `./dist/${process.env.VUE_APP_DOMAIN}-${packageInfo.version}.tar`,
                            format: 'tar',
                        }
                    ]
                }
            }))
        }
    },
相關文章
相關標籤/搜索