Skip to content

Latest commit

 

History

History
135 lines (81 loc) · 2.75 KB

README.md

File metadata and controls

135 lines (81 loc) · 2.75 KB

This project uses GitHub Actions for continuous integration.

@codemod-utils/json

Utilities for handling JSON

What is it?

@codemod-utils/json helps you update files like package.json and tsconfig.json.

API

convertToMap

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);
  });
}

convertToObject

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);
}

readPackageJson, validatePackageJson

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;

Compatibility

  • Node.js v18 or above

Contributing

See the Contributing guide for details.

License

This project is licensed under the MIT License.