@cprussin/transform-package-json
v1.3.0
Published
A tool to help generate a package.json for publishing.
Downloads
213
Readme
@cprussin/transform-package-json - v1.3.0
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.
Installing
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
andscripts
fields - If
--removeType
is paassed, remove thetype
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.
Table of contents
Type Aliases
Functions
Type Aliases
Options
Ƭ Options: Object
Options that control how the package.json
contents are transformed.
Type declaration
| Name | Type | Description |
| :------ | :------ | :------ |
| relativePathRoot?
| string
| If passed, this is the new root for relative paths in main
, types
, bin
, and exports
, relative to the old root. Typically this is the directory where the output will be written relative to the directory where the input file is. You only need to specify this manually if using transformPackageJsonContents as it will be automatically derived from the paths passed in when using transformPackageJson If not specified, relative paths are left alone. |
| removeType?
| boolean
| If true
, strip the type
field out when transforming. |
Defined in
PackageJson
Ƭ PackageJson: Record
<string
, unknown
> & { bin?
: string
| Record
<string
, string
> ; exports?
: string
| string
[] | Nested
<string
> ; main?
: string
; types?
: string
}
A simplified type describing the schema of package.json
files. Here we
only define fields that this library touches.
Defined in
Functions
transformPackageJson
▸ transformPackageJson(input
, output
, options?
): Promise
<void
>
Load the contents of the package.json
file located at input
, calculate
the relative path root between input
and output
, transform the contents
using transformPackageJsonContents, and write the results to
output
.
Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| input
| string
| the path to the input package.json
|
| output
| string
| the path that the transformed package.json
will be written to |
| options?
| Omit
<Options
, "relativePathRoot"
> | optional Options which will control the transformation |
Returns
Promise
<void
>
an empty promise that resolves when the new file is successfully written
See
Defined in
transformPackageJsonContents
▸ transformPackageJsonContents(contents
, options?
): PackageJson
Take the contents of a package.json
file and optional Options and
apply the transformations, returning the results. In general you won't use
this directly and you'll probably want to use transformPackageJson
instead, unless you have unique requirements around loading the
package.json
contents from disk, writing the new contents out, or
calculating the new Options.relativePathRoot.
Parameters
| Name | Type | Description |
| :------ | :------ | :------ |
| contents
| PackageJson
| the contents of the package.json
that you'd like to transform |
| options?
| Options
| optional Options which will control the transformation |
Returns
the transformed package.json
contents
See