1

我有一个专有文件格式,我想在我的 Gridsome 网站中使用,每个文件都会生成一个新页面。据我了解,这正是您可以使用 Transformer 的目的。但是,我正在使用的文件类型的转换器不存在插件。是否可以创建自己的 Transformer 供私人使用?

我首先尝试简单地添加source-filesystem插件,但这给了我错误:No transformer for 'application/myformat' is installed.

plugins: [
      {
          use: "@gridsome/source-filesystem",
          options: {
              path: "files/**/*.myformat",
              typeName: "File"
          }
      },
  ]

我发现没有文档可以做类似的事情,这让我感到惊讶,因为它看起来一定是一个相当常见的用例。有人知道这样做的方法吗?

4

1 回答 1

1

好吧,我能够弄清楚这一点,但似乎仍然必须有一个更简单的方法。

在一个单独的项目目录中,我跑来npm init创建最低限度的package.json(我的 Transformer 没有其他依赖项,如果有的话,你必须在此处包含它们)。

然后我在我指定的“主”类中添加了我的 Transformer 类,如下所示package.json

class Transformer {
    static mimeTypes () {
        return ['application/myformat']
    }

    parse (source) {
      let parsed = // whatever parsing is necessary
      return {
        parsed
      }
    }

    extendNodeType ({ graphql }) {
      return {
        // custom GraphQL fields for transformed node
      }
    }
}

module.exports = Transformer

接下来,从新目录运行npm link,然后从您的主项目目录(将使用 Transformer)运行npm link your-transformer-project-name

最后,您应该在以下部分将新插件项目添加到您的主项目package.jsondevDependencies

...
"devDependencies": {
  "gridsome-transformer-myformat": "^1.0.0"
}
于 2021-02-05T16:45:39.753 回答