vue-cli3.x以上的vue.config.js文件的配置,配置中包含: vue-cli3中使用stylus全局變量


2019年12月27日

vue-cli3以上的版本就已經沒有vue.config.js文件了,如果需要使用的話,得我們自己配置,在該配置中,可以完成配置代理跨域/使用less/sass/stylus預處理器的問題.

首先在package.json文件的同級目錄中新建一個vue.config.js文件,然后在該文件中寫入以下代碼:

// const webpack = require("webpack");
// const Version = new Date().getTime();
const path = require("path");
module.exports = {
  /* 部署生產環境和開發環境下的URL:可對當前環境進行區分,baseUrl 從 Vue CLI 3.3 起已棄用,要使用publicPath */
  /* baseUrl: process.env.NODE_ENV === 'production' ? './' : '/' */
  // publicPath: process.env.NODE_ENV === "production" ? "/public/" : "./",
  publicPath: "./",
  /* 輸出文件目錄:在npm run build時,生成文件的目錄名稱 */
  outputDir: "dist",
  /* 放置生成的靜態資源 (js、css、img、fonts) 的 (相對於 outputDir 的) 目錄 */
  assetsDir: "assets",
  /* 是否在構建生產包時生成 sourceMap 文件,false將提高構建速度 */
  productionSourceMap: false,
  /* 默認情況下,生成的靜態資源在它們的文件名中包含了 hash 以便更好的控制緩存,你可以通過將這個選項設為 false 來關閉文件名哈希。(false的時候就是讓原來的文件名不改變) */
  filenameHashing: false,
  /* 代碼保存時進行eslint檢測 */
  lintOnSave: true,
  /* webpack-dev-server 相關配置 */
  devServer: {
    //   /* 自動打開瀏覽器 */
    open: false,
    //   /* 設置為0.0.0.0則所有的地址均能訪問 */
    host: "0.0.0.0",
    port: 8080,
    https: false,
    hotOnly: false,
    //   /* 使用代理配置跨域 */
    proxy: {
      "/api": {
        target: "http://www.example.org", // target host
        changeOrigin: true, // needed for virtual hosted sites
        ws: true, // proxy websockets
        pathRewrite: {
          "^/api/old-path": "/api/new-path", // rewrite path
          "^/api/remove/path": "/path" // remove base path
        },
        router: {
          // when request.headers.host == 'dev.localhost:3000',
          // override target 'http://www.example.org' to 'http://localhost:8000'
          "dev.localhost:3000": "http://localhost:8000"
        }
      }
    }
  },
  // configureWebpack: {
  //   /* //引入jquery
  //   plugins: [
  //     new webpack.ProvidePlugin({
  //       $: "jquery",
  //       jQuery: "jquery",
  //       "windows.jQuery": "jquery"
  //     })
  //   ], */
  //   /*打包配置版本號*/
  //   output: {
  //     /*模塊名稱+時間戳*/
  //     filename: `[name].${Version}.js`,
  //     chunkFilename: `[name].${Version}.js`
  //   }
  // },
  css: {
    loaderOptions: {
      // 給 sass-loader 傳遞選項
      sass: {
        // @/ 是 src/ 的別名
        // 所以這里假設你有 `src/variables.sass` 這個文件
        // 注意:在 sass-loader v7 中,這個選項名是 "data"
        prependData: `@import "~@/variables.sass"`
      },
      // 默認情況下 `sass` 選項會同時對 `sass` 和 `scss` 語法同時生效
      // 因為 `scss` 語法在內部也是由 sass-loader 處理的
      // 但是在配置 `data` 選項的時候
      // `scss` 語法會要求語句結尾必須有分號,`sass` 則要求必須沒有分號
      // 在這種情況下,我們可以使用 `scss` 選項,對 `scss` 語法進行單獨配置
      scss: {
        prependData: `@import "~@/variables.scss";`
      },
      // 給 less-loader 傳遞 Less.js 相關選項
      less: {
        // http://lesscss.org/usage/#less-options-strict-units `Global Variables`
        // `primary` is global variables fields name
        globalVars: {
          primary: "#fff"
        }
      }
    }
  },
  // 配置使用stylus全局變量
  chainWebpack: config => {
    const types = ["vue-modules", "vue", "normal-modules", "normal"];
    types.forEach(type =>
      addStyleResource(config.module.rule("stylus").oneOf(type))
    );
  }
};
// ====定義函數addStyleResource===
function addStyleResource(rule) {
  rule
    .use("style-resource")
    .loader("style-resources-loader")
    .options({
      patterns: [path.resolve(__dirname, "./src/common/stylus/index.styl")] // 后面跟着的路徑改成你自己放公共stylus變量的路徑
    });
}
 
 
最后重新啟動項目,通過vue-cli3.x搭建的項目里就可以正常使用stylus的公共變量了
注意:一定要將該配置文件代碼中的配置公共stylus變量的路徑改成你自己的路徑(想偷懶,拿來就用是初學者最容易犯的錯誤).


免責聲明!

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



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