国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何配置 vue-cli 3.0 的 vue.config.js

xuweijian / 2021人閱讀

摘要:那么,我們該如何去配置自己的項目了其實這一切都是因為的項目初始化,幫開發者已經解決了,甚至絕大部分情形下的配置。

vue-cli 3 英文文檔
vue-cli 3 中文文檔
webpack 4 plugins
webpack-chain

TLDR

vue-cli 3 與 2 版本有很大區別

vue-cli 3 的 github 倉庫由原有獨立的 github 倉庫遷移到了 vue 項目下

vue-cli 3 的項目架構完全拋棄了 vue-cli 2 的原有架構,3 的設計更加抽象和簡潔(此處后續可以詳細介紹)

vue-cli 3 是基于 webpack 4 打造,vue-cli 2 還是 webapck 3

vue-cli 3 的設計原則是“0配置”

vue-cli 3 提供了 vue ui 命令,提供了可視化配置,更加人性化

由于 vue-cli 3 也學習了 rollup 的零配置思路,所以項目初始化后,沒有了以前熟悉的 build 目錄,也就沒有了 webpack.base.config.js、webpack.dev.config.js 、webpack.prod.config.js 等配置文件。

那么,我們該如何去配置自己的項目了?

其實這一切都是因為 vue-cli 3 的項目初始化,幫開發者已經解決了 80% ,甚至絕大部分情形下的 webpack 配置。

上述功能就是由 @vue/cli-service 依賴去處理,當你打開 node_modules 目錄下 @vue 中的 cli-service 看一眼,是不是找到了熟悉的感覺?

說了這么多,開發者在實際開發過程中,肯定還有需要自己去修改配置的地方,那么,該怎么做了?

這點就需要在項目根目錄下手動新建一個 vue.config.js,此處參考我提供的一個基礎模板:

module.exports = {
  baseUrl: process.env.NODE_ENV === "production"
    ? "http://your_url"
    : "/",

  outputDir: "dist",

  assetsDir: "static",

  filenameHashing: true,

  // When building in multi-pages mode, the webpack config will contain different plugins
  // (there will be multiple instances of html-webpack-plugin and preload-webpack-plugin).
  // Make sure to run vue inspect if you are trying to modify the options for those plugins.
  pages: {
    index: {
      // entry for the pages
      entry: "src/pages/index/index.js",
      // the source template
      template: "src/pages/index/index.html",
      // output as dist/index.html
      filename: "index.html",
      // when using title option,
      // template title tag needs to be <%= htmlWebpackPlugin.options.title %>
      title: "首頁",
      // chunks to include on this pages, by default includes
      // extracted common chunks and vendor chunks.
      chunks: ["chunk-vendors", "chunk-common", "index"]
    }
    // when using the entry-only string format,
    // template is inferred to be `public/subpage.html`
    // and falls back to `public/index.html` if not found.
    // Output filename is inferred to be `subpage.html`.
    // subpage: ""
  },

  // eslint-loader 是否在保存的時候檢查
  lintOnSave: true,

  // 是否使用包含運行時編譯器的Vue核心的構建
  runtimeCompiler: false,

  // 默認情況下 babel-loader 忽略其中的所有文件 node_modules
  transpileDependencies: [],

  // 生產環境 sourceMap
  productionSourceMap: false,

  // cors 相關 https://jakearchibald.com/2017/es-modules-in-browsers/#always-cors
  // corsUseCredentials: false,
  // webpack 配置,鍵值對象時會合并配置,為方法時會改寫配置
  // https://cli.vuejs.org/guide/webpack.html#simple-configuration
  configureWebpack: (config) => {
  },

  // webpack 鏈接 API,用于生成和修改 webapck 配置
  // https://github.com/mozilla-neutrino/webpack-chain
  chainWebpack: (config) => {
    // 因為是多頁面,所以取消 chunks,每個頁面只對應一個多帶帶的 JS / CSS
    config.optimization
      .splitChunks({
        cacheGroups: {}
      });

    // "src/lib" 目錄下為外部庫文件,不參與 eslint 檢測
    config.module
      .rule("eslint")
      .exclude
      .add("/Users/maybexia/Downloads/FE/community_built-in/src/lib")
      .end()
  },

  // 配置高于chainWebpack中關于 css loader 的配置
  css: {
    // 是否開啟支持 foo.module.css 樣式
    modules: false,

    // 是否使用 css 分離插件 ExtractTextPlugin,采用獨立樣式文件載入,不采用