vue-cli3 history 模式、多頁面入口、分別打包及 Nginx 上線部署

最近開始開發(fā)新項目,用到了 vue-cli3 的多頁面,同時搞通了在線部署,以下是配置文件詳細(xì)。

vue-cli3 多頁面入口、分別打包及 Nginx 上線部署

vue.config.js 配置

const DEBUG = process.env.NODE_ENV !== "production";

const PAGES = {
  page_1: {
    entry: "src/pages/page_1/main.js",
    template: "public/page_1.html",
    filename: "page_1.html",
    chunks: ["chunk-vendors", "chunk-common", "page_1"]
  },
  page_2: {
    entry: "src/pages/page_2/main.js",
    template: "public/page_2.html",
    filename: "page_2.html",
    chunks: ["chunk-vendors", "chunk-common", "page_2"]
  }
};

// 服務(wù)器多級目錄下部署 vuejs 打包文件的目錄地址
let _publicPath = "/";

let page = {};
let pageName = process.argv[3]; // 獲取build后面的參數(shù)確定執(zhí)行哪個文件

if (DEBUG) {
  page = PAGES; //判斷開發(fā)環(huán)境不用分包處理
} else {
  //假如命令 npm run build-index,就會得到 pageName = index
  page[pageName] = PAGES[pageName];

  // 假設(shè)打包后放在 二級目錄
  _publicPath = _publicPath + pageName; // 例:/page_1
}

module.exports = {
  publicPath: _publicPath,
  outputDir: "app/" + pageName,
  pages: page,
  …… // 暫略
};

router.js(page_1) 配置

import Vue from "vue";
import Router from "vue-router";
Vue.use(Router);

const DEBUG = process.env.NODE_ENV !== "production";

// 不同頁面模塊的 PAGE_NAME 名稱對應(yīng)各自的模塊名稱
const PAGE_NAME = "page_1";

let basePath = "/";

if (!DEBUG) {
  basePath = basePath + PAGE_NAME; // 例:/page_1
}

export default new Router({
  mode: "history",
  base: basePath,
  routes: [
    {
      path: "",
      name: "",
      component: () => import("")
    },

public/page_1.html(page_1) 配置

// 增加 meta 標(biāo)簽,結(jié)尾需要 / ,此標(biāo)簽不影響開發(fā)環(huán)境
<meta base ="/center/">

服務(wù)器端 nginx.conf 配置

location /page_1 {
    try_files $uri $uri/ /page_1/page_1.html;
}

package.json 配置

// 增加以下內(nèi)容
"scripts": {
    "build-page_1": "vue-cli-service build page_1",
    "build-page_2": "vue-cli-service build page_2"
}
  
終端使用:npm run build-page_1、npm run build-page_2,分別打包不同模塊

瀏覽器訪問

<!-- 文件的地址:/page_1/page_1.html-->
localhost/page_1/page_1.html

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

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

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