Use TypeScript with preact-cli
npm install preact-cli-plugin-typescriptUse TypeScript with preact-cli.
This will install typescript
and awesome-typescript-loader.
If you prefer Flow, check out preact-cli-plugin-flow.
Install via npm:
``shell`
npm i preact-cli-plugin-typescript --save-dev
After installation, this plugin will create a tsconfig.json (TypeScript preact.config.js
configuration file), and , if they don't exist already.
In the root of your project, edit preact.config.js to add the plugin:
`js
import preactCliTypeScript from 'preact-cli-plugin-typescript'
export default function(config) {
preactCliTypeScript(config)
}
`
If you have an existing tsconfig.json file, be sure to use the correct
JSX factory:
`json`
{
"compilerOptions": {
"jsx": "react",
"jsxFactory": "h"
}
}
Now you can simply add .ts/.tsx files to your project, and they'll.tsx
be compiled. Cool. Make sure you use if you want to use JSX.
You might see an error like
Module './components/app' was resolved to '/src/components/app.js', but '--allowJs' is not set..
To fix this, or if you want to incrementally move to TypeScript, make sure
allowJs is enabled in your tsconfig.json:
`json`
{
"compilerOptions": {
"allowJs": true
}
}
By default, preact-cli looks for src/index.js to start your app. This pluginsrc
widens the scope to "any file in that starts with index and haspreact-cli-entrypoint
a file extension resolved by webpack" - to change this,
override the in preact.config.js:
`js
import { resolve } from 'path'
export default function (config, env, helpers) {
preactCliTypeScript(config)
config.resolve.alias['preact-cli-entrypoint'] = resolve(__dirname, 'src', 'foo-file.foo-extension')
}
``