Module @cprussin/transform-package-json - v1.3.1

This package contains a CLI and an API for transforming a package.json into a new location while patching relative paths and removing development-only fields.


Use the package manager of your choice to install:

  • npm: npm install --save-dev @cprussin/transform-package-json
  • pnpm: pnpm add -D @cprussin/transform-package-json
  • yarn: yarn add -D @cprussin/transform-package-json

CLI Usage

The CLI takes a path to an input package.json and a path to an output package.json. It will then run the following transformations on the input, saving the result to the output path:

  • Remove the devDependencies and scripts fields
  • If --removeType is paassed, remove the type field (for instance, you may want to do this is you're transpiling ESM to CJS)
  • Update relative path references so that the new package.json points to the same files as the old one. Fields that are updated are:
    • main
    • types
    • bin
    • exports

For example, you can use the CLI by calling:

transform-package-json --removeType ./package.json ./dist/package.json

Which will convert this package.json:

name: "foo",
type: "module",
main: "./dist/index.js",
types: "./dist/index.d.js",
exports: {
import: "./dist/esm/index.mjs",
require: "./dist/cjs/index.js",
scripts: {
foo: "bar",
devDependencies: {
baz: "latest",

into this one:

name: "foo",
main: "./index.js",
types: "./index.d.js",
exports: {
import: "./esm/index.mjs",
require: "./cjs/index.js",

API Usage

You can use transformPackageJson with an input path, output path, and optional Options as a javascript equivalent to the CLI. Alternatively, if you have a non-standard use case for loading/writing files, you can call transformPackageJsonContents, which takes the parsed contents of a package.json and an optional Options and returns the transformed contents.


Type Aliases