在 Quasar CLI 中使用 lang="pug"

Using lang="pug" with Quasar CLI

我已经开始了一个全新的 Quasar CLI 项目,我想按照我习惯的方式使用 Pug:在我的一些 .vue 文件中加入一个 lang="pug" 标签:

<template lang="pug">
  q-page(class="flex flex-center")
    p Well hello there
...

这会引发此错误:

Component template requires a root element, rather than just text

Quasar给出的建议是增加这个配置:

// quasar.conf.js
build: {
  extendWebpack (cfg) {
    cfg.module.rules.push({
      test: /\.pug$/,
      loader: 'pug-plain-loader'
    })
  }
}

但这假设我所有的哈巴狗文件都在名为 .pug 的文件中,这不是我的偏好。

有没有办法让 lang="pug" 在我的 vue-cli 项目中正常工作?

Quasar CLI........ v0.17.24

Quasar Framework.. v0.17.20

这应该可以正常工作。我建立了一个新的 quasar 项目,并像这样将 pug 添加到 webpack 规则

extendWebpack (cfg) {
        cfg.module.rules.push({
          enforce: 'pre',
          test: /\.(js|vue)$/,
          loader: 'eslint-loader',
          exclude: /node_modules/
        })
        cfg.module.rules.push({
          test: /\.pug$/,
          loader: 'pug-plain-loader'
        })
      }

我的 app.vue 看起来像这样

<template lang="pug">
  div(id="q-app")
    router-view
</template>

一切正常。我使用 quasar 1.0 beta 及其在使用 CLI 创建时创建的默认项目格式。

在我的例子中,Ben 解决方案不起作用:我想出的是在 quasar.conf.js 文件中按如下方式设置该块:

  extendWebpack (cfg) {
    cfg.module.rules.push({
      enforce: 'pre',
      test: /\.(js|vue)$/,
      loader: 'eslint-loader',
      exclude: /node_modules/
    })

  },

  chainWebpack (chain) {
    chain.module.rule('pug')
      .test(/\.pug$/)
      .use('pug-plain-loader')
        .loader('pug-plain-loader')
  }

有了这个,我只需要在我使用 pug 语法的任何模板中添加属性 lang="pug"

Ben 的解决方案引发了我对现有 Vue 文件和 js 文件的很多错误。