prettier-plugin-pkgsort
Version:
Use prettier-package-json to sort your package.json.
94 lines (86 loc) • 2.26 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var node_path = require('node:path');
var prettier = require('prettier');
var babel = require('prettier/plugins/babel');
var prettierPackageJson = require('prettier-package-json');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var prettier__default = /*#__PURE__*/_interopDefaultLegacy(prettier);
const defaultOptions = {
expandUsers: false,
keyOrder: [
"name",
"displayName",
"private",
"preview",
"version",
"packageManager",
"publisher",
"author",
"contributors",
"type",
"description",
"keywords",
"homepage",
"repository",
"bugs",
"funding",
"categories",
"license",
"sideEffects",
"exports",
"bin",
"main",
"module",
"browser",
"unpkg",
"jsdelivr",
"types",
"typesVersions",
"icon",
"files",
"engines",
"activationEvents",
"contributes",
"eslintConfig",
"publishConfig",
"scripts",
"husky",
"simple-git-hooks",
"lint-staged",
"dependencies",
"devDependencies",
"optionalDependencies",
"peerDependencies",
"peerDependenciesMeta",
"pnpm",
"overrides",
"resolutions"
]
};
const parser = babel.parsers["json-stringify"];
const isPackageJson = (path) => node_path.basename(path) === "package.json";
const parsers = {
"json-stringify": {
...parser,
async parse(text, options) {
var _a, _b;
if (!isPackageJson(options.filepath)) {
return text;
}
text = await prettier__default["default"].format(text, { filepath: "package.json" });
if (parser.preprocess) {
text = parser.preprocess(text, options);
}
const formatOptions = {
useTabs: options.useTabs,
tabWidth: options.tabWidth,
expandUsers: (_a = options.pkgsortExpandUsers) != null ? _a : defaultOptions.expandUsers,
keyOrder: (_b = options.pkgsortKeyOrder) != null ? _b : defaultOptions.keyOrder
};
text = prettierPackageJson.format(JSON.parse(text), formatOptions);
return parser.parse(text, options);
}
}
};
exports.parsers = parsers;