Package Exports
- @swc-node/register
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@swc-node/register) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@swc-node/register
Usage
const register = require('@swc-node/register')
register({
...
})CLI
node -r @swc-node/register index.tsMocha
mocha --require @swc-node/register --watch-extensions ts,tsx "test/**/*.{ts,tsx}" [...args]ava
// package.json
{
"ava": {
"extensions": ["ts", "tsx"],
"require": ["@swc-node/register"],
"files": ["packages/**/*.spec.{ts,tsx}"]
}
}Read tsconfig.json
set SWC_NODE_PROJECT or TS_NODE_PROJECT env:
SWC_NODE_PROJECT=./tsconfig.test.json mocha --require @swc-node/register --watch-extensions ts,tsx "test/**/*.{ts,tsx}" [...args]@swc-node/register respect the following option in tsconfig:
extends
@swc-node/register respect the extends key in tsconfig.json, and use the merged values.
compilerOptions.target
switch (target) {
case ts.ScriptTarget.ES3:
return 'es3'
case ts.ScriptTarget.ES5:
return 'es5'
case ts.ScriptTarget.ES2015:
return 'es2015'
case ts.ScriptTarget.ES2016:
return 'es2016'
case ts.ScriptTarget.ES2017:
return 'es2017'
case ts.ScriptTarget.ES2018:
return 'es2018'
case ts.ScriptTarget.ES2019:
return 'es2019'
case ts.ScriptTarget.ES2020:
case ts.ScriptTarget.ESNext:
case ts.ScriptTarget.Latest:
return 'es2020'
case ts.ScriptTarget.JSON:
return 'es5'
}compilerOptions.jsx
If filename endsWith .jsx or .tsx, always set the jsx: true in swc config regards the jsx option in tsconfig.
If filename not endsWith .jsx or .tsx, set the jsx: Boolean(tsconfig.compilerOptions.jsx) in swc config.
compilerOptions.module
notes, if
compilerOptions.modulehigher thanes2020, thedynamicImportinswc configwill be set totrue.
switch (moduleKind) {
case ts.ModuleKind.CommonJS:
return 'commonjs'
case ts.ModuleKind.UMD:
return 'umd'
case ts.ModuleKind.AMD:
return 'amd'
case ts.ModuleKind.ES2015:
case ts.ModuleKind.ES2020:
case ts.ModuleKind.ESNext:
case ts.ModuleKind.None:
return 'es6'
case ts.ModuleKind.System:
throw new TypeError('Do not support system kind module')
}compilerOptions.experimentalDecorators
Respect the boolean value in tsconfig.
compilerOptions.emitDecoratorMetadata
Respect the boolean value in tsconfig.
compilerOptions.esModuleInterop
Respect the boolean value in tsconfig.
include/exclude
TypeScript gives files list to @swc-node/register, if parse tsconfig.json failed or files list empty, @swc-node/register will transform all files which were required.
And if failed to parse tsconfig.json, @swc-node/register will print warning which contains failed reason.