如果当前项目正在使用打字稿,是否在 Gatsby 插件中进行检测?
Detect inside a Gatsby plugin if the current project is using typescript?
可能吗?也许使用 https://www.gatsbyjs.org/docs/node-apis/#resolvableExtensions?
之类的东西
提前致谢
Hhhm 也许你可以连接到 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 })
}
我很好奇你为什么需要这些信息?如果我要实现 typescript-specific 功能,我相信用户只有在使用打字稿时才会使用它。
可能吗?也许使用 https://www.gatsbyjs.org/docs/node-apis/#resolvableExtensions?
之类的东西提前致谢
Hhhm 也许你可以连接到 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 })
}
我很好奇你为什么需要这些信息?如果我要实现 typescript-specific 功能,我相信用户只有在使用打字稿时才会使用它。