如何在Vue CLI 3中使用stylus-resources-loader?

时间:2018-02-12 15:43:10

标签: vue.js stylus vue-cli

我知道它涉及修改vue.config.js,但只是在configureWebpack对象中粘贴我想要的配置似乎不起作用。有没有其他人能够解决这个问题?

要添加的配置:

module: {
            rules: [
                {
                    test: /\.vue$/,
                    use: [
                        {
                            loader: "vue-loader",
                            options: {
                                loaders: {
                                    stylus: [
                                        {
                                            loader: "stylus-resources-loader",
                                            options: {
                                                resources:
                                                    "./src/assets/_base.styl",
                                            },
                                        },
                                    ],
                                },
                            },
                        },
                    ],
                },
            ],
        },

谢谢!

1 个答案:

答案 0 :(得分:2)

const path = require('path');

module.exports = {
  chainWebpack: (config) => {
    config.module
      .rule('vue')
      .use('vue-loader')
      .tap((options) => {
        options.loaders.stylus = options.loaders.stylus.concat({
          loader: 'stylus-resources-loader',
          options: {
            resources: path.resolve('./src/assets/_base.styl'),
          },
        });
        return options;
      });
  },
};

更新:

应该注意lang<style lang="stylus">属性的值会影响配置项的编写方式! 如果langstylus,则stylus将安装在loader上,其编写方式如下:options.loaders.stylus,以及lang的值}是styl,应该写成options.loaders.styl

由于@vue/cli-service/lib/webpack/CSSLoaderResolver.js中的以下代码:

getLoader (test, loader, options = {}) {
  styl (test = /\.styl$/) {
    return this.getLoader(test, 'stylus')
  }

  stylus (test = /\.stylus$/) {
    return this.getLoader(test, 'stylus')
  }
}

参考https://stackoverflow.com/a/49086022/4723163