deplift 1.2.4 → 1.3.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
@@ -15,10 +15,14 @@ npm install -D deplift
15
15
  ```bash
16
16
  npx deplift
17
17
 
18
+ Positionals:
19
+ pkgPath Path to package.json [string]
20
+
18
21
  Options:
19
- --major set major version caps: dep=version pairs [array] [default: []]
20
- -d, --dry-run Run without making changes [boolean] [default: false]
21
- --install Run npm install [boolean] [default: true]
22
- -v, --version Show version number [boolean]
23
- -h, --help Show help [boolean]
22
+ --major Set major version caps: dep=version pairs
23
+ [array] [default: []]
24
+ -d, --dry-run Run without making changes [boolean] [default: false]
25
+ --install Run npm install [boolean] [default: true]
26
+ -v, --version Show version number [boolean]
27
+ -h, --help Show help
24
28
  ```
@@ -62,11 +62,15 @@ const parseArgs = async () => {
62
62
  };
63
63
  try {
64
64
  pkg = JSON.parse(await promises.readFile(path.resolve(__dirname$1, '../../package.json'), 'utf8'));
65
- console.log(`[deplift] v${pkg.version}\n`);
66
65
  } catch (_unused2) {}
67
- const argv = await yargs(helpers.hideBin(process.argv)).option('major', {
66
+ const argv = await yargs(helpers.hideBin(process.argv)).command('$0 [pkgPath]', 'CLI to update deps in monorepos', yargs => {
67
+ yargs.positional('pkgPath', {
68
+ type: 'string',
69
+ describe: 'Path to package.json'
70
+ });
71
+ }).option('major', {
68
72
  type: 'array',
69
- describe: 'set major version caps: dep=version pairs',
73
+ describe: 'Set major version caps: dep=version pairs',
70
74
  default: [],
71
75
  coerce: pairs => {
72
76
  const result = {};
@@ -77,31 +81,37 @@ const parseArgs = async () => {
77
81
  }
78
82
  const key = pair.slice(0, idx);
79
83
  const value = pair.slice(idx + 1);
80
- result[key] = Number(value);
84
+ const num = Number(value);
85
+ if (isNaN(num)) throw new Error(`Invalid --major version "${value}" for "${key}", expected a number`);
86
+ result[key] = num;
81
87
  }
82
88
  return result;
83
89
  }
84
90
  }).option('dry-run', {
85
91
  type: 'boolean',
92
+ alias: 'd',
86
93
  describe: 'Run without making changes',
87
94
  default: false
88
95
  }).option('install', {
89
96
  type: 'boolean',
90
97
  describe: 'Run npm install',
91
98
  default: true
92
- }).version(pkg.version).strict().help().alias('dry-run', 'd').alias('version', 'v').alias('help', 'h').parse();
99
+ }).version(pkg.version).help().alias('v', 'version').alias('h', 'help').strict().parse();
100
+ console.log(`[deplift] v${pkg.version}\n`);
93
101
  return argv;
94
102
  };
95
103
  async function main() {
96
104
  const {
97
105
  dryRun,
98
106
  install: runInstall,
99
- major: majorCaps
107
+ major: majorCaps,
108
+ pkgPath
100
109
  } = await parseArgs();
101
110
  if (dryRun) console.log('💡 Dry run enabled — no files will be changed or installed.');
102
111
  const config = await loadConfig();
103
112
  const ignorePatterns = Array.isArray(config.ignore) ? Array.from(new Set([...defaultIgnore, ...config.ignore])) : defaultIgnore;
104
- const packageFiles = await fg.glob('**/package.json', {
113
+ const searchPath = pkgPath && (pkgPath.endsWith('/') ? pkgPath : `${pkgPath}/`);
114
+ const packageFiles = await fg.glob(`${searchPath != null ? searchPath : '**/'}package.json`, {
105
115
  ignore: ignorePatterns
106
116
  });
107
117
  if (packageFiles.length === 0) {
@@ -59,11 +59,15 @@ const parseArgs = async () => {
59
59
  };
60
60
  try {
61
61
  pkg = JSON.parse(await readFile(resolve(__dirname$1, '../../package.json'), 'utf8'));
62
- console.log(`[deplift] v${pkg.version}\n`);
63
62
  } catch (_unused2) {}
64
- const argv = await yargs(hideBin(process.argv)).option('major', {
63
+ const argv = await yargs(hideBin(process.argv)).command('$0 [pkgPath]', 'CLI to update deps in monorepos', yargs => {
64
+ yargs.positional('pkgPath', {
65
+ type: 'string',
66
+ describe: 'Path to package.json'
67
+ });
68
+ }).option('major', {
65
69
  type: 'array',
66
- describe: 'set major version caps: dep=version pairs',
70
+ describe: 'Set major version caps: dep=version pairs',
67
71
  default: [],
68
72
  coerce: pairs => {
69
73
  const result = {};
@@ -74,31 +78,37 @@ const parseArgs = async () => {
74
78
  }
75
79
  const key = pair.slice(0, idx);
76
80
  const value = pair.slice(idx + 1);
77
- result[key] = Number(value);
81
+ const num = Number(value);
82
+ if (isNaN(num)) throw new Error(`Invalid --major version "${value}" for "${key}", expected a number`);
83
+ result[key] = num;
78
84
  }
79
85
  return result;
80
86
  }
81
87
  }).option('dry-run', {
82
88
  type: 'boolean',
89
+ alias: 'd',
83
90
  describe: 'Run without making changes',
84
91
  default: false
85
92
  }).option('install', {
86
93
  type: 'boolean',
87
94
  describe: 'Run npm install',
88
95
  default: true
89
- }).version(pkg.version).strict().help().alias('dry-run', 'd').alias('version', 'v').alias('help', 'h').parse();
96
+ }).version(pkg.version).help().alias('v', 'version').alias('h', 'help').strict().parse();
97
+ console.log(`[deplift] v${pkg.version}\n`);
90
98
  return argv;
91
99
  };
92
100
  async function main() {
93
101
  const {
94
102
  dryRun,
95
103
  install: runInstall,
96
- major: majorCaps
104
+ major: majorCaps,
105
+ pkgPath
97
106
  } = await parseArgs();
98
107
  if (dryRun) console.log('💡 Dry run enabled — no files will be changed or installed.');
99
108
  const config = await loadConfig();
100
109
  const ignorePatterns = Array.isArray(config.ignore) ? Array.from(new Set([...defaultIgnore, ...config.ignore])) : defaultIgnore;
101
- const packageFiles = await fg.glob('**/package.json', {
110
+ const searchPath = pkgPath && (pkgPath.endsWith('/') ? pkgPath : `${pkgPath}/`);
111
+ const packageFiles = await fg.glob(`${searchPath != null ? searchPath : '**/'}package.json`, {
102
112
  ignore: ignorePatterns
103
113
  });
104
114
  if (packageFiles.length === 0) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deplift",
3
- "version": "1.2.4",
3
+ "version": "1.3.0",
4
4
  "description": "CLI to update deps in monorepos",
5
5
  "author": "Zheng Song",
6
6
  "license": "MIT",
@@ -40,11 +40,11 @@
40
40
  "@babel/preset-typescript": "^7.28.5",
41
41
  "@rollup/plugin-babel": "^6.1.0",
42
42
  "@rollup/plugin-node-resolve": "^16.0.3",
43
- "@types/node": "^25.3.0",
43
+ "@types/node": "^25.3.2",
44
44
  "@types/yargs": "^17.0.35",
45
45
  "npm-run-all2": "^8.0.4",
46
46
  "prettier": "^3.8.1",
47
- "rollup": "^4.58.0",
47
+ "rollup": "^4.59.0",
48
48
  "typescript": "^5.9.3"
49
49
  },
50
50
  "dependencies": {