• 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变量的路径改成你自己的路径(想偷懒,拿来就用是初学者最容易犯的错误).
  • 相关阅读:
    JDk和Mevan安装和配置
    如何修改windows系统的host文件
    字符串格式化
    可变和不可变的数据类型
    拦截
    eclipse格式化代码模板
    oracle语法练习汇总
    PLSQL语法
    oracle创建完实例删除的时候报ORA-01031:insufficient privileges错误,解决办法
    socket多线程方式案例
  • 原文地址:https://www.cnblogs.com/shidawang/p/12106951.html
Copyright © 2020-2023  润新知