多項(xiàng)目配置

package.js

 "scripts": {
    "serve": "vue-cli-service serve",
    "build:pc": "vue-cli-service build pc",
    "build:m": "vue-cli-service build m",
    "lint": "eslint --fix --ext .js,.vue src"
  },

vue.config.js

// 代碼壓縮
const TerserPlugin = require('terser-webpack-plugin')
// gzip壓縮
const CompressionPlugin = require('compression-webpack-plugin')
const webpack = require('webpack')
const path = require('path')
// var proEnv = require('./config/pro.env') // 生產(chǎn)環(huán)境
// var devEnv = require('./config/dev.env') // 本地環(huán)境
// 默認(rèn)是本地環(huán)境
const env = process.env.NODE_ENV
let writeEnv = ''
if (env === 'production') { // 生產(chǎn)環(huán)境
  writeEnv = require('./config/pro.env') // 生產(chǎn)環(huán)境
} else { // 本地環(huán)境
  // 測試
  writeEnv = require('./config/dev.env') // 本地環(huán)境
}
function resolve(dir) {
  return path.join(__dirname, dir)
}

const HOST = '0.0.0.0'
const PORT = '8045'

// const DEV_URL = 'http://teamworkapi.mokingsoft.com';
// const DEV_URL = 'https://pmp.yangguangqicai.com/api'

// const pages = {
//   m: {
//     entry: 'src/pages/m/main.js',
//     template: 'public/m.html',
//     filename: 'index.html',
//     chunks: ['chunk-vendors', 'chunk-common', 'm']
//   },
//   pc: {
//     entry: 'src/pages/pc/main.js',
//     template: 'public/pc.html',
//     filename: 'index.html',
//     chunks: ['chunk-vendors', 'chunk-common', 'pc']
//   }

// }
const projectname = process.argv[3] // 獲取build后面的參數(shù)確定執(zhí)行哪個文件
function getEntry() {
  let entries = {}
  if (process.env.NODE_ENV == 'production') {
    entries = {
      index: {
        // page的入口
        entry: 'src/pages/'+projectname+'/main.js',
        // 模板來源
        template: `public/index.html`,
        // 在 dist/index.html 的輸出
        // title: 'CIMS--'+projectName,
        filename: 'index.html',
        chunks: ['chunk-vendors', 'chunk-common', 'index']
      }
    }
  } else {
    let items = ['pc','m']
    for (let i in items) {
      const fileName=items[i];
      entries[fileName] = {
        entry: `src/pages/${fileName}/main.js`,
        // 模板來源
        template: `public/index.html`,
        // 在 dist/index.html 的輸出
        filename: `${fileName}.html`,
        // title: 'CIMS--'+fileName,
        // 提取出來的通用 chunk 和 vendor chunk。
        chunks: ['chunk-vendors', 'chunk-common', fileName]
      }
    }
  }
  return entries
}

// let usedPage = {}
// const projectname = process.argv[3] // 獲取build后面的參數(shù)確定執(zhí)行哪個文件
// if (env == 'production') {
//   usedPage[projectname] = pages[projectname]
// } else {
//   usedPage = pages
// }
const usedPage=getEntry();
console.log(process);
module.exports = {
  //  測試   h5:   newcrm_page_h5test    newcrm_page_test
  publicPath: process.env.NODE_ENV === 'production' ? '/newcrm_page_h5/' : '/',
  // 正式    newcrm_page_h5    newcrm_page
  // publicPath: process.env.NODE_ENV === 'production' ? '/crm_page/' : '/',
  productionSourceMap: process.env.NODE_ENV !== 'production',
  pages: usedPage,
  outputDir: 'dist/' + projectname,
  // indexPath: 'index.html', // 指定生成的index.html輸出路徑
  css: {
    loaderOptions: {
      less: {
        modifyVars: {
          blue: '#3a82f8',
          'text-color': '#333'
        },
        javascriptEnabled: true
      }
    }
  },

  devServer: {
    host: HOST,
    port: PORT,
    proxy: {
      // 配置跨域
      '/api': {
        // 要訪問的跨域的api的域名
        target: `${writeEnv.hosturl}/`,
        ws: true,
        changOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      },
    }
  },
  configureWebpack: config => {
    if (process.env.NODE_ENV === 'production') {
      // 為生產(chǎn)環(huán)境修改配置
      config.plugins.push(
        new TerserPlugin({
          // parallel:true,// 使用多進(jìn)程并行運(yùn)行來提高構(gòu)建速度。默認(rèn)并發(fā)運(yùn)行數(shù):os.cpus().length - 1扫尖。
          terserOptions: {
            ie8: true,
            compress: {
              drop_debugger: true,
              drop_console: true // 生產(chǎn)環(huán)境自動刪除console
            },
            warnings: false
          }
        }),
        new CompressionPlugin({
          // gzip壓縮配置
          test: /\.js$|\.html$|\.css/, // 匹配文件名
          threshold: 10240, // 對超過10kb的數(shù)據(jù)進(jìn)行壓縮
          deleteOriginalAssets: false, // 是否刪除原文件
          algorithm: 'gzip',
          minRatio: 0.8
        }),
        // 可能中英文翻譯有問題關(guān)注這個設(shè)置
        // 提取 monent 有效部分嘹悼,減小體積哨啃。壓縮前 611k->163k
        // en-gb 英國 en-us 美國(默認(rèn)值) vi 越南 zh-cn 中國
        new webpack.ContextReplacementPlugin(
          /moment[\/\\]locale$/,
          /^\.\/(zh-cn|en-us|vi)$/i
        ) // 在vue工程中割粮,在引入moment時争便,發(fā)現(xiàn)build之后的包比不引入moment的包文件大了整整兩百多kb浮毯,后來發(fā)現(xiàn)webpack會把moment的語言包也一起打包
      )
    } else {
      // config.devtool = 'source-map';
      // config.devtool = false;
    }
    config.resolve = {
      extensions: ['.js', '.vue', '.json', '.css'],
      alias: {
        vue$: 'vue/dist/vue.esm.js',
        '@': resolve('src'),
        assets: resolve('src/assets'),
        components: resolve('src/components')
      }
    }
  },
  lintOnSave: false,
  chainWebpack: config => {
    // config.module.rules.delete('svg')
    config.module
      .rule('iview')
      .test(/\.js$/)
      .use('babel')
      .loader('babel-loader')
      .end() // 此處是添加內(nèi)容重點(diǎn)
    config.resolve.alias.set('@', resolve('src'))
  }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末完疫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子债蓝,更是在濱河造成了極大的恐慌壳鹤,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饰迹,死亡現(xiàn)場離奇詭異芳誓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)啊鸭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門锹淌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赠制,你說我怎么就攤上這事赂摆。” “怎么了憎妙?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵库正,是天一觀的道長。 經(jīng)常有香客問我厘唾,道長褥符,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任抚垃,我火速辦了婚禮喷楣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鹤树。我一直安慰自己铣焊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布罕伯。 她就那樣靜靜地躺著曲伊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上坟募,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天岛蚤,我揣著相機(jī)與錄音,去河邊找鬼懈糯。 笑死涤妒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赚哗。 我是一名探鬼主播她紫,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼屿储!你這毒婦竟也來了贿讹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤扩所,失蹤者是張志新(化名)和其女友劉穎围详,沒想到半個月后朴乖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體祖屏,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年买羞,在試婚紗的時候發(fā)現(xiàn)自己被綠了袁勺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡畜普,死狀恐怖期丰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吃挑,我是刑警寧澤钝荡,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站舶衬,受9級特大地震影響埠通,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜逛犹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一端辱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧虽画,春花似錦舞蔽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至脖岛,卻和暖如春朵栖,著一層夾襖步出監(jiān)牢的瞬間砾省,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工混槐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留编兄,地道東北人。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓声登,卻偏偏與公主長得像狠鸳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子悯嗓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容