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的公共变量了

猜你喜欢

转载自www.cnblogs.com/shidawang/p/12106951.html