vue-cli2.0/3.0/4.0創建項目的方式差異解讀和vue-cli4.0打包命令和環境配置


vue-cli2.x和vue-cli3.x 或者 vue-cli4.x 差異不能說非常大但是簡潔了許多和看起來清爽了許多更方便使用了;准備工作先分析再來實踐

更新到 3.x / 4.x 之后,vue-cli 的包名從 vue-cli 改成了 @vue/cli
官網文檔地址https://cli.vuejs.org/zh/guide/installation.html

查看其版本:vue -V 或者 vue --version

如果你安裝了舊版本的cil請先移除:
npm uninstall vue-cli -g
# OR
yarn global remove vue-cli

然后重新安裝新版本的 @vue/cli
npm install -g @vue/cli
# OR
yarn global add @vue/cli

1.x 和 2.x 的的 vue-cli 采用 init 命令創建項目

vue init webpack project-name

3.x / 4.x 之后vue-cli 采用 create 命令創建項目

vue create project-name

vue-cli3與vue-cli4的區別:@vue/cli-plugin-pwa、@vue/cli-service等包的增強 ,原來在根目錄下的store.js、router.js被分別放到了對應的文件夾下

webpack的安裝:要安裝最新版本或特定版本,請運行以下命令之一
npm install --save-dev webpack
npm install --save-dev webpack@<version>
如果你使用 webpack 4+ 版本,你還需要安裝 CLI
npm install --save-dev webpack-cli

全局安裝:
npm install --global webpack
npm install --global webpack-cli

查看版本:webpack -v;

 

/* * @Description: vue.config.js 參考文檔:https://cli.vuejs.org/zh/config/#%E5%85%A8%E5%B1%80-cli-%E9%85%8D%E7%BD%AE * @Version: 2.0 * @Autor: lhl * @Date: 2020-08-26 17:03:04 * @LastEditors: lhl * @LastEditTime: 2020-08-27 10:06:40 */ module.exports = { // 部署應用包時的基本 URL 這個值也可以被設置為空字符串 ('') 或是相對路徑 ('./'),這樣所有的資源都會被鏈接為相對路徑,這樣打出來的包可以被部署在任意路徑
  // 把開發服務器架設在根路徑,可以使用一個條件式的值 process.env.NODE_ENV === 'production' ? '/production-sub-path/' : '/'
  publicPath:  './', // 構建輸出目錄(打包位置)
  outputDir: 'dist', // 靜態資源目錄 (js、css、img、fonts) 的 (相對於 outputDir 的) 目錄 -->打包后dist下面的靜態資源文件夾名稱
  assetsDir: 'static', // 指定生成的 index.html 的輸出路徑 (相對於 outputDir)。也可以是一個絕對路徑。Default
  indexPath: 'index.html', // 是否在開發環境下通過 eslint-loader 在每次保存時 lint 代碼
  lintOnSave: process.env.NODE_ENV !== 'production', // 如果你不需要生產環境的 source map,可以將其設置為 false 以加速生產環境構建
  productionSourceMap: false, // 如果這個值是一個對象,則會通過 webpack-merge 合並到最終的配置中
  // 如果你需要基於環境有條件地配置行為,或者想要直接修改配置,那就換成一個函數 (該函數會在環境變量被設置之后懶執行)。該方法的第一個參數會收到已經解析好的配置。在函數內,你可以直接修改配置,或者返回一個將會被合並的對象
 configureWebpack: {}, // 對內部的 webpack 配置(比如修改、增加Loader選項)(鏈式操作)
  chainWebpack: () => { }, // css的處理
 css: { // 默認情況下,只有 *.module.[ext] 結尾的文件才會被視作 CSS Modules 模塊
    requireModuleExtension: true, // 是否將組件中的 CSS 提取至一個獨立的 CSS 文件中,當作為一個庫構建時,你也可以將其設置為 false 免得用戶自己導入 CSS
    // 默認生產環境下是 true,開發環境下是 false 是否使用css分離插件 ExtractTextPlugin
    extract: false, // 是否為 CSS 開啟 source map。設置為 true 之后可能會影響構建的性能
    sourceMap: false, //向 CSS 相關的 loader 傳遞選項(支持 css-loader postcss-loader sass-loader less-loader stylus-loader)
 loaderOptions: { css: {}, less: {} } }, // 所有 webpack-dev-server 的選項都支持 更多參考:https://webpack.js.org/configuration/dev-server/
 devServer: { host: '0.0.0.0', // 允許外部ip訪問
    open: true, //設置自動打開瀏覽器
    port: 8989, //設置端口
 proxy: { //設置代理
      '/api': { target: 'xxx', // 接口的域名
        changeOrigin: true, // 如果接口跨域,需要進行這個參數配置
        secure: false, // 如果是https接口,需要配置這個參數
        pathRewrite: {  // 如果接口本身沒有/api需要通過pathRewrite來重寫接口地址
          '^/api': '' } } } }, // 向 PWA 插件傳遞選項
 pwa: {}, // 第三方插件配置
 pluginOptions: { } }

 

接下來說下環境變量配置(系統變量)和分環境打包命令配置

新建文件:.env.beta 預生產環境

NODE_ENV=beta VUE_APP_TITLE=My App beta(staging) VUE_APP_BASE_URL=https://www.beta.com/

新建文件:.env.development 開發環境

NODE_ENV=development VUE_APP_TITLE=My App development 只有以 VUE_APP_ 開頭的變量會被 webpack.DefinePlugin 靜態嵌入到客戶端側的包中你可以在應用的代碼中這樣訪問它們:console.log(process.env.VUE_APP_SECRET)(staging) VUE_APP_BASE_URL=http://xx.x.xxx.xxx:8080/xxx

新建文件:.env.test 測試環境

NODE_ENV=test VUE_APP_TITLE=My App test (staging) VUE_APP_BASE_URL=https://www.test.com/

新建文件:.env.production 生產環境

NODE_ENV=production VUE_APP_TITLE=My App production (staging) VUE_APP_BASE_URL=https://www.production.com/

package.json文件加上:對應的打包命令

    "build-dev": "vue-cli-service build --mode development", "build-test": "vue-cli-service build --mode test", "build-beta": "vue-cli-service build --mode beta", "build-prod": "vue-cli-service build --mode production"
執行 cnpm/npm run build-dev     打本地開發包
執行 cnpm/npm run build-test    打測試包
執行 cnpm/npm run build-beta    打預生產包
執行 cnpm/npm run build-prod    打生產包
到此vue-cli3.x / 4.x環境區分和命令打包配置完成,路由/組件/vuex語法參照官網即可 配置項參照官方在 vue.config.js 配置即可生效;
以上代碼為原創內容,謝絕轉載!!!如需測試,自己動手!!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM