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

我知道它涉及修改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",
                                            },
                                        },
                                    ],
                                },
                            },
                        },
                    ],
                },
            ],
        },

谢谢!

解答

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;
      });
  },
};

更新:

需要注意的是<style lang="stylus">lang属性的取值会影响配置项的写法!当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

Logo

前往低代码交流专区

更多推荐