Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

ts2mjs

streetsidesoftware7.8kMIT3.0.0

Rename TypeScript Created ESM .js files to .mjs

ESM, js, mjs, TypeScript, d.ts, d.mts

readme

ts2mjs

Rename TypeScript created ESM .js files to .mjs

This tool takes output from tsc and copies/renames the files.

  • file.js => file.mjs
  • file.js.map => file.mjs.map
  • file.d.ts => file.d.mts
  • file.d.ts.map => file.d.mts.map

dist/code.js -> dist/code.mjs

import * as path from 'path';
import { lib } from 'package/lib/index.js'
-import { findFiles } from './findFiles.js';
+import { findFiles } from './findFiles.mjs';

dist/index.d.ts -> dist/index.d.mts

-export { PrimeNumber, Tuple, GUID, Address, Person, Annotation, } from './types.js';
+export { PrimeNumber, Tuple, GUID, Address, Person, Annotation, } from './types.mjs';
-export { lookUpPerson } from './lookup.js';
+export { lookUpPerson } from './lookup.mjs';

Usage

This is an example on how to create a package that exports both CommonJS and ESM from TypeScript source.

tsconfig.esm.json

{
  "$schema": "https://json.schemastore.org/tsconfig",
  "extends": "@tsconfig/node18/tsconfig.json",
  "compilerOptions": {
    "declaration": true,
    "module": "ES2022",
    "moduleResolution": "node",
    "outDir": "dist/esm",
    "sourceMap": true
  },
  "include": ["src"]
}

tsconfig.cjs.json

{
  "$schema": "https://json.schemastore.org/tsconfig",
  "extends": "@tsconfig/node18/tsconfig.json",
  "compilerOptions": {
    "declaration": true,
    "module": "NodeNext",
    "moduleResolution": "NodeNext",
    "outDir": "dist/cjs",
    "sourceMap": true
  },
  "include": ["src"]
}

package.json

{
  "type": "commonjs",
  "main": "dist/csj/index.js",
  "module": "dist/esm/index.mjs",
  "types": "dist/cjs/index.d.ts",
  "exports": {
    ".": {
      "import": "./dist/esm/index.mjs",
      "require": "./dist/cjs/index.js"
    }
  }
}
tsc -p tsconfig.cjs.json
tsc -p tsconfig.esm.json
ts2mjs dist/esm

Help

Usage: ts2mjs [options] <files...>

Rename ESM .js files to .mjs

Arguments:
  files                 The files to rename.

Options:
  -o, --output <dir>    The output directory.
  --cwd <dir>           The current working directory.
  --root <dir>          The root directory.
  --dry-run             Dry Run do not update files.
  --no-must-find-files  No error if files are not found.
  --no-enforce-root     Do not fail if relative `.js` files outside of the root
                        are imported.
  --color               Force color.
  --no-color            Do not use color.
  -v, --verbose         Verbose mode
  -V, --version         output the version number
  -h, --help            display help for command


Brought to you by Street Side Software Logo Street Side Software

changelog

Changelog

3.0.0 (2024-03-03)

⚠ BREAKING CHANGES

  • Drop support for Node16 (#122)

Features

2.1.1 (2023-08-28)

Bug Fixes

2.1.0 (2023-08-26)

Features

2.0.0 (2023-08-21)

⚠ BREAKING CHANGES

  • Require Node 16+ (#65)

Bug Fixes

1.1.2 (2023-03-06)

Bug Fixes

  • Skip files where the src and target are the same (#13) (1f3ccca)

1.1.1 (2023-02-19)

Bug Fixes

  • Error on import outside of root (#6) (d54787c)

1.1.0 (2023-02-19)

Features

1.0.0 (2023-02-18)

Miscellaneous Chores

Changelog