@codemod-utils/package-json
v3.3.0
Published
Utilities for handling package.json
Readme
@codemod-utils/package-json
Utilities for handling package.json
What is it?
@codemod-utils/package-json helps you read and update package.json.
API
convertToMap, convertToObject
convertToMap() converts an object to a Map, while convertToObject() converts the Map back to an object. Use these two utilities to update objects in package.json.
[!NOTE]
convertToObject()creates an object with keys in alphabetical order.
Remove dependencies (if they exist) from package.json.
const dependencies = convertToMap(packageJson['dependencies']);
const packagesToDelete = [
'@embroider/macros',
'ember-auto-import',
'ember-cli-babel',
'ember-cli-htmlbars',
];
packagesToDelete.forEach((packageName) => {
dependencies.delete(packageName);
});
packageJson['dependencies'] = convertToObject(dependencies);getPackageType
Determines package type based on Ember's conventions.
Possible values are 'node', 'v1-addon', 'v1-app', 'v2-addon', or 'v2-app'.
Make an early exit in a codemod that converts v1 addons to v2.
const packageType = getPackageType(packageJson);
if (packageType === 'v2-addon') {
return;
}
// Convert to v2readPackageJson
Reads package.json and returns the parsed JSON.
[!NOTE]
readPackageJson()checks thatpackage.jsonexists and is a valid JSON.
Check if a project has typescript as a dependency.
import { readPackageJson } from '@codemod-utils/package-json';
const { dependencies, devDependencies } = readPackageJson({
projectRoot,
});
const projectDependencies = new Map([
...Object.entries(dependencies ?? {}),
...Object.entries(devDependencies ?? {}),
]);
const hasTypeScript = projectDependencies.has('typescript');validatePackageJson
(Type-)Checks that the fields name and version exist, in the sense that their values are a non-empty string.
import {
readPackageJson,
validatePackageJson,
} from '@codemod-utils/package-json';
const packageJson = readPackageJson({ projectRoot });
validatePackageJson(packageJson);
// Both guaranteed to be `string` (not `undefined`)
const { name, version } = packageJson;Compatibility
- Node.js v20 or above
Contributing
See the Contributing guide for details.
License
This project is licensed under the MIT License.
