UNPKG

write-package

Version:
48 lines (37 loc) 1.09 kB
import path from 'node:path'; import sortKeys from 'sort-keys'; export const dependencyKeys = new Set([ 'dependencies', 'devDependencies', 'optionalDependencies', 'peerDependencies', ]); export const hasMultipleDependencyTypes = dependencies => Object.keys(dependencies).some(key => dependencyKeys.has(key)); export function normalize(packageJson) { const result = {}; for (const key of Object.keys(packageJson)) { if (!dependencyKeys.has(key)) { result[key] = packageJson[key]; } else if (Object.keys(packageJson[key]).length > 0) { result[key] = sortKeys(packageJson[key]); } } return result; } export function sanitize(filePath, data, options, {sanitizeData = true} = {}) { if (typeof filePath !== 'string') { options = data; data = filePath; filePath = '.'; } options = { normalize: true, ...options, detectIndent: true, }; filePath = path.basename(filePath) === 'package.json' ? filePath : path.join(filePath, 'package.json'); if (options.normalize && sanitizeData) { data = normalize(data); } return {filePath, data, options}; }