pob 37.0.0 → 38.1.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.
@@ -288,7 +288,6 @@ export default class PobAppGenerator extends Generator {
288
288
  documentation: false,
289
289
  codecov: this.appConfig.codecov,
290
290
  ci: this.options.ci,
291
- ciPushWorkflow: this.options.ci,
292
291
  packageManager: this.options.packageManager,
293
292
  isApp: true,
294
293
  splitCIJobs: false,
@@ -332,13 +332,13 @@ export default class CommonBabelGenerator extends Generator {
332
332
  }
333
333
  const isLibraryRollupPlugin = pkg.name.includes("rollup-plugin");
334
334
 
335
- packageUtils.addOrRemoveDevDependencies(
336
- pkg,
337
- (useBabel && pkg.pob.jsx) ||
338
- (pkg.devDependencies?.["@babel/preset-react"] &&
339
- (isLibraryRollupPlugin || pkg.name === "alouette-icons")),
340
- ["@babel/preset-react"],
341
- );
335
+ // packageUtils.addOrRemoveDevDependencies(
336
+ // pkg,
337
+ // (useBabel && pkg.pob.jsx) ||
338
+ // (pkg.devDependencies?.["@babel/preset-react"] &&
339
+ // (isLibraryRollupPlugin || pkg.name === "alouette-icons")),
340
+ // ["@babel/preset-react"],
341
+ // );
342
342
 
343
343
  packageUtils.removeDevDependencies(pkg, [
344
344
  "babel-preset-env", // now @babel/preset-env
@@ -316,7 +316,12 @@ export default class CommonFormatLintGenerator extends Generator {
316
316
  !pkg.name.startsWith("@pob/eslint-config") &&
317
317
  pkg.name !== "@pob/use-eslint-plugin"
318
318
  ) {
319
- packageUtils.addDevDependencies(pkg, ["@pob/eslint-config"]);
319
+ // @pob/eslint-config is provided through @pob/root (which re-exports it
320
+ // via "@pob/root/eslint-config"), so projects only need @pob/root.
321
+ if (pkg.name !== "@pob/root") {
322
+ packageUtils.addDevDependencies(pkg, ["@pob/root"]);
323
+ }
324
+ packageUtils.removeDevDependencies(pkg, ["@pob/eslint-config"]);
320
325
  packageUtils.addOrRemoveDevDependencies(
321
326
  pkg,
322
327
  shouldHavePluginsDependencies,
@@ -373,7 +378,7 @@ export default class CommonFormatLintGenerator extends Generator {
373
378
 
374
379
  return {
375
380
  imports: [
376
- 'import pobConfig from "@pob/eslint-config"',
381
+ 'import pobConfig from "@pob/root/eslint-config"',
377
382
  useTypescript &&
378
383
  hasReact &&
379
384
  'import pobTypescriptConfigReact from "@pob/eslint-config-typescript-react"',
@@ -385,25 +390,23 @@ export default class CommonFormatLintGenerator extends Generator {
385
390
  if (!useTypescript) {
386
391
  return [
387
392
  useNode
388
- ? `...pobConfig(import.meta.url).configs.node${pkg.type === "commonjs" ? "Commonjs" : "Module"}`
389
- : `...pobConfig(import.meta.url).configs.base${pkg.type === "commonjs" ? "Commonjs" : "Module"}`,
393
+ ? `...pobConfig.configs.node${pkg.type === "commonjs" ? "Commonjs" : "Module"}`
394
+ : `...pobConfig.configs.base${pkg.type === "commonjs" ? "Commonjs" : "Module"}`,
390
395
  ];
391
396
  }
392
397
  if (!hasReact) {
393
398
  return [
394
399
  useNode
395
- ? "...pobConfig(import.meta.url).configs.node"
396
- : "...pobConfig(import.meta.url).configs.base",
400
+ ? "...pobConfig.configs.node"
401
+ : "...pobConfig.configs.base",
397
402
  ];
398
403
  }
399
404
 
400
405
  return [
401
- useNode
402
- ? "...pobConfig(import.meta.url).configs.node"
403
- : "...pobConfig(import.meta.url).configs.base",
404
- this.options.isApp && "...pobConfig(import.meta.url).configs.app",
406
+ useNode ? "...pobConfig.configs.node" : "...pobConfig.configs.base",
407
+ this.options.isApp && "...pobConfig.configs.app",
405
408
  pkg.dependencies?.["react-native-web"] &&
406
- '...pobTypescriptConfigReact(import.meta.url).configs["react-native-web"]',
409
+ '...pobTypescriptConfigReact.configs["react-native-web"]',
407
410
  ];
408
411
  })().filter(Boolean),
409
412
  };
@@ -412,7 +415,7 @@ export default class CommonFormatLintGenerator extends Generator {
412
415
  const isMonorepoRoot =
413
416
  this.options.monorepo || Boolean(inMonorepo && inMonorepo.root);
414
417
  if (isMonorepoRoot && useTypescript) {
415
- flatCascade.push("...pobConfig(import.meta.url).configs.monorepo");
418
+ flatCascade.push("...pobConfig.configs.monorepo");
416
419
  }
417
420
 
418
421
  const eslintrcBadPath = this.destinationPath(".eslintrc");
@@ -39,10 +39,10 @@ export default class CommonTestingGenerator extends Generator {
39
39
  description: "ci",
40
40
  });
41
41
 
42
- this.option("ciPushWorkflow", {
42
+ this.option("disablePushWorkflow", {
43
43
  type: Boolean,
44
44
  required: true,
45
- description: "push workflow enabled",
45
+ description: "disable push workflow",
46
46
  });
47
47
 
48
48
  this.option("typescript", {
@@ -130,7 +130,7 @@ export default class CommonTestingGenerator extends Generator {
130
130
  testing: this.options.enable,
131
131
  testRunner: this.options.runner,
132
132
  e2eTesting: this.options.e2eTesting,
133
- push: this.options.pushWorkflow,
133
+ disablePushWorkflow: this.options.disablePushWorkflow,
134
134
  build: this.options.build,
135
135
  typescript: this.options.typescript,
136
136
  documentation: this.options.documentation,
@@ -20,10 +20,10 @@ export default class CoreCIGenerator extends Generator {
20
20
  description: "enable ci",
21
21
  });
22
22
 
23
- this.option("push", {
23
+ this.option("disablePushWorkflow", {
24
24
  type: Boolean,
25
25
  default: true,
26
- description: "enable push workflow",
26
+ description: "disable push workflow",
27
27
  });
28
28
 
29
29
  this.option("build", {
@@ -119,7 +119,7 @@ export default class CoreCIGenerator extends Generator {
119
119
  this.options.testing && !!pkg.scripts && !!pkg.scripts.test;
120
120
  const build = this.options.build;
121
121
 
122
- if (this.options.push) {
122
+ if (!this.options.disablePushWorkflow) {
123
123
  await copyAndFormatTpl(
124
124
  this.fs,
125
125
  this.templatePath(
@@ -151,8 +151,20 @@ export default class CoreCIGenerator extends Generator {
151
151
  inMonorepo.pobConfig?.project?.type === "lib",
152
152
  nodeLatestMajorVersion: latestLTS,
153
153
  nodeMaintenanceMajorVersion: maintenanceLTS,
154
- packageManagerRun,
155
- packageManagerExec,
154
+ packageManagerRun: (script, packagePath) => {
155
+ return packageManagerRun(
156
+ this.options.packageManager,
157
+ script,
158
+ packagePath,
159
+ );
160
+ },
161
+ packageManagerExec: (command, packagePath) => {
162
+ return packageManagerExec(
163
+ this.options.packageManager,
164
+ command,
165
+ packagePath,
166
+ );
167
+ },
156
168
  },
157
169
  );
158
170
  ciContexts.push(
@@ -188,6 +200,13 @@ export default class CoreCIGenerator extends Generator {
188
200
  this.destinationPath(".github/workflows/gh-pages.yml"),
189
201
  {
190
202
  packageManager: this.options.packageManager,
203
+ packageManagerRun: (script, packagePath) => {
204
+ return packageManagerRun(
205
+ this.options.packageManager,
206
+ "docs:build",
207
+ packagePath,
208
+ );
209
+ },
191
210
  disableYarnGitCache: this.options.disableYarnGitCache,
192
211
  testing: this.options.testing,
193
212
  testRunner: this.options.testRunner,
@@ -58,11 +58,11 @@ jobs:
58
58
  <% if (testRunner === 'node') { -%>
59
59
 
60
60
  - name: Generate Coverage
61
- run: NODE_V8_COVERAGE=./docs/coverage <%= packageManager %> run test:coverage:generate
61
+ run: NODE_V8_COVERAGE=./docs/coverage <%= packageManagerRun("test:coverage:generate") %>
62
62
  <% } else {-%>
63
63
 
64
64
  - name: Generate Coverage
65
- run: <%= packageManager %> run test:coverage:generate
65
+ run: <%= packageManagerRun("test:coverage:generate") %>
66
66
  <% } -%>
67
67
  <% } -%>
68
68
 
@@ -46,7 +46,7 @@ jobs:
46
46
  <% } -%>
47
47
 
48
48
  - name: Checks
49
- run: <%= packageManager %> run checks
49
+ run: <%= packageManagerRun("checks") %>
50
50
 
51
51
  <% } -%>
52
52
  <% if (build) { -%>
@@ -91,10 +91,10 @@ jobs:
91
91
  <% } -%>
92
92
 
93
93
  - name: Build
94
- run: <%= packageManager %> run build
94
+ run: <%= packageManagerRun("build") %>
95
95
 
96
96
  - name: Check nothing was forgotten before commit
97
- run: <%= packageManagerExec(packageManager, 'repository-check-dirty') %>
97
+ run: <%= packageManagerExec('repository-check-dirty') %>
98
98
 
99
99
  <% } -%>
100
100
  lint:
@@ -140,15 +140,15 @@ jobs:
140
140
  <% } -%>
141
141
 
142
142
  - name: Format
143
- run: <%= packageManager %> run format:check
143
+ run: <%= packageManagerRun("format:check") %>
144
144
  <% if (typescript) { -%>
145
145
 
146
146
  - name: Typescript
147
- run: <%= packageManager %> run tsc
147
+ run: <%= packageManagerRun("tsc") %>
148
148
  <% } -%>
149
149
 
150
150
  - name: Eslint
151
- run: <%= packageManager %> run lint:eslint
151
+ run: <%= packageManagerRun("lint:eslint") %>
152
152
  <% if (testing) { -%>
153
153
 
154
154
  test:
@@ -199,11 +199,11 @@ jobs:
199
199
 
200
200
  <% if (codecov) { -%>
201
201
  - name: Test
202
- run: <%= packageManager %> run test
202
+ run: <%= packageManagerRun("test") %>
203
203
  if: matrix.node-version != <%= nodeLatestMajorVersion %>
204
204
 
205
205
  - name: Generate Test Coverage
206
- run: <%= packageManager %> run test:coverage:generate
206
+ run: <%= packageManagerRun("test:coverage:generate") %>
207
207
  if: matrix.node-version == <%= nodeLatestMajorVersion %>
208
208
  env:
209
209
  CI: true
@@ -217,7 +217,7 @@ jobs:
217
217
  <% } else { -%>
218
218
 
219
219
  - name: Test
220
- run: <%= packageManager %> run test
220
+ run: <%= packageManagerRun("test") %>
221
221
  <% } -%>
222
222
  <% } -%>
223
223
  <% if (e2eTesting) { -%>
@@ -269,7 +269,7 @@ jobs:
269
269
  <% } -%>
270
270
 
271
271
  - name: E2E testing
272
- run: <%= packageManager %> <%= e2eTesting === '.' || e2eTesting === true ? '.' : `./${e2eTesting}` %> run test:e2e
272
+ run: <%= packageManagerRun("test:e2e", e2eTesting) %>
273
273
  <% } -%>
274
274
  <% if (isReleasePleaseEnabled) { -%>
275
275
  release:
@@ -84,12 +84,12 @@ jobs:
84
84
 
85
85
  - name: Check nothing was forgotten before commit
86
86
  if: startsWith(matrix.node-version, '<%= nodeLatestMajorVersion %>.')
87
- run: <%= packageManagerExec(packageManager, 'repository-check-dirty') %>
87
+ run: <%= packageManagerExec('repository-check-dirty') %>
88
88
  <% } -%>
89
89
  <% if (codecov) { -%>
90
90
 
91
91
  - name: Generate Test Coverage
92
- run: <%= packageManager %> run test:coverage:generate
92
+ run: <%= packageManagerRun("test:coverage:generate) %>
93
93
  if: startsWith(matrix.node-version, '<%= nodeLatestMajorVersion %>.')
94
94
  env:
95
95
  CI: true
@@ -112,7 +112,7 @@ jobs:
112
112
  <% if (e2eTesting) { -%>
113
113
 
114
114
  - name: E2E testing
115
- run: <%= packageManager %> <%= e2eTesting %> run test:e2e
115
+ run: <%= packageManagerRun("test:e2e", e2eTesting) %>
116
116
  <% } -%>
117
117
  <% if (isReleasePleaseEnabled) { -%>
118
118
 
@@ -321,7 +321,6 @@ export default class PobLibGenerator extends Generator {
321
321
  documentation: !!this.pobjson.documentation,
322
322
  codecov: this.pobjson.testing && this.pobjson.testing.codecov,
323
323
  ci: this.options.ci,
324
- ciPushWorkflow: this.options.ci,
325
324
  packageManager,
326
325
  isApp: false,
327
326
  splitCIJobs: false,
@@ -151,13 +151,19 @@ export default class PobMonorepoGenerator extends Generator {
151
151
  const config = this.config.get("monorepo");
152
152
 
153
153
  if (this.options.updateOnly && config) {
154
- this.pobLernaConfig = config;
155
- this.pobLernaConfig.packageNames = this.packageNames;
156
- this.config.set("monorepo", this.pobLernaConfig);
154
+ this.pobMonorepoConfig = config;
155
+ this.pobMonorepoConfig.packageNames = this.packageNames;
156
+ this.config.set("monorepo", this.pobMonorepoConfig);
157
157
  return;
158
158
  }
159
159
 
160
- this.pobLernaConfig = await this.prompt([
160
+ if (this.pobMonorepoConfig.ciPushWorkflow) {
161
+ throw new Error(
162
+ "ciPushWorkflow is deprecated, use disablePushWorkflow instead",
163
+ );
164
+ }
165
+
166
+ this.pobMonorepoConfig = await this.prompt([
161
167
  {
162
168
  type: "confirm",
163
169
  name: "ci",
@@ -169,10 +175,10 @@ export default class PobMonorepoGenerator extends Generator {
169
175
  },
170
176
  {
171
177
  type: "confirm",
172
- name: "ciPushWorkflow",
173
- message: "Would you like ci push workflow ?",
178
+ name: "disablePushWorkflow",
179
+ message: "Would you like to DISABLE push workflow ?",
174
180
  when: (answers) => answers.ci,
175
- default: config.ciPushWorkflow == null ? true : config.ciPushWorkflow,
181
+ default: config.disablePushWorkflow,
176
182
  },
177
183
  {
178
184
  type: "confirm",
@@ -223,8 +229,8 @@ export default class PobMonorepoGenerator extends Generator {
223
229
  default: config ? config.eslint : true,
224
230
  },
225
231
  ]);
226
- this.pobLernaConfig.packageNames = this.packageNames;
227
- this.config.set("monorepo", this.pobLernaConfig);
232
+ this.pobMonorepoConfig.packageNames = this.packageNames;
233
+ this.config.set("monorepo", this.pobMonorepoConfig);
228
234
  this.config.delete("pob-config");
229
235
  }
230
236
 
@@ -233,7 +239,7 @@ export default class PobMonorepoGenerator extends Generator {
233
239
 
234
240
  const packageNames = this.packageNames;
235
241
  const packagePaths = this.packageLocations.filter(
236
- this.pobLernaConfig.typescript
242
+ this.pobMonorepoConfig.typescript
237
243
  ? (packagePath) => fs.existsSync(`${packagePath}/tsconfig.json`)
238
244
  : Boolean,
239
245
  );
@@ -249,17 +255,17 @@ export default class PobMonorepoGenerator extends Generator {
249
255
 
250
256
  this.composeWith("pob:common:testing", {
251
257
  monorepo: true,
252
- enable: this.pobLernaConfig.testing,
253
- runner: this.pobLernaConfig.testRunner,
258
+ enable: this.pobMonorepoConfig.testing,
259
+ runner: this.pobMonorepoConfig.testRunner,
254
260
  disableYarnGitCache: this.options.disableYarnGitCache,
255
- testing: this.pobLernaConfig.testing,
256
- e2eTesting: this.pobLernaConfig.e2eTesting,
257
- build: this.pobLernaConfig.typescript === true,
258
- typescript: this.pobLernaConfig.typescript,
259
- documentation: !!this.pobLernaConfig.documentation,
260
- codecov: this.pobLernaConfig.testing && this.pobLernaConfig.codecov,
261
- ci: this.pobLernaConfig.ci,
262
- ciPushWorkflow: this.pobLernaConfig.ciPushWorkflow,
261
+ testing: this.pobMonorepoConfig.testing,
262
+ e2eTesting: this.pobMonorepoConfig.e2eTesting,
263
+ build: this.pobMonorepoConfig.typescript === true,
264
+ typescript: this.pobMonorepoConfig.typescript,
265
+ documentation: !!this.pobMonorepoConfig.documentation,
266
+ codecov: this.pobMonorepoConfig.testing && this.pobMonorepoConfig.codecov,
267
+ ci: this.pobMonorepoConfig.ci,
268
+ disablePushWorkflow: this.pobMonorepoConfig.disablePushWorkflow,
263
269
  packageManager: this.options.packageManager,
264
270
  isApp: this.options.isAppProject,
265
271
  onlyLatestLTS: this.options.onlyLatestLTS,
@@ -267,10 +273,10 @@ export default class PobMonorepoGenerator extends Generator {
267
273
  });
268
274
 
269
275
  const rootIgnorePaths = [
270
- this.pobLernaConfig.e2eTesting &&
271
- `${this.pobLernaConfig.e2eTesting === "." || this.pobLernaConfig.e2eTesting === true ? "" : `/${this.pobLernaConfig.e2eTesting}`}/playwright-report/`,
272
- this.pobLernaConfig.e2eTesting &&
273
- `${this.pobLernaConfig.e2eTesting === "." || this.pobLernaConfig.e2eTesting === true ? "" : `/${this.pobLernaConfig.e2eTesting}`}/test-results/`,
276
+ this.pobMonorepoConfig.e2eTesting &&
277
+ `${this.pobMonorepoConfig.e2eTesting === "." || this.pobMonorepoConfig.e2eTesting === true ? "" : `/${this.pobMonorepoConfig.e2eTesting}`}/playwright-report/`,
278
+ this.pobMonorepoConfig.e2eTesting &&
279
+ `${this.pobMonorepoConfig.e2eTesting === "." || this.pobMonorepoConfig.e2eTesting === true ? "" : `/${this.pobMonorepoConfig.e2eTesting}`}/test-results/`,
274
280
  ].filter(Boolean);
275
281
 
276
282
  if (hasTamagui(this.packages, this.packageConfigs)) {
@@ -283,12 +289,12 @@ export default class PobMonorepoGenerator extends Generator {
283
289
 
284
290
  this.composeWith("pob:common:format-lint", {
285
291
  monorepo: true,
286
- documentation: this.pobLernaConfig.documentation,
292
+ documentation: this.pobMonorepoConfig.documentation,
287
293
  storybook: pkg?.devDependencies?.storybook,
288
- typescript: this.pobLernaConfig.typescript,
289
- build: this.pobLernaConfig.typescript === true,
290
- testing: this.pobLernaConfig.testing,
291
- testRunner: this.pobLernaConfig.testRunner,
294
+ typescript: this.pobMonorepoConfig.typescript,
295
+ build: this.pobMonorepoConfig.typescript === true,
296
+ testing: this.pobMonorepoConfig.testing,
297
+ testRunner: this.pobMonorepoConfig.testRunner,
292
298
  packageManager: this.options.packageManager,
293
299
  yarnNodeLinker: this.options.yarnNodeLinker,
294
300
  appTypes: JSON.stringify(getAppTypes(this.packageConfigs)),
@@ -304,8 +310,8 @@ export default class PobMonorepoGenerator extends Generator {
304
310
  });
305
311
 
306
312
  this.composeWith("pob:lib:doc", {
307
- enabled: this.pobLernaConfig.documentation,
308
- testing: this.pobLernaConfig.testing,
313
+ enabled: this.pobMonorepoConfig.documentation,
314
+ testing: this.pobMonorepoConfig.testing,
309
315
  packageNames: JSON.stringify(packageNames),
310
316
  packagePaths: JSON.stringify(packagePaths),
311
317
  packageManager: this.options.packageManager,
@@ -316,9 +322,9 @@ export default class PobMonorepoGenerator extends Generator {
316
322
  monorepo: true,
317
323
  packageManager: this.options.packageManager,
318
324
  yarnNodeLinker: this.options.yarnNodeLinker,
319
- typescript: this.pobLernaConfig.typescript,
320
- testing: this.pobLernaConfig.testing,
321
- testRunner: this.pobLernaConfig.testRunner,
325
+ typescript: this.pobMonorepoConfig.typescript,
326
+ testing: this.pobMonorepoConfig.testing,
327
+ testRunner: this.pobMonorepoConfig.testRunner,
322
328
  packageNames: JSON.stringify(packageNames),
323
329
  packageLocations: JSON.stringify(this.packageLocations),
324
330
  });
@@ -326,9 +332,9 @@ export default class PobMonorepoGenerator extends Generator {
326
332
  // Always add a gitignore, because npm publish uses it.
327
333
  this.composeWith("pob:core:gitignore", {
328
334
  root: true,
329
- typescript: this.pobLernaConfig.typescript,
330
- documentation: this.pobLernaConfig.documentation,
331
- testing: this.pobLernaConfig.testing,
335
+ typescript: this.pobMonorepoConfig.typescript,
336
+ documentation: this.pobMonorepoConfig.documentation,
337
+ testing: this.pobMonorepoConfig.testing,
332
338
  // TODO add workspaces paths like we do in format-lint
333
339
  paths: [
334
340
  // TODO remove gitignorePaths
@@ -336,7 +342,7 @@ export default class PobMonorepoGenerator extends Generator {
336
342
  ...rootIgnorePaths,
337
343
  ].join("\n"),
338
344
  // todo: fix this using workspaces
339
- // buildDirectory: this.pobLernaConfig.typescript ? `/*/build` : "",
345
+ // buildDirectory: this.pobMonorepoConfig.typescript ? `/*/build` : "",
340
346
  });
341
347
 
342
348
  this.composeWith("pob:common:remove-old-dependencies");
@@ -345,20 +351,20 @@ export default class PobMonorepoGenerator extends Generator {
345
351
  enable: true,
346
352
  packageManager: this.options.packageManager,
347
353
  enablePublish: !this.options.isAppProject,
348
- withBabel: this.pobLernaConfig.typescript,
354
+ withBabel: this.pobMonorepoConfig.typescript,
349
355
  isMonorepo: true,
350
- ci: this.pobLernaConfig.ci,
356
+ ci: this.pobMonorepoConfig.ci,
351
357
  disableYarnGitCache: this.options.disableYarnGitCache,
352
358
  updateOnly: this.options.updateOnly,
353
359
  });
354
360
 
355
361
  this.composeWith("pob:monorepo:typescript", {
356
- enable: this.pobLernaConfig.typescript,
357
- checkOnly: this.pobLernaConfig.typescript === "check-only",
362
+ enable: this.pobMonorepoConfig.typescript,
363
+ checkOnly: this.pobMonorepoConfig.typescript === "check-only",
358
364
  isAppProject: this.options.isAppProject,
359
365
  packageNames: JSON.stringify(packageNames),
360
366
  packagePaths: JSON.stringify(packagePaths),
361
- testRunner: this.pobLernaConfig.testRunner,
367
+ testRunner: this.pobMonorepoConfig.testRunner,
362
368
  onlyLatestLTS: this.options.onlyLatestLTS,
363
369
  packageManager: this.options.packageManager,
364
370
  });
@@ -1,16 +1,18 @@
1
1
  import { quoteArg } from "./execUtils.js";
2
2
 
3
- export const packageManagerRun = (packageManager, script) => {
3
+ export const packageManagerRun = (packageManager, script, packagePath) => {
4
+ const packagePathArg =
5
+ packagePath === "." || packagePath === true ? "" : packagePath;
4
6
  switch (packageManager) {
5
7
  case undefined:
6
8
  case "yarn":
7
- return `yarn run ${script}`;
9
+ return `yarn${packagePathArg ? ` ${packagePathArg}` : ""} run ${script}`;
8
10
  case "npm":
9
- return `npm run ${script}`;
11
+ return `npm run${packagePathArg ? ` --prefix ${packagePathArg}` : ""} ${script}`;
10
12
  case "bun":
11
- return `bun run ${script}`;
13
+ return `bun run${packagePathArg ? ` --cwd ${packagePathArg}` : ""} ${script}`;
12
14
  case "pnpm":
13
- return `pnpm run ${script}`;
15
+ return `pnpm${packagePathArg ? ` --dir ${packagePathArg}` : ""} run ${script}`;
14
16
  default:
15
17
  throw new Error(`Unsupported package manager: ${packageManager}`);
16
18
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pob",
3
- "version": "37.0.0",
3
+ "version": "38.1.0",
4
4
  "description": "Pile of bones, library generator with git/babel/typescript/typedoc/readme/vitest",
5
5
  "keywords": [
6
6
  "skeleton"
@@ -30,7 +30,7 @@
30
30
  "dependencies": {
31
31
  "@types/inquirer": "9.0.10",
32
32
  "@yeoman/adapter": "4.0.2",
33
- "eslint": "10.7.0",
33
+ "eslint": "10.8.0",
34
34
  "findup-sync": "^5.0.0",
35
35
  "git-remote-url": "^1.0.1",
36
36
  "github-username": "^9.0.0",
@@ -48,17 +48,17 @@
48
48
  "validate-npm-package-name": "^8.0.0",
49
49
  "yeoman-environment": "6.1.0",
50
50
  "yeoman-generator": "8.2.2",
51
- "@pob/eslint-config": "66.0.0",
52
- "@pob/eslint-config-typescript-react": "66.0.0",
53
- "@pob/sort-pkg": "13.1.2",
51
+ "@pob/eslint-config": "67.1.0",
52
+ "@pob/eslint-config-typescript-react": "67.1.0",
54
53
  "@pob/sort-object": "11.1.1",
55
- "pob-dependencies": "26.0.0"
54
+ "pob-dependencies": "27.1.0",
55
+ "@pob/sort-pkg": "13.1.2"
56
56
  },
57
57
  "devDependencies": {
58
58
  "@types/node": "24.13.3",
59
59
  "@typescript/native": "npm:typescript@7.0.2",
60
60
  "@yeoman/types": "1.11.1",
61
- "@pob/root": "26.0.0"
61
+ "@pob/root": "27.1.0"
62
62
  },
63
63
  "engines": {
64
64
  "node": ">=22.18.0"