syncpack 7.2.2 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -38,7 +38,8 @@ See [`versionGroups`](#versiongroups) if you have advanced requirements.
38
38
  -d, --dev include devDependencies
39
39
  -P, --peer include peerDependencies
40
40
  -R, --resolutions include resolutions (yarn)
41
- -o, --overrides include overrides (pnpm)
41
+ -o, --overrides include overrides (npm)
42
+ -O, --pnpmOverrides include overrides (pnpm)
42
43
  -w, --workspace include locally developed package versions
43
44
  -i, --indent [value] override indentation. defaults to " "
44
45
  -c, --config <path> path to a syncpack config file
@@ -120,7 +121,8 @@ See [`semverGroups`](#semvergroups) if you have advanced requirements.
120
121
  -d, --dev include devDependencies
121
122
  -P, --peer include peerDependencies
122
123
  -R, --resolutions include resolutions (yarn)
123
- -o, --overrides include overrides (pnpm)
124
+ -o, --overrides include overrides (npm)
125
+ -O, --pnpmOverrides include overrides (pnpm)
124
126
  -f, --filter [pattern] only include dependencies whose name matches this regex
125
127
  -r, --semver-range <range> see supported ranges below. defaults to ""
126
128
  -c, --config <path> path to a syncpack config file
@@ -165,7 +167,8 @@ List all dependencies required by your packages.
165
167
  -d, --dev include devDependencies
166
168
  -P, --peer include peerDependencies
167
169
  -R, --resolutions include resolutions (yarn)
168
- -o, --overrides include overrides (pnpm)
170
+ -o, --overrides include overrides (npm)
171
+ -O, --pnpmOverrides include overrides (pnpm)
169
172
  -f, --filter [pattern] only include dependencies whose name matches this regex
170
173
  -c, --config <path> path to a syncpack config file
171
174
  -w, --workspace include locally developed package versions
@@ -210,7 +213,8 @@ See [`versionGroups`](#versiongroups) if you have advanced requirements.
210
213
  -d, --dev include devDependencies
211
214
  -P, --peer include peerDependencies
212
215
  -R, --resolutions include resolutions (yarn)
213
- -o, --overrides include overrides (pnpm)
216
+ -o, --overrides include overrides (npm)
217
+ -O, --pnpmOverrides include overrides (pnpm)
214
218
  -f, --filter [pattern] only include dependencies whose name matches this regex
215
219
  -c, --config <path> path to a syncpack config file
216
220
  -w, --workspace include locally developed package versions
@@ -257,7 +261,8 @@ See [`semverGroups`](#semvergroups) if you have advanced requirements.
257
261
  -d, --dev include devDependencies
258
262
  -P, --peer include peerDependencies
259
263
  -R, --resolutions include resolutions (yarn)
260
- -o, --overrides include overrides (pnpm)
264
+ -o, --overrides include overrides (npm)
265
+ -O, --pnpmOverrides include overrides (pnpm)
261
266
  -w, --workspace include locally developed package versions
262
267
  -i, --indent [value] override indentation. defaults to " "
263
268
  -r, --semver-range <range> see supported ranges below. defaults to ""
@@ -315,6 +320,7 @@ configuration file (if present), you can use the `--config` option.
315
320
  "indent": " ",
316
321
  "overrides": true,
317
322
  "peer": true,
323
+ "pnpmOverrides": true,
318
324
  "prod": true,
319
325
  "resolutions": true,
320
326
  "workspace": true,
@@ -335,17 +341,17 @@ configuration file (if present), you can use the `--config` option.
335
341
  }
336
342
  ```
337
343
 
338
- ### `dev`, `peer`, `prod`, `resolutions`, `overrides`, and `workspace`
344
+ ### `dev`, `peer`, `prod`, `resolutions`, `overrides`, `pnpmOverrides`, and `workspace`
339
345
 
340
346
  Whether to search within `devDependencies`, `peerDependencies`, `dependencies`,
341
- `resolutions` (Yarn), `overrides` (Pnpm), and the `version` property of the
342
- package.json files of your own packages developed within your `workspace`
343
- respectively.
347
+ `resolutions` (Yarn), `overrides` (npm), `pnpmOverrides` (pnpm), and the
348
+ `version` property of the package.json files of your own packages developed
349
+ within your `workspace` respectively.
344
350
 
345
351
  All of these locations are searched by default but they can be disabled
346
352
  individually in your config file. If any are set via the command line options
347
- `--dev`, `--peer`, `--prod`, `--resolutions`, `--overrides`, or `--workspace`
348
- then only the options you provide will be searched.
353
+ `--dev`, `--peer`, `--prod`, `--resolutions`, `--overrides`, `--pnpmOverrides`,
354
+ or `--workspace` then only the options you provide will be searched.
349
355
 
350
356
  ### `filter`
351
357
 
@@ -33,7 +33,12 @@ function fixMismatches(input, disk) {
33
33
  var dependencyType = _a.dependencyType, version = _a.version, wrapper = _a.wrapper;
34
34
  var root = wrapper.contents;
35
35
  if (version !== nextVersion_1) {
36
- root[dependencyType][name] = nextVersion_1;
36
+ if (dependencyType === 'pnpmOverrides') {
37
+ root.pnpm.overrides[name] = nextVersion_1;
38
+ }
39
+ else {
40
+ root[dependencyType][name] = nextVersion_1;
41
+ }
37
42
  }
38
43
  });
39
44
  }
@@ -62,6 +62,7 @@ commander_1.program.on('--help', function () {
62
62
  indent: commander_1.program.opts().indent,
63
63
  overrides: commander_1.program.opts().overrides,
64
64
  peer: commander_1.program.opts().peer,
65
+ pnpmOverrides: commander_1.program.opts().pnpmOverrides,
65
66
  prod: commander_1.program.opts().prod,
66
67
  resolutions: commander_1.program.opts().resolutions,
67
68
  source: commander_1.program.opts().source,
@@ -61,6 +61,7 @@ commander_1.program.on('--help', function () {
61
61
  filter: commander_1.program.opts().filter,
62
62
  overrides: commander_1.program.opts().overrides,
63
63
  peer: commander_1.program.opts().peer,
64
+ pnpmOverrides: commander_1.program.opts().pnpmOverrides,
64
65
  prod: commander_1.program.opts().prod,
65
66
  resolutions: commander_1.program.opts().resolutions,
66
67
  semverRange: commander_1.program.opts().semverRange,
@@ -60,6 +60,7 @@ commander_1.program.on('--help', function () {
60
60
  filter: commander_1.program.opts().filter,
61
61
  overrides: commander_1.program.opts().overrides,
62
62
  peer: commander_1.program.opts().peer,
63
+ pnpmOverrides: commander_1.program.opts().pnpmOverrides,
63
64
  prod: commander_1.program.opts().prod,
64
65
  resolutions: commander_1.program.opts().resolutions,
65
66
  source: commander_1.program.opts().source,
@@ -60,6 +60,7 @@ commander_1.program.on('--help', function () {
60
60
  filter: commander_1.program.opts().filter,
61
61
  overrides: commander_1.program.opts().overrides,
62
62
  peer: commander_1.program.opts().peer,
63
+ pnpmOverrides: commander_1.program.opts().pnpmOverrides,
63
64
  prod: commander_1.program.opts().prod,
64
65
  resolutions: commander_1.program.opts().resolutions,
65
66
  source: commander_1.program.opts().source,
@@ -63,6 +63,7 @@ commander_1.program.on('--help', function () {
63
63
  indent: commander_1.program.opts().indent,
64
64
  overrides: commander_1.program.opts().overrides,
65
65
  peer: commander_1.program.opts().peer,
66
+ pnpmOverrides: commander_1.program.opts().pnpmOverrides,
66
67
  prod: commander_1.program.opts().prod,
67
68
  resolutions: commander_1.program.opts().resolutions,
68
69
  semverRange: commander_1.program.opts().semverRange,
@@ -10,7 +10,13 @@ var setSemverRanges = function (input, disk) {
10
10
  mismatches.forEach(function (_a) {
11
11
  var dependencyType = _a.dependencyType, name = _a.name, version = _a.version, wrapper = _a.wrapper;
12
12
  var root = wrapper.contents;
13
- root[dependencyType][name] = (0, set_semver_range_1.setSemverRange)(semverGroup.range, version);
13
+ var nextVersion = (0, set_semver_range_1.setSemverRange)(semverGroup.range, version);
14
+ if (dependencyType === 'pnpmOverrides') {
15
+ root.pnpm.overrides[name] = nextVersion;
16
+ }
17
+ else {
18
+ root[dependencyType][name] = nextVersion;
19
+ }
14
20
  });
15
21
  });
16
22
  input.wrappers.forEach(function (wrapper) {
@@ -1,4 +1,4 @@
1
- export declare type DependencyType = 'dependencies' | 'devDependencies' | 'overrides' | 'peerDependencies' | 'resolutions' | 'workspace';
1
+ export declare type DependencyType = 'dependencies' | 'devDependencies' | 'overrides' | 'peerDependencies' | 'pnpmOverrides' | 'resolutions' | 'workspace';
2
2
  export declare type DependencyOption = Pick<SyncpackConfig, 'dev' | 'workspace' | 'overrides' | 'peer' | 'prod' | 'resolutions'>;
3
3
  export declare type ValidRange = typeof RANGE_ANY | typeof RANGE_EXACT | typeof RANGE_GT | typeof RANGE_GTE | typeof RANGE_LOOSE | typeof RANGE_LT | typeof RANGE_LTE | typeof RANGE_MINOR | typeof RANGE_PATCH;
4
4
  export interface SemverGroup {
@@ -63,13 +63,17 @@ export declare type SyncpackConfig = Readonly<{
63
63
  */
64
64
  indent: string;
65
65
  /**
66
- * whether to search within pnpm overrides
66
+ * whether to search within npm overrides
67
67
  */
68
68
  overrides: boolean;
69
69
  /**
70
70
  * whether to search within peerDependencies
71
71
  */
72
72
  peer: boolean;
73
+ /**
74
+ * whether to search within pnpm overrides
75
+ */
76
+ pnpmOverrides: boolean;
73
77
  /**
74
78
  * whether to search within dependencies
75
79
  */
package/dist/constants.js CHANGED
@@ -7,6 +7,7 @@ exports.DEPENDENCY_TYPES = [
7
7
  'devDependencies',
8
8
  'overrides',
9
9
  'peerDependencies',
10
+ 'pnpmOverrides',
10
11
  'resolutions',
11
12
  'workspace',
12
13
  ];
@@ -40,6 +41,7 @@ exports.DEFAULT_CONFIG = {
40
41
  indent: ' ',
41
42
  overrides: true,
42
43
  peer: true,
44
+ pnpmOverrides: true,
43
45
  prod: true,
44
46
  resolutions: true,
45
47
  workspace: true,
@@ -19,6 +19,7 @@ var getConfig = function (disk, program) {
19
19
  (0, expect_more_1.isBoolean)(program.workspace) ||
20
20
  (0, expect_more_1.isBoolean)(program.overrides) ||
21
21
  (0, expect_more_1.isBoolean)(program.peer) ||
22
+ (0, expect_more_1.isBoolean)(program.pnpmOverrides) ||
22
23
  (0, expect_more_1.isBoolean)(program.prod) ||
23
24
  (0, expect_more_1.isBoolean)(program.resolutions);
24
25
  var dev = hasTypeOverride
@@ -33,18 +34,28 @@ var getConfig = function (disk, program) {
33
34
  var peer = hasTypeOverride
34
35
  ? Boolean(program.peer)
35
36
  : getOption('peer', expect_more_1.isBoolean);
37
+ var pnpmOverrides = hasTypeOverride
38
+ ? Boolean(program.pnpmOverrides)
39
+ : getOption('pnpmOverrides', expect_more_1.isBoolean);
36
40
  var prod = hasTypeOverride
37
41
  ? Boolean(program.prod)
38
42
  : getOption('prod', expect_more_1.isBoolean);
39
43
  var resolutions = hasTypeOverride
40
44
  ? Boolean(program.resolutions)
41
45
  : getOption('resolutions', expect_more_1.isBoolean);
42
- var dependencyTypes = dev || workspace || overrides || peer || prod || resolutions
46
+ var dependencyTypes = dev ||
47
+ overrides ||
48
+ peer ||
49
+ pnpmOverrides ||
50
+ prod ||
51
+ resolutions ||
52
+ workspace
43
53
  ? constants_1.DEPENDENCY_TYPES.filter(function (type) {
44
- return (type === 'devDependencies' && dev) ||
54
+ return (type === 'dependencies' && prod) ||
55
+ (type === 'devDependencies' && dev) ||
45
56
  (type === 'overrides' && overrides) ||
46
57
  (type === 'peerDependencies' && peer) ||
47
- (type === 'dependencies' && prod) ||
58
+ (type === 'pnpmOverrides' && pnpmOverrides) ||
48
59
  (type === 'resolutions' && resolutions);
49
60
  })
50
61
  : constants_1.DEPENDENCY_TYPES;
@@ -81,6 +92,7 @@ var getConfig = function (disk, program) {
81
92
  workspace: workspace,
82
93
  overrides: overrides,
83
94
  peer: peer,
95
+ pnpmOverrides: pnpmOverrides,
84
96
  prod: prod,
85
97
  resolutions: resolutions,
86
98
  semverGroups: semverGroups,
@@ -45,8 +45,8 @@ exports.getInstances = void 0;
45
45
  var expect_more_1 = require("expect-more");
46
46
  var minimatch_1 = __importDefault(require("minimatch"));
47
47
  function getInstances(options, wrappers) {
48
- var e_1, _a, e_2, _b, e_3, _c;
49
- var _d, _e, _f;
48
+ var e_1, _a, e_2, _b, e_3, _c, e_4, _d;
49
+ var _e, _f, _g, _h, _j;
50
50
  var allInstances = {
51
51
  all: [],
52
52
  semverGroups: options.semverGroups.map(withInstances),
@@ -57,40 +57,22 @@ function getInstances(options, wrappers) {
57
57
  var wrapper = wrappers_1_1.value;
58
58
  var pkgName = wrapper.contents.name || 'packagewithoutaname';
59
59
  try {
60
- for (var _g = (e_2 = void 0, __values(options.dependencyTypes)), _h = _g.next(); !_h.done; _h = _g.next()) {
61
- var dependencyType = _h.value;
60
+ for (var _k = (e_2 = void 0, __values(options.dependencyTypes)), _l = _k.next(); !_l.done; _l = _k.next()) {
61
+ var dependencyType = _l.value;
62
62
  if (dependencyType === 'workspace') {
63
- var name = (_d = wrapper.contents) === null || _d === void 0 ? void 0 : _d.name;
64
- var version = (_e = wrapper.contents) === null || _e === void 0 ? void 0 : _e.version;
65
- if (!(0, expect_more_1.isNonEmptyString)(name))
66
- continue;
67
- if (name.search(new RegExp(options.filter)) === -1)
68
- continue;
69
- if (!(0, expect_more_1.isNonEmptyString)(version))
70
- continue;
71
- var instance = { dependencyType: dependencyType, name: name, version: version, wrapper: wrapper };
72
- allInstances.all.push(instance);
73
- groupInstancesBy('semverGroups', dependencyType, pkgName, instance);
74
- groupInstancesBy('versionGroups', dependencyType, pkgName, instance);
63
+ var name = (_e = wrapper.contents) === null || _e === void 0 ? void 0 : _e.name;
64
+ var version = (_f = wrapper.contents) === null || _f === void 0 ? void 0 : _f.version;
65
+ addInstance(wrapper, dependencyType, pkgName, name, version);
75
66
  }
76
- else {
77
- var versionsByName = (_f = wrapper.contents) === null || _f === void 0 ? void 0 : _f[dependencyType];
67
+ else if (dependencyType === 'pnpmOverrides') {
68
+ var versionsByName = (_h = (_g = wrapper.contents) === null || _g === void 0 ? void 0 : _g.pnpm) === null || _h === void 0 ? void 0 : _h.overrides;
78
69
  if (!(0, expect_more_1.isObject)(versionsByName))
79
70
  continue;
80
71
  var pkgs = Object.entries(versionsByName);
81
72
  try {
82
73
  for (var pkgs_1 = (e_3 = void 0, __values(pkgs)), pkgs_1_1 = pkgs_1.next(); !pkgs_1_1.done; pkgs_1_1 = pkgs_1.next()) {
83
- var _j = __read(pkgs_1_1.value, 2), name = _j[0], version = _j[1];
84
- if (!(0, expect_more_1.isNonEmptyString)(name))
85
- continue;
86
- if (name.search(new RegExp(options.filter)) === -1)
87
- continue;
88
- if (!(0, expect_more_1.isNonEmptyString)(version))
89
- continue;
90
- var instance = { dependencyType: dependencyType, name: name, version: version, wrapper: wrapper };
91
- allInstances.all.push(instance);
92
- groupInstancesBy('semverGroups', dependencyType, pkgName, instance);
93
- groupInstancesBy('versionGroups', dependencyType, pkgName, instance);
74
+ var _m = __read(pkgs_1_1.value, 2), name = _m[0], version = _m[1];
75
+ addInstance(wrapper, dependencyType, pkgName, name, version);
94
76
  }
95
77
  }
96
78
  catch (e_3_1) { e_3 = { error: e_3_1 }; }
@@ -101,12 +83,31 @@ function getInstances(options, wrappers) {
101
83
  finally { if (e_3) throw e_3.error; }
102
84
  }
103
85
  }
86
+ else {
87
+ var versionsByName = (_j = wrapper.contents) === null || _j === void 0 ? void 0 : _j[dependencyType];
88
+ if (!(0, expect_more_1.isObject)(versionsByName))
89
+ continue;
90
+ var pkgs = Object.entries(versionsByName);
91
+ try {
92
+ for (var pkgs_2 = (e_4 = void 0, __values(pkgs)), pkgs_2_1 = pkgs_2.next(); !pkgs_2_1.done; pkgs_2_1 = pkgs_2.next()) {
93
+ var _o = __read(pkgs_2_1.value, 2), name = _o[0], version = _o[1];
94
+ addInstance(wrapper, dependencyType, pkgName, name, version);
95
+ }
96
+ }
97
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
98
+ finally {
99
+ try {
100
+ if (pkgs_2_1 && !pkgs_2_1.done && (_d = pkgs_2["return"])) _d.call(pkgs_2);
101
+ }
102
+ finally { if (e_4) throw e_4.error; }
103
+ }
104
+ }
104
105
  }
105
106
  }
106
107
  catch (e_2_1) { e_2 = { error: e_2_1 }; }
107
108
  finally {
108
109
  try {
109
- if (_h && !_h.done && (_b = _g["return"])) _b.call(_g);
110
+ if (_l && !_l.done && (_b = _k["return"])) _b.call(_k);
110
111
  }
111
112
  finally { if (e_2) throw e_2.error; }
112
113
  }
@@ -120,6 +121,18 @@ function getInstances(options, wrappers) {
120
121
  finally { if (e_1) throw e_1.error; }
121
122
  }
122
123
  return allInstances;
124
+ function addInstance(wrapper, dependencyType, pkgName, name, version) {
125
+ if (!(0, expect_more_1.isNonEmptyString)(name))
126
+ return;
127
+ if (name.search(new RegExp(options.filter)) === -1)
128
+ return;
129
+ if (!(0, expect_more_1.isNonEmptyString)(version))
130
+ return;
131
+ var instance = { dependencyType: dependencyType, name: name, version: version, wrapper: wrapper };
132
+ allInstances.all.push(instance);
133
+ groupInstancesBy('semverGroups', dependencyType, pkgName, instance);
134
+ groupInstancesBy('versionGroups', dependencyType, pkgName, instance);
135
+ }
123
136
  function withInstances(group) {
124
137
  var instances = [];
125
138
  var instancesByName = {};
@@ -10,6 +10,9 @@ export interface Source {
10
10
  keywords?: string[];
11
11
  name?: string;
12
12
  peerDependencies?: Record<string, string>;
13
+ pnpm?: {
14
+ overrides?: Record<string, string>;
15
+ };
13
16
  repository?: {
14
17
  type: string;
15
18
  url: string;
@@ -18,7 +21,7 @@ export interface Source {
18
21
  scripts?: Record<string, string>;
19
22
  version?: string;
20
23
  workspaces?: Record<string, string[]> | string[];
21
- [otherProps: string]: Record<string, string | string[]> | string | string[] | undefined;
24
+ [otherProps: string]: Record<string, string | string[] | Record<string, string | string[]>> | string | string[] | undefined;
22
25
  }
23
26
  export interface SourceWrapper {
24
27
  /** the absolute path on disk to this package.json file */
package/dist/option.d.ts CHANGED
@@ -6,6 +6,7 @@ export declare const option: {
6
6
  readonly indent: readonly ["-i, --indent [value]", `override indentation. defaults to "${string}"`];
7
7
  readonly overrides: readonly ["-o, --overrides", string];
8
8
  readonly peer: readonly ["-P, --peer", string];
9
+ readonly pnpmOverrides: readonly ["-O, --overrides", string];
9
10
  readonly prod: readonly ["-p, --prod", string];
10
11
  readonly resolutions: readonly ["-R, --resolutions", string];
11
12
  readonly semverRange: readonly ["-r, --semver-range <range>", "see supported ranges below. defaults to \"\"" | "see supported ranges below. defaults to \"*\"" | "see supported ranges below. defaults to \">\"" | "see supported ranges below. defaults to \">=\"" | "see supported ranges below. defaults to \".x\"" | "see supported ranges below. defaults to \"<\"" | "see supported ranges below. defaults to \"<=\"" | "see supported ranges below. defaults to \"^\"" | "see supported ranges below. defaults to \"~\""];
package/dist/option.js CHANGED
@@ -22,12 +22,13 @@ exports.option = {
22
22
  '-i, --indent [value]',
23
23
  "override indentation. defaults to \"".concat(constants_1.DEFAULT_CONFIG.indent, "\""),
24
24
  ],
25
- overrides: ['-o, --overrides', (0, chalk_1["default"])(templateObject_3 || (templateObject_3 = __makeTemplateObject(["include {yellow overrides} (pnpm)"], ["include {yellow overrides} (pnpm)"])))],
25
+ overrides: ['-o, --overrides', (0, chalk_1["default"])(templateObject_3 || (templateObject_3 = __makeTemplateObject(["include {yellow overrides} (npm)"], ["include {yellow overrides} (npm)"])))],
26
26
  peer: ['-P, --peer', (0, chalk_1["default"])(templateObject_4 || (templateObject_4 = __makeTemplateObject(["include {yellow peerDependencies}"], ["include {yellow peerDependencies}"])))],
27
- prod: ['-p, --prod', (0, chalk_1["default"])(templateObject_5 || (templateObject_5 = __makeTemplateObject(["include {yellow dependencies}"], ["include {yellow dependencies}"])))],
27
+ pnpmOverrides: ['-O, --overrides', (0, chalk_1["default"])(templateObject_5 || (templateObject_5 = __makeTemplateObject(["include {yellow overrides} (pnpm)"], ["include {yellow overrides} (pnpm)"])))],
28
+ prod: ['-p, --prod', (0, chalk_1["default"])(templateObject_6 || (templateObject_6 = __makeTemplateObject(["include {yellow dependencies}"], ["include {yellow dependencies}"])))],
28
29
  resolutions: [
29
30
  '-R, --resolutions',
30
- (0, chalk_1["default"])(templateObject_6 || (templateObject_6 = __makeTemplateObject(["include {yellow resolutions} (yarn)"], ["include {yellow resolutions} (yarn)"]))),
31
+ (0, chalk_1["default"])(templateObject_7 || (templateObject_7 = __makeTemplateObject(["include {yellow resolutions} (yarn)"], ["include {yellow resolutions} (yarn)"]))),
31
32
  ],
32
33
  semverRange: [
33
34
  '-r, --semver-range <range>',
@@ -41,4 +42,4 @@ exports.option = {
41
42
  ],
42
43
  workspace: ['-w, --workspace', 'include locally developed package versions']
43
44
  };
44
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6;
45
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "syncpack",
3
3
  "description": "Manage multiple package.json files, such as in Lerna Monorepos and Yarn/Pnpm Workspaces",
4
- "version": "7.2.2",
4
+ "version": "8.0.0",
5
5
  "author": "Jamie Mason <jamie@foldleft.io> (https://github.com/JamieMason)",
6
6
  "bin": {
7
7
  "syncpack": "dist/bin.js",