CLI tool and wrapper for Node.js amaro
to transpile TypeScript codebases to JavaScript via type stripping (preserving line numbers).
When publishing Node.js packages written in TypeScript, you often need to ship JavaScript files with source maps. amaroc
simplifies this by stripping TypeScript types with amaro
and rewriting .ts
imports to .js
using jscodeshift
, all in a single command, removing the need for source maps. It’s perfect for prepack
scripts and respects .gitignore
for seamless use.
Note that Node.js 23 or newer is required for TypeScript support without transpilation, but this package will work on Node.js 20+ so you can use it in release CI workflows with older Node.js versions.
- Transpiles
.ts
to.js
with type stripping, preserving line numbers. - Updates
import
,require()
, and dynamicimport()
paths from.ts
to.js
. - Respects
.gitignore
patterns to skip ignored files. - Optional cleanup of original
.ts
files. - Easy to drop in and use -- no tsconfig.json or other config required
Install as a dev dependency:
npm install -D amaroc
After installing as a dev dep, it's as simple as adding this to your package.json's prepack
to auto build before npm publish
and on local npm installs:
{
...
"prepack": "amaroc"
...
}
$ npx amaroc --help
Usage: amaroc [path] [options]
Description:
Transpiles TypeScript (.ts) files to JavaScript (.js) files.
Arguments:
[path] Optional. A directory or a .ts file to transpile.
- If omitted, processes all .ts files in the current directory.
- If a directory, processes all .ts files in that directory.
- If a .ts file, converts only that file.
Options:
--verbose Enable debug logging during conversion.
--clean Delete original .ts files after conversion.
--help Display this help message.
Examples:
amaroc # Transpile all .ts files in current directory
amaroc src # Transpile all .ts files in 'src' directory
amaroc file.ts # Transpile 'file.ts' to 'file.js'
amaroc --verbose # Transpile with logging
amaroc src --clean # Transpile and delete original .ts files
amaroc file.ts --verbose --clean # Transpile single file with logging and cleanup
You can also use amaroc
programmatically in Node.js:
const { convert, convertFile } = require('amaroc');
// Convert all .ts files in a directory
await convert('src', { debug: true, deleteOriginal: false });
// Convert a single file
const jsPath = convertFile('path/to/file.ts');
Type definitions are included:
import { convert, convertFile } from 'amaroc';
convert('src', { debug: true }).then(() => console.log('Done'));
const jsPath = convertFile('path/to/file.ts');
See index.d.ts
for full type details.
MIT License. See LICENSE for details.
- Built on top of Node.js's
amaro
for type stripping. - Uses Meta's
jscodeshift
for AST transformations.