@codemod-utils/json
v1.1.9
Published
Utilities for handling JSON
Downloads
181
Readme
@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, convertToObject
convertToMap()
converts an object to a Map, while convertToObject()
converts the Map back to an object. Use these two utilities to update JSONs.
[!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);
Configure tsconfig.json
in an Ember app.
const compilerOptions = convertToMap(tsConfigJson['compilerOptions']);
compilerOptions.set('paths', {
[`${appName}/tests/*`]: ['tests/*'],
[`${appName}/*`]: ['app/*'],
'*': ['types/*'],
});
tsConfigJson['compilerOptions'] = convertToObject(compilerOptions);
readPackageJson
Reads package.json
and returns the parsed JSON.
[!NOTE]
readPackageJson()
checks thatpackage.json
exists and is a valid JSON.
Check if the project, against which the codemod is run, has typescript
as a dependency.
import { readPackageJson } from '@codemod-utils/json';
const { dependencies, devDependencies } = readPackageJson({
projectRoot,
});
const projectDependencies = new Map([
...Object.entries(dependencies ?? {}),
...Object.entries(devDependencies ?? {}),
]);
const hasTypeScript = projectDependencies.has('typescript');
validatePackageJson
Check if the fields name
and version
exist, in the sense that their values are a non-empty string.
[!NOTE] You may still need the non-null assertion operator
!
, to tell TypeScript thatname
andversion
are notundefined
.
import { readPackageJson, validatePackageJson } from '@codemod-utils/json';
const packageJson = readPackageJson({
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.