是否在Gatsby插件中检测当前项目是否使用打字稿?

时间:2019-06-23 05:00:21

标签: typescript gatsby

有可能吗?也许使用诸如https://www.gatsbyjs.org/docs/node-apis/#resolvableExtensions之类的东西?

预先感谢

1 个答案:

答案 0 :(得分:1)

嗯,也许您可​​以加入onCreateWebpackConfig并检查其中的扩展名:

// gatsby-node.js

exports.onCreateWebpackConfig = ({ getConfig }) => {
  const { extensions } = getConfig().resolve
  const hasTs = extensions.find(ext => ['.ts', '.tsx'].includes(ext))
  console.log(hasTs) // undefined if no ts
}

但是,如果您需要这些信息,最确定的办法是检查src目录中是否包含ts文件,例如glob

const path = require(`path`)
const glob = require(`glob`)

const checkTs = ({ directory }) => {
  const srcFolder = path.join(directory, 'src')
  const tsFiles = glob.sync(`${srcFolder}/**/*.ts{,x}`)
  return (tsFiles.length > 0)
}

exports.onPreInit = ({ store }) => {
  const { directory } = store.getState().program
  const hasTs = checkTs({ directory })
  console.log({ hasTs })
}

我很好奇为什么您需要此信息?如果我要实现特定于打字稿的功能,我希望用户仅在使用打字稿时才使用它。