Socket
Socket
Sign inDemoInstall

sort-package-json

Package Overview
Dependencies
Maintainers
1
Versions
97
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

sort-package-json - npm Package Compare versions

Comparing version 1.18.0 to 1.19.0

80

index.js
#!/usr/bin/env node
var sortObjectKeys = require('sort-object-keys');
var detectIndent = require('detect-indent');
const sortObjectKeys = require('sort-object-keys');
const detectIndent = require('detect-indent');
var sortOrder = [
const sortOrder = [
'name',

@@ -62,6 +62,6 @@ 'version',

'preferGlobal',
'publishConfig',
'publishConfig'
];
// See https://docs.npmjs.com/misc/scripts
var defaultNpmScripts = [
const defaultNpmScripts = [
'install',

@@ -77,9 +77,10 @@ 'pack',

'uninstall',
'version',
'version'
];
function sortPackageJson(packageJson) {
var wasString = false;
var endCharacters = '';
var indentLevel = 2;
function sortPackageJson(packageJson, options = {}) {
const determinedSortOrder = options.sortOrder || sortOrder;
let wasString = false;
let endCharacters = '';
let indentLevel = 2;
if (typeof packageJson === 'string') {

@@ -94,8 +95,11 @@ wasString = true;

var prefixedScriptRegex = /^(pre|post)(.)/;
var prefixableScripts = defaultNpmScripts.slice();
const prefixedScriptRegex = /^(pre|post)(.)/;
const prefixableScripts = defaultNpmScripts.slice();
if (typeof packageJson.scripts === 'object') {
Object.keys(packageJson.scripts).forEach(function (script) {
var prefixOmitted = script.replace(prefixedScriptRegex, '$2');
if (packageJson.scripts[prefixOmitted] && prefixableScripts.indexOf(prefixOmitted) < 0) {
Object.keys(packageJson.scripts).forEach(script => {
const prefixOmitted = script.replace(prefixedScriptRegex, '$2');
if (
packageJson.scripts[prefixOmitted] &&
!prefixableScripts.includes(prefixOmitted)
) {
prefixableScripts.push(prefixOmitted);

@@ -119,4 +123,4 @@ }

function toSortKey(script) {
var prefixOmitted = script.replace(prefixedScriptRegex, '$2');
if (prefixableScripts.indexOf(prefixOmitted) >= 0) {
const prefixOmitted = script.replace(prefixedScriptRegex, '$2');
if (prefixableScripts.includes(prefixOmitted)) {
return prefixOmitted;

@@ -134,8 +138,8 @@ }

if (a === b) return 0;
var aScript = toSortKey(a);
var bScript = toSortKey(b);
const aScript = toSortKey(a);
const bScript = toSortKey(b);
if (aScript === bScript) {
// pre* is always smaller; post* is always bigger
// Covers: pre* vs. *; pre* vs. post*; * vs. post*
if (a === 'pre' + aScript || b === 'post' + bScript) return -1;
if (a === `pre${aScript}` || b === `post${bScript}`) return -1;
// The rest is bigger: * vs. *pre; *post vs. *pre; *post vs. *

@@ -147,15 +151,13 @@ return 1;

function array_unique(array) {
return array.filter(function (el, index, arr) {
return index == arr.indexOf(el);
});
return array.filter((el, index, arr) => index == arr.indexOf(el));
}
sortSubKey('keywords', null, true);
sortSubKey('homepage');
sortSubKey('bugs', [ 'url', 'email' ]);
sortSubKey('license', [ 'type', 'url' ]);
sortSubKey('author', [ 'name', 'email', 'url' ]);
sortSubKey('bugs', ['url', 'email']);
sortSubKey('license', ['type', 'url']);
sortSubKey('author', ['name', 'email', 'url']);
sortSubKey('bin');
sortSubKey('man');
sortSubKey('directories', [ 'lib', 'bin', 'man', 'doc', 'example' ]);
sortSubKey('repository', [ 'type', 'url' ]);
sortSubKey('directories', ['lib', 'bin', 'man', 'doc', 'example']);
sortSubKey('repository', ['type', 'url']);
sortSubKey('scripts', compareScriptKeys);

@@ -187,4 +189,6 @@ sortSubKey('betterScripts', compareScriptKeys);

sortSubKey('publishConfig');
packageJson = sortObjectKeys(packageJson, sortOrder);
return wasString ? JSON.stringify(packageJson, null, indentLevel) + endCharacters : packageJson;
packageJson = sortObjectKeys(packageJson, determinedSortOrder);
return wasString
? JSON.stringify(packageJson, null, indentLevel) + endCharacters
: packageJson;
}

@@ -196,14 +200,16 @@ module.exports = sortPackageJson;

if (require.main === module) {
var fs = require('fs');
const fs = require('fs');
var filesToProcess = process.argv[2] ? process.argv.slice(2) : [process.cwd() + '/package.json'];
const filesToProcess = process.argv[2]
? process.argv.slice(2)
: [`${process.cwd()}/package.json`];
filesToProcess.forEach(function (filePath) {
var packageJson = fs.readFileSync(filePath, 'utf8');
var sorted = sortPackageJson(packageJson);
filesToProcess.forEach(filePath => {
const packageJson = fs.readFileSync(filePath, 'utf8');
const sorted = sortPackageJson(packageJson);
if (sorted !== packageJson) {
fs.writeFileSync(filePath, sorted, 'utf8');
console.log(filePath + ' is sorted!');
fs.writeFileSync(filePath, sorted, 'utf8');
console.log(`${filePath} is sorted!`);
}
});
}
{
"name": "sort-package-json",
"version": "1.18.0",
"version": "1.19.0",
"description": "Sort an Object or package.json based on the well-known package.json keys",

@@ -5,0 +5,0 @@ "keywords": [

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc