esm-loader-typescript
Version:
Chainable ESModule Loader for Typescript
113 lines (85 loc) • 2.17 kB
Markdown
[][node-loaders] for importing and loading
Typescript (`.ts`) files and transpiling on the fly.
**Warning!** Using experimental Node.js features and flags,
API will likely change. This may be helpful for development and testing,
but should not be used in production.
## Usage
```sh
npm install --save-dev esm-loader-typescript
```
We want to import a `.ts` file with Node.js:
```ts
// index.ts
const words: string = 'hello'
console.log(words)
// 'hello'
```
```sh
cat << EOF > ./register.js
import { register } from 'node:module'
register('esm-loader-typescript', import.meta.url)
EOF
NODE_OPTIONS="--import ./register.js" node index.ts
NODE_OPTIONS="--loader esm-loader-typescript" node index.ts
```
This loader can be configured, and chained with other loaders, using
[][node-esm-loader].
```sh
npm install --save-dev node-esm-loader
```
```js
// .loaderrc.js
export default {
loaders: ['esm-loader-typescript'],
}
```
```sh
NODE_OPTIONS="--import node-esm-loader/register" node index.ts
NODE_OPTIONS="--loader node-esm-loader" node index.ts
```
You may specify a custom TypeScript config filename to use:
```js
// .loaderrc.js
export default {
loaders: [
{
loader: 'esm-loader-typescript',
options: {
config: 'tsconfig-custom.json',
},
},
],
}
```
Otherwise, if a `tsconfig.json` file is found, it will be loaded and used.
```js
// .loaderrc.js
export default {
loaders: [
{
loader: 'esm-loader-typescript',
options: {
debug: true,
},
},
],
}
```
- [esm-loader-import-relative-extension][esm-loader-import-relative-extension]
[][mit-license]
[]: https://github.com/brev/esm-loaders/tree/main/packages/esm-loader-import-relative-extension#readme
[]: https://mit-license.org/
[]: https://github.com/sebamarynissen/node-esm-loader#readme
[]: https://nodejs.org/api/esm.html#loaders