@codemod-utils/json v1.1.6
@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.
29 days ago
2 months ago
3 months ago
5 months ago
7 months ago
7 months ago
8 months ago
8 months ago
6 months ago
9 months ago
10 months ago
10 months ago
9 months ago
11 months ago
12 months ago
12 months ago
12 months ago
11 months ago
11 months ago
1 year ago