prettier-plugin-pkg
Version:
An opinionated package.json formatter plugin for Prettier
96 lines • 1.83 kB
JavaScript
import { alphabetSort, sortObject } from '../utils.js';
export const dependencyNames = [
'bundledDependencies',
'peerDependencies',
'peerDependenciesMeta',
'dependencies',
'dependenciesMeta',
'optionalDependencies',
'devDependencies',
'overrides',
'resolutions',
];
const primary = [
'$schema',
'name',
'version',
'type',
'flat',
'displayName',
'description',
'categories',
'repository',
'homepage',
'bugs',
'author',
'publisher',
'maintainers',
'contributors',
'donate',
'funding',
'sponsor',
'license',
'preview',
'private',
'workspaces',
'languageName',
'packageManager',
'engines',
'cpu',
'os',
'man',
'bin',
'main',
'module',
'imports',
'exports',
'esnext',
'es2020',
'esm2020',
'fesm2020',
'es2015',
'esm2015',
'fesm2015',
'es5',
'esm5',
'fesm5',
'browser',
'umd',
'jsdelivr',
'unpkg',
'types',
'typings',
'typesVersions',
'directories',
'files',
'keywords',
'scripts',
'config',
...dependencyNames,
'publishConfig',
'sideEffects',
'icon',
'badges',
'galleryBanner',
'activationEvents',
'contributes',
'markdown',
'qna',
'extensionPack',
'extensionDependencies',
'extensionKind',
];
export const sort = (props) => {
const others = [];
const known = props.filter(prop => {
if (primary.includes(prop.key.value)) {
return true;
}
others.push(prop);
return false;
});
known.sort((a, b) => alphabetSort(primary.indexOf(a.key.value), primary.indexOf(b.key.value)));
others.sort(sortObject);
return [...known, ...others];
};
//# sourceMappingURL=sort.js.map