首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vue-loader干扰自定义插件

vue-loader干扰自定义插件
EN

Stack Overflow用户
提问于 2019-12-10 16:59:56
回答 1查看 98关注 0票数 0

为了在.vue文件中预处理一些自定义的非html标签,我曾经(Webpack 3)能够通过一个插件安装一个加载器,该插件可以在vue加载器看到它们并失败之前将这些自定义标签转换为有效的html/js代码。

代码语言:javascript
复制
  apply(compiler) {

    compiler.plugin('normal-module-factory', normalModuleFactory => {

      normalModuleFactory.plugin('after-resolve', (data, callback) => {
        let filename = data.resource;
        // check filename
        data.loaders.push({
          loader: path.resolve('./my-custom-loader')
        });

      }
    }
  }

现在,对于Webpack 4和vue-loader (v15),这似乎不再起作用。VueLoaderPlugin似乎修改了规则(使用他们所谓的“投手”),这导致我的自定义加载器仍然被调用,但更改后的输出(非html标记的替换)似乎不再传递到vue-loader (templateLoader.js)中。

代码语言:javascript
复制
class VueLoaderPlugin {
  apply (compiler) {
    ...
    // replace original rules
    compiler.options.module.rules = [
      pitcher,
      ...clonedRules,
      ...rules
    ]

除了上面的内容,我不能对此进行更深入的研究,所以如果任何人有任何建议,我都将不胜感激。本质上,我尝试在vue-loader之前运行我的客户加载器,以便在vue加载器处理.vue文件之前修改它们。

EN

回答 1

Stack Overflow用户

发布于 2019-12-12 10:34:02

我能够通过将自定义加载器移动到*.vue规则中来解决这个问题:

代码语言:javascript
复制
      {
        test: /\.vue$/,
        use: [
          'vue-loader',
          {loader: myCustomLoader}
        ]
      },

而不是使用:

代码语言:javascript
复制
      {
        test: /\.vue$/,
        loader: 'vue-loader'
      },

这是添加vue-loader的标准方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59263490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档