Utilities for handling JSON
@codemod-utils/json
helps you update files like package.json
and tsconfig.json
.
Converts an object to a Map. The Map
data structure helps you add, update, and remove entries.
Example
import { convertToMap } from '@codemod-utils/json';
function updateDependencies(packageJson) {
const dependencies = convertToMap(packageJson['dependencies']);
const packagesToDelete = [
'@embroider/macros',
'ember-auto-import',
'ember-cli-babel',
'ember-cli-htmlbars',
];
packagesToDelete.forEach((packageName) => {
dependencies.delete(packageName);
});
}
Converts a Map (back) to an object. convertToObject
helps you update the JSON.
Example
import { convertToMap, convertToObject } from '@codemod-utils/json';
function updateDependencies(packageJson) {
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);
}
Reads package.json
and returns the parsed JSON.
Example
import { readPackageJson } from '@codemod-utils/json';
const { dependencies, devDependencies } = readPackageJson({
projectRoot: '__projectRoot__',
});
const projectDependencies = new Map([
...Object.entries(dependencies ?? {}),
...Object.entries(devDependencies ?? {}),
]);
const hasTypeScript = projectDependencies.has('typescript');
readPackageJson
checks that package.json
exists and is a valid JSON. Call validatePackageJson
if you need to know that the name
and version
fields exist.
Example
import { readPackageJson, validatePackageJson } from '@codemod-utils/json';
const packageJson = readPackageJson({
projectRoot: '__projectRoot__',
});
validatePackageJson(packageJson);
const { name, version } = packageJson;
- Node.js v16 or above
See the Contributing guide for details.
This project is licensed under the MIT License.