@proteinjs/build 1.1.5 → 1.2.1

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.
Files changed (89) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/src/bin/runBuildWorkspace.d.ts.map +1 -0
  3. package/dist/src/{runBuildWorkspace.js → bin/runBuildWorkspace.js} +1 -1
  4. package/dist/src/bin/runBuildWorkspace.js.map +1 -0
  5. package/dist/src/bin/runCleanWorkspace.d.ts.map +1 -0
  6. package/dist/src/{runCleanWorkspace.js → bin/runCleanWorkspace.js} +1 -1
  7. package/dist/src/bin/runCleanWorkspace.js.map +1 -0
  8. package/dist/src/bin/runTestWorkspace.d.ts.map +1 -0
  9. package/dist/src/{runTestWorkspace.js → bin/runTestWorkspace.js} +1 -1
  10. package/dist/src/bin/runTestWorkspace.js.map +1 -0
  11. package/dist/src/bin/runVersionWorkspace.d.ts.map +1 -0
  12. package/dist/src/{runVersionWorkspace.js → bin/runVersionWorkspace.js} +1 -1
  13. package/dist/src/bin/runVersionWorkspace.js.map +1 -0
  14. package/dist/src/bin/runWatchWorkspace.d.ts.map +1 -0
  15. package/dist/src/{runWatchWorkspace.js → bin/runWatchWorkspace.js} +1 -1
  16. package/dist/src/bin/runWatchWorkspace.js.map +1 -0
  17. package/dist/src/bin/runWorkspaceCommand.d.ts.map +1 -0
  18. package/dist/src/{runWorkspaceCommand.js → bin/runWorkspaceCommand.js} +1 -1
  19. package/dist/src/bin/runWorkspaceCommand.js.map +1 -0
  20. package/dist/src/bin/runWorkspacePackageCommand.d.ts.map +1 -0
  21. package/dist/src/{runWorkspacePackageCommand.js → bin/runWorkspacePackageCommand.js} +1 -1
  22. package/dist/src/bin/runWorkspacePackageCommand.js.map +1 -0
  23. package/dist/src/buildWorkspace.d.ts.map +1 -1
  24. package/dist/src/buildWorkspace.js +8 -6
  25. package/dist/src/buildWorkspace.js.map +1 -1
  26. package/dist/src/cleanWorkspace.js +1 -1
  27. package/dist/src/cleanWorkspace.js.map +1 -1
  28. package/dist/src/logColors.d.ts +11 -0
  29. package/dist/src/logColors.d.ts.map +1 -0
  30. package/dist/src/logColors.js +6 -0
  31. package/dist/src/logColors.js.map +1 -0
  32. package/dist/src/testWorkspace.js +1 -1
  33. package/dist/src/testWorkspace.js.map +1 -1
  34. package/dist/src/versionWorkspace.d.ts.map +1 -1
  35. package/dist/src/versionWorkspace.js +224 -69
  36. package/dist/src/versionWorkspace.js.map +1 -1
  37. package/dist/src/watchWorkspace.d.ts.map +1 -1
  38. package/dist/src/watchWorkspace.js +5 -3
  39. package/dist/src/watchWorkspace.js.map +1 -1
  40. package/dist/src/workspaceCommand.d.ts.map +1 -1
  41. package/dist/src/workspaceCommand.js +5 -3
  42. package/dist/src/workspaceCommand.js.map +1 -1
  43. package/dist/src/workspacePackageCommand.d.ts.map +1 -1
  44. package/dist/src/workspacePackageCommand.js +6 -4
  45. package/dist/src/workspacePackageCommand.js.map +1 -1
  46. package/package.json +12 -10
  47. package/src/bin/runBuildWorkspace.ts +5 -0
  48. package/src/bin/runCleanWorkspace.ts +5 -0
  49. package/src/bin/runTestWorkspace.ts +5 -0
  50. package/src/bin/runVersionWorkspace.ts +5 -0
  51. package/src/bin/runWatchWorkspace.ts +5 -0
  52. package/src/bin/runWorkspaceCommand.ts +5 -0
  53. package/src/bin/runWorkspacePackageCommand.ts +5 -0
  54. package/src/buildWorkspace.ts +8 -6
  55. package/src/cleanWorkspace.ts +1 -1
  56. package/src/logColors.ts +2 -0
  57. package/src/testWorkspace.ts +1 -1
  58. package/src/versionWorkspace.ts +138 -44
  59. package/src/watchWorkspace.ts +5 -3
  60. package/src/workspaceCommand.ts +5 -3
  61. package/src/workspacePackageCommand.ts +6 -4
  62. package/dist/src/runBuildWorkspace.d.ts.map +0 -1
  63. package/dist/src/runBuildWorkspace.js.map +0 -1
  64. package/dist/src/runCleanWorkspace.d.ts.map +0 -1
  65. package/dist/src/runCleanWorkspace.js.map +0 -1
  66. package/dist/src/runTestWorkspace.d.ts.map +0 -1
  67. package/dist/src/runTestWorkspace.js.map +0 -1
  68. package/dist/src/runVersionWorkspace.d.ts.map +0 -1
  69. package/dist/src/runVersionWorkspace.js.map +0 -1
  70. package/dist/src/runWatchWorkspace.d.ts.map +0 -1
  71. package/dist/src/runWatchWorkspace.js.map +0 -1
  72. package/dist/src/runWorkspaceCommand.d.ts.map +0 -1
  73. package/dist/src/runWorkspaceCommand.js.map +0 -1
  74. package/dist/src/runWorkspacePackageCommand.d.ts.map +0 -1
  75. package/dist/src/runWorkspacePackageCommand.js.map +0 -1
  76. package/src/runBuildWorkspace.ts +0 -5
  77. package/src/runCleanWorkspace.ts +0 -5
  78. package/src/runTestWorkspace.ts +0 -5
  79. package/src/runVersionWorkspace.ts +0 -5
  80. package/src/runWatchWorkspace.ts +0 -5
  81. package/src/runWorkspaceCommand.ts +0 -5
  82. package/src/runWorkspacePackageCommand.ts +0 -5
  83. /package/dist/src/{runBuildWorkspace.d.ts → bin/runBuildWorkspace.d.ts} +0 -0
  84. /package/dist/src/{runCleanWorkspace.d.ts → bin/runCleanWorkspace.d.ts} +0 -0
  85. /package/dist/src/{runTestWorkspace.d.ts → bin/runTestWorkspace.d.ts} +0 -0
  86. /package/dist/src/{runVersionWorkspace.d.ts → bin/runVersionWorkspace.d.ts} +0 -0
  87. /package/dist/src/{runWatchWorkspace.d.ts → bin/runWatchWorkspace.d.ts} +0 -0
  88. /package/dist/src/{runWorkspaceCommand.d.ts → bin/runWorkspaceCommand.d.ts} +0 -0
  89. /package/dist/src/{runWorkspacePackageCommand.d.ts → bin/runWorkspacePackageCommand.d.ts} +0 -0
@@ -63,6 +63,7 @@ exports.workspaceCommand = void 0;
63
63
  var path = __importStar(require("path"));
64
64
  var util_node_1 = require("@proteinjs/util-node");
65
65
  var util_1 = require("@proteinjs/util");
66
+ var logColors_1 = require("./logColors");
66
67
  /**
67
68
  * Run a npm command against all packages in the workspace, in dependency order.
68
69
  *
@@ -73,12 +74,13 @@ var util_1 = require("@proteinjs/util");
73
74
  * --skip=@some/package,@another/package
74
75
  */
75
76
  var workspaceCommand = function () { return __awaiter(void 0, void 0, void 0, function () {
76
- var command, logger, args, workspacePath, _a, packageMap, sortedPackageNames, filteredPackageNames, _i, filteredPackageNames_1, packageName, localPackage, packageDir;
77
+ var command, cw, logger, args, workspacePath, _a, packageMap, sortedPackageNames, filteredPackageNames, _i, filteredPackageNames_1, packageName, localPackage, packageDir;
77
78
  return __generator(this, function (_b) {
78
79
  switch (_b.label) {
79
80
  case 0:
80
81
  command = process.argv[2];
81
- logger = new util_1.Logger("workspace:".concat(command));
82
+ cw = new util_node_1.LogColorWrapper();
83
+ logger = new util_1.Logger(cw.color('workspace:', logColors_1.primaryLogColor) + cw.color(command, logColors_1.secondaryLogColor));
82
84
  args = getArgs();
83
85
  workspacePath = process.cwd();
84
86
  return [4 /*yield*/, util_node_1.PackageUtil.getWorkspaceMetadata(workspacePath)];
@@ -100,7 +102,7 @@ var workspaceCommand = function () { return __awaiter(void 0, void 0, void 0, fu
100
102
  packageName = filteredPackageNames_1[_i];
101
103
  localPackage = packageMap[packageName];
102
104
  packageDir = path.dirname(localPackage.filePath);
103
- return [4 /*yield*/, (0, util_node_1.cmd)('npm', ['run', command], { cwd: packageDir }, { logPrefix: "[".concat(packageName, "] ") })];
105
+ return [4 /*yield*/, (0, util_node_1.cmd)('npm', ['run', command], { cwd: packageDir }, { logPrefix: "[".concat(cw.color(packageName), "] ") })];
104
106
  case 3:
105
107
  _b.sent();
106
108
  _b.label = 4;
@@ -1 +1 @@
1
- {"version":3,"file":"workspaceCommand.js","sourceRoot":"","sources":["../../src/workspaceCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspaceCommand.js","sourceRoot":"","sources":["../../src/workspaceCommand.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"workspacePackageCommand.d.ts","sourceRoot":"","sources":["../../src/workspacePackageCommand.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,qBAenC,CAAA"}
1
+ {"version":3,"file":"workspacePackageCommand.d.ts","sourceRoot":"","sources":["../../src/workspacePackageCommand.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,qBAgBnC,CAAA"}
@@ -63,6 +63,7 @@ exports.workspacePackageCommand = void 0;
63
63
  var path = __importStar(require("path"));
64
64
  var util_node_1 = require("@proteinjs/util-node");
65
65
  var util_1 = require("@proteinjs/util");
66
+ var logColors_1 = require("./logColors");
66
67
  /**
67
68
  * Run a command in the directory of the specified package.
68
69
  * If running an npm command, this utility re-symlinks dependencies afterwards.
@@ -70,23 +71,24 @@ var util_1 = require("@proteinjs/util");
70
71
  * ie: `npx workspace-package @my/package npm i react`
71
72
  */
72
73
  var workspacePackageCommand = function () { return __awaiter(void 0, void 0, void 0, function () {
73
- var packageName, command, args, logger, workspacePath, packageMap, localPackage, packageDir;
74
+ var packageName, command, args, cw, logger, workspacePath, packageMap, localPackage, packageDir;
74
75
  return __generator(this, function (_a) {
75
76
  switch (_a.label) {
76
77
  case 0:
77
78
  packageName = process.argv[2];
78
79
  command = process.argv[3];
79
80
  args = process.argv.slice(4);
80
- logger = new util_1.Logger("workspace-package(".concat(packageName, "):").concat(command));
81
+ cw = new util_node_1.LogColorWrapper();
82
+ logger = new util_1.Logger("workspace-package(".concat(cw.color(packageName, logColors_1.primaryLogColor), "):").concat(command));
81
83
  workspacePath = process.cwd();
82
84
  return [4 /*yield*/, util_node_1.PackageUtil.getWorkspaceMetadata(workspacePath)];
83
85
  case 1:
84
86
  packageMap = (_a.sent()).packageMap;
85
87
  localPackage = packageMap[packageName];
86
88
  if (!localPackage)
87
- throw new Error("Package (".concat(packageName, ") does not exist in workspace: ").concat(workspacePath));
89
+ throw new Error("Package (".concat(cw.color(packageName, logColors_1.primaryLogColor), ") does not exist in workspace: ").concat(workspacePath));
88
90
  packageDir = path.dirname(localPackage.filePath);
89
- return [4 /*yield*/, (0, util_node_1.cmd)(command, args, { cwd: packageDir }, { logPrefix: "[".concat(packageName, "] ") })];
91
+ return [4 /*yield*/, (0, util_node_1.cmd)(command, args, { cwd: packageDir }, { logPrefix: "[".concat(cw.color(packageName, logColors_1.primaryLogColor), "] ") })];
90
92
  case 2:
91
93
  _a.sent();
92
94
  if (!(command === 'npm')) return [3 /*break*/, 4];
@@ -1 +1 @@
1
- {"version":3,"file":"workspacePackageCommand.js","sourceRoot":"","sources":["../../src/workspacePackageCommand.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA4B;AAC5B,kDAAuD;AACvD,wCAAwC;AAExC;;;;;GAKG;AACI,IAAM,uBAAuB,GAAG;;;;;gBAC/B,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAC7B,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC7B,MAAM,GAAG,IAAI,aAAM,CAAC,4BAAqB,WAAW,eAAK,OAAO,CAAE,CAAC,CAAC;gBACpE,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;gBACb,qBAAM,uBAAW,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAA;;gBAApE,UAAU,GAAK,CAAA,SAAqD,CAAA,WAA1D;gBACZ,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;gBAC7C,IAAI,CAAC,YAAY;oBACf,MAAM,IAAI,KAAK,CAAC,mBAAY,WAAW,4CAAkC,aAAa,CAAE,CAAC,CAAA;gBAErF,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACvD,qBAAM,IAAA,eAAG,EAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,WAAI,WAAW,OAAI,EAAE,CAAC,EAAA;;gBAAjF,SAAiF,CAAC;qBAC9E,CAAA,OAAO,KAAK,KAAK,CAAA,EAAjB,wBAAiB;gBACnB,qBAAM,uBAAW,CAAC,mBAAmB,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,EAAA;;gBAAvE,SAAuE,CAAC;;;;;KAC3E,CAAA;AAfY,QAAA,uBAAuB,2BAenC"}
1
+ {"version":3,"file":"workspacePackageCommand.js","sourceRoot":"","sources":["../../src/workspacePackageCommand.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA4B;AAC5B,kDAAwE;AACxE,wCAAwC;AACxC,yCAA6C;AAE7C;;;;;GAKG;AACI,IAAM,uBAAuB,GAAG;;;;;gBAC/B,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAC7B,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC7B,EAAE,GAAG,IAAI,2BAAe,EAAE,CAAC;gBAC3B,MAAM,GAAG,IAAI,aAAM,CAAC,4BAAqB,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,2BAAe,CAAC,eAAK,OAAO,CAAE,CAAC,CAAC;gBAC/F,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;gBACb,qBAAM,uBAAW,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAA;;gBAApE,UAAU,GAAK,CAAA,SAAqD,CAAA,WAA1D;gBACZ,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;gBAC7C,IAAI,CAAC,YAAY;oBACf,MAAM,IAAI,KAAK,CAAC,mBAAY,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,2BAAe,CAAC,4CAAkC,aAAa,CAAE,CAAC,CAAA;gBAEhH,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACvD,qBAAM,IAAA,eAAG,EAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,WAAI,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,2BAAe,CAAC,OAAI,EAAE,CAAC,EAAA;;gBAA5G,SAA4G,CAAC;qBACzG,CAAA,OAAO,KAAK,KAAK,CAAA,EAAjB,wBAAiB;gBACnB,qBAAM,uBAAW,CAAC,mBAAmB,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,EAAA;;gBAAvE,SAAuE,CAAC;;;;;KAC3E,CAAA;AAhBY,QAAA,uBAAuB,2BAgBnC"}
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@proteinjs/build",
3
- "version": "1.1.5",
3
+ "version": "1.2.1",
4
4
  "description": "Workspace build tools",
5
5
  "main": "./dist/generated/index.js",
6
6
  "types": "./dist/generated/index.d.ts",
7
7
  "bin": {
8
- "clean-workspace": "dist/src/runCleanWorkspace.js",
9
- "build-workspace": "dist/src/runBuildWorkspace.js",
10
- "test-workspace": "dist/src/runTestWorkspace.js",
11
- "watch-workspace": "dist/src/runWatchWorkspace.js",
12
- "workspace": "dist/src/runWorkspaceCommand.js",
13
- "version-workspace": "dist/src/runVersionWorkspace.js",
14
- "workspace-package": "dist/src/runWorkspacePackageCommand.js"
8
+ "clean-workspace": "dist/src/bin/runCleanWorkspace.js",
9
+ "build-workspace": "dist/src/bin/runBuildWorkspace.js",
10
+ "test-workspace": "dist/src/bin/runTestWorkspace.js",
11
+ "watch-workspace": "dist/src/bin/runWatchWorkspace.js",
12
+ "workspace": "dist/src/bin/runWorkspaceCommand.js",
13
+ "version-workspace": "dist/src/bin/runVersionWorkspace.js",
14
+ "workspace-package": "dist/src/bin/runWorkspacePackageCommand.js"
15
15
  },
16
16
  "publishConfig": {
17
17
  "access": "public"
@@ -35,13 +35,15 @@
35
35
  "dependencies": {
36
36
  "@octokit/core": "6.1.2",
37
37
  "@proteinjs/util": "1.1.0",
38
- "@proteinjs/util-node": "1.1.0"
38
+ "@proteinjs/util-node": "1.2.0",
39
+ "semver": "7.6.0"
39
40
  },
40
41
  "devDependencies": {
41
42
  "@babel/core": "7.23.7",
42
43
  "@babel/preset-env": "7.23.8",
43
44
  "@types/jest": "29.5.5",
44
45
  "@types/node": "14.0.27",
46
+ "@types/semver": "7.5.8",
45
47
  "babel-loader": "9.1.3",
46
48
  "jest": "29.7.0",
47
49
  "ts-jest": "29.1.1",
@@ -49,5 +51,5 @@
49
51
  "webpack": "5.90.0",
50
52
  "webpack-cli": "5.1.4"
51
53
  },
52
- "gitHead": "89a54bba3782191420e3aa36884232660a5eaa21"
54
+ "gitHead": "f7225ec2f61879a1c40cffa1e20dd3919dc1e06f"
53
55
  }
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { buildWorkspace } from '../buildWorkspace'
4
+
5
+ buildWorkspace();
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { cleanWorkspace } from '../cleanWorkspace'
4
+
5
+ cleanWorkspace();
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { testWorkspace } from '../testWorkspace'
4
+
5
+ testWorkspace();
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { versionWorkspace } from '../versionWorkspace'
4
+
5
+ versionWorkspace();
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { watchWorkspace } from '../watchWorkspace'
4
+
5
+ watchWorkspace();
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { workspaceCommand } from '../workspaceCommand'
4
+
5
+ workspaceCommand();
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { workspacePackageCommand } from '../workspacePackageCommand'
4
+
5
+ workspacePackageCommand();
@@ -1,6 +1,7 @@
1
1
  import * as path from 'path'
2
- import { PackageUtil, cmd, parseArgsMap } from '@proteinjs/util-node'
2
+ import { LogColorWrapper, PackageUtil, cmd, parseArgsMap } from '@proteinjs/util-node'
3
3
  import { Logger } from '@proteinjs/util'
4
+ import { primaryLogColor, secondaryLogColor } from './logColors'
4
5
 
5
6
  /**
6
7
  * Install and build workspace, in dependency order.
@@ -12,7 +13,8 @@ import { Logger } from '@proteinjs/util'
12
13
  * --skip=@some/package,@another/package
13
14
  */
14
15
  export async function buildWorkspace() {
15
- const logger = new Logger('workspace:build');
16
+ const cw = new LogColorWrapper();
17
+ const logger = new Logger(cw.color('workspace:', primaryLogColor) + cw.color('build', secondaryLogColor));
16
18
  const args = getArgs();
17
19
  const workspacePath = process.cwd();
18
20
  const { packageMap, sortedPackageNames } = await PackageUtil.getWorkspaceMetadata(workspacePath);
@@ -29,14 +31,14 @@ export async function buildWorkspace() {
29
31
  const packageDir = path.dirname(localPackage.filePath);
30
32
 
31
33
  if (!args.noInstall || !args.noInstall.includes(packageName)) {
32
- await cmd('npm', ['install'], { cwd: packageDir }, { logPrefix: `[${packageName}] ` });
34
+ await cmd('npm', ['install'], { cwd: packageDir }, { logPrefix: `[${cw.color(packageName)}] ` });
33
35
  await PackageUtil.symlinkDependencies(localPackage, packageMap, logger);
34
- logger.info(`Installed ${packageName} (${packageDir})`);
36
+ logger.info(`Installed ${cw.color(packageName)} (${packageDir})`);
35
37
  }
36
38
 
37
39
  if (!args.noBuild || !args.noBuild.includes(packageName)) {
38
- await cmd('npm', ['run', 'build'], { cwd: packageDir }, { logPrefix: `[${packageName}] ` });
39
- logger.info(`Built ${packageName} (${packageDir})`);
40
+ await cmd('npm', ['run', 'build'], { cwd: packageDir }, { logPrefix: `[${cw.color(packageName)}] ` });
41
+ logger.info(`Built ${cw.color(packageName)} (${packageDir})`);
40
42
  }
41
43
  }
42
44
 
@@ -3,7 +3,7 @@ import { PackageUtil, cmd, WorkspaceMetadata } from '@proteinjs/util-node'
3
3
  import { Logger } from '@proteinjs/util'
4
4
 
5
5
  export const cleanWorkspace = async (workspaceMetadata?: WorkspaceMetadata) => {
6
- const logger = new Logger('cleanWorkspace');
6
+ const logger = new Logger('workspace:clean');
7
7
  const workspacePath = process.cwd();
8
8
  const { packageMap, sortedPackageNames } = workspaceMetadata ? workspaceMetadata : await PackageUtil.getWorkspaceMetadata(workspacePath);
9
9
  const filteredPackageNames = sortedPackageNames.filter(packageName => !!packageMap[packageName].packageJson.scripts?.clean);
@@ -0,0 +1,2 @@
1
+ export const primaryLogColor = { r: 81, g: 0, b: 135 };
2
+ export const secondaryLogColor = { r: 253, g: 197, b: 0 };
@@ -3,7 +3,7 @@ import { PackageUtil, cmd, WorkspaceMetadata } from '@proteinjs/util-node'
3
3
  import { Logger } from '@proteinjs/util'
4
4
 
5
5
  export const testWorkspace = async (workspaceMetadata?: WorkspaceMetadata) => {
6
- const logger = new Logger('testWorkspace');
6
+ const logger = new Logger('workspace:test');
7
7
  const workspacePath = process.cwd();
8
8
  const { packageMap, sortedPackageNames } = workspaceMetadata ? workspaceMetadata : await PackageUtil.getWorkspaceMetadata(workspacePath);
9
9
  const filteredPackageNames = sortedPackageNames.filter(packageName => !!packageMap[packageName].packageJson.scripts?.test);
@@ -1,10 +1,14 @@
1
1
  import * as path from 'path'
2
2
  import { exec } from 'child_process'
3
- import { LocalPackage, LocalPackageMap, PackageUtil, cmd, Fs } from '@proteinjs/util-node'
3
+ import { LocalPackage, LocalPackageMap, PackageUtil, cmd, Fs, LogColorWrapper } from '@proteinjs/util-node'
4
4
  import { Logger } from '@proteinjs/util'
5
+ import semver from 'semver'
5
6
  import { Commit } from './Github'
7
+ import { primaryLogColor, secondaryLogColor } from './logColors'
6
8
 
7
- const logger = new Logger('workspace:version');
9
+ const cw = new LogColorWrapper();
10
+ const logger = new Logger(cw.color('workspace:', primaryLogColor) + cw.color('version', secondaryLogColor));
11
+ const fixedVersionWorkspacesToVersion: {[workspacePath: string]: boolean} = {};
8
12
 
9
13
  export async function versionWorkspace() {
10
14
  // fail fast if npm token is not available
@@ -12,7 +16,7 @@ export async function versionWorkspace() {
12
16
 
13
17
  const workspacePath = process.cwd();
14
18
  await pullWorkspace(workspacePath);
15
- const { packageMap, packageGraph, sortedPackageNames } = await PackageUtil.getWorkspaceMetadata(workspacePath);
19
+ const { packageMap, packageGraph, sortedPackageNames, workspaceToPackageMap } = await PackageUtil.getWorkspaceMetadata(workspacePath);
16
20
  const filteredPackageNames = sortedPackageNames.filter(packageName => {
17
21
  const localPackage = packageMap[packageName];
18
22
  return !!localPackage.packageJson.scripts?.clean
@@ -29,19 +33,20 @@ export async function versionWorkspace() {
29
33
  continue;
30
34
 
31
35
  await buildAndTest(localPackage);
32
- await push(localPackage);
36
+ if (localPackage.workspace?.lernaJson?.version === 'fixed') {
37
+ fixedVersionWorkspacesToVersion[localPackage.workspace.path] = true;
38
+ logger.info(`(${cw.color(packageName)}) skipping version push for package in a fixed-version workspace`);
39
+ continue;
40
+ }
41
+
42
+ await pushAndTag(localPackage);
33
43
  if (!localPackage.packageJson.private && localPackage.packageJson.publishConfig?.access === 'public')
34
44
  await publish(localPackage);
35
45
  }
36
46
 
47
+ await syncFixedVersionWorkspaces(Object.keys(fixedVersionWorkspacesToVersion), packageMap, workspaceToPackageMap);
37
48
  await pushMetarepos(workspacePath);
38
- logger.info(`> Symlinking local dependencies in workspace (${workspacePath})`);
39
- for (let packageName of filteredPackageNames) {
40
- const localPackage = packageMap[packageName];
41
- await PackageUtil.symlinkDependencies(localPackage, packageMap, logger);
42
- }
43
-
44
- logger.info(`> Symlinked local dependencies in workspace (${workspacePath})`);
49
+ await symlinkWorkspace(workspacePath, filteredPackageNames, packageMap);
45
50
  logger.info(`> Finished versioning workspace (${workspacePath})`);
46
51
  }
47
52
 
@@ -75,7 +80,7 @@ async function bumpDependencies(localPackage: LocalPackage, packageMap: LocalPac
75
80
  const localDependencyVersion = localDependencyPackage.packageJson.version as string;
76
81
  const currentDependencyVersion = getDependencyVersion(localDependency, localPackage);
77
82
  if (!currentDependencyVersion)
78
- throw new Error(`Package (${localPackage.name}) has dependency on ${localDependency}, but cannot find version in ${localPackage.name}'s package.json`);
83
+ throw new Error(`Package (${cw.color(localPackage.name)}) has dependency on ${localDependency}, but cannot find version in ${cw.color(localPackage.name)}'s package.json`);
79
84
 
80
85
  if (currentDependencyVersion.isLocalPath)
81
86
  continue;
@@ -89,10 +94,9 @@ async function bumpDependencies(localPackage: LocalPackage, packageMap: LocalPac
89
94
  }
90
95
 
91
96
  if (dependenciesChanged) {
92
- const bumpPatchVersion = (version: string) => version.replace(/(\d+)\.(\d+)\.(\d+)$/, (_, major, minor, patch) => `${major}.${minor}.${parseInt(patch, 10) + 1}`);
93
97
  const currentVersion = localPackage.packageJson.version;
94
- localPackage.packageJson.version = bumpPatchVersion(currentVersion);
95
- logger.info(`(${localPackage.name}) bumping version from ${currentVersion} -> ${localPackage.packageJson.version}`);
98
+ localPackage.packageJson.version = semver.inc(currentVersion, 'patch');
99
+ logger.info(`(${cw.color(localPackage.name)}) bumping version from ${currentVersion} -> ${localPackage.packageJson.version}`);
96
100
  await Fs.writeFiles([{ path: localPackage.filePath, content: JSON.stringify(localPackage.packageJson, null, 2) }]);
97
101
  }
98
102
 
@@ -124,42 +128,120 @@ function setDependencyVersion(dependencyPackageName: string, currentVersion: Dep
124
128
  localPackage.packageJson.devDependencies[dependencyPackageName] = newRawVersion;
125
129
 
126
130
  const currentRawVersion = currentVersion.prefix ? currentVersion.prefix + currentVersion.version : currentVersion.version;
127
- logger.info(`(${localPackage.name}) updating dependency version of ${dependencyPackageName} (${currentRawVersion} -> ${newRawVersion})`);
131
+ logger.info(`(${cw.color(localPackage.name)}) updating dependency version of ${cw.color(dependencyPackageName)} (${currentRawVersion} -> ${newRawVersion})`);
132
+ }
133
+
134
+ async function syncFixedVersionWorkspaces(fixedVersionWorkspacePaths: string[], packageMap: LocalPackageMap, workspaceToPackageMap: {[workspacePath: string]: string[]}) {
135
+ if (fixedVersionWorkspacePaths.length == 0)
136
+ return;
137
+
138
+ logger.info(`> Syncing fixed-version workspaces`);
139
+ for (let workspacePath of fixedVersionWorkspacePaths) {
140
+ const workspacePackages = workspaceToPackageMap[workspacePath]
141
+ .filter(packageName => packageName != 'typescript-parser')
142
+ .map(packageName => packageMap[packageName])
143
+ ;
144
+ if (workspacePackages.length == 0)
145
+ continue;
146
+
147
+ const syncedVersion = await syncFixedVersions(workspacePackages);
148
+ if (!syncedVersion)
149
+ continue;
150
+
151
+ await pushAndTagFixedVersionRepo(workspacePath, syncedVersion);
152
+ }
153
+
154
+ logger.info(`> Synced fixed-version workspaces`);
155
+ }
156
+
157
+ async function syncFixedVersions(localPackages: LocalPackage[]): Promise<string|false> {
158
+ let highestVersion: string|undefined;
159
+ for (let localPackage of localPackages) {
160
+ if (!highestVersion) {
161
+ highestVersion = localPackage.packageJson.version;
162
+ continue;
163
+ }
164
+
165
+ if (semver.gt(localPackage.packageJson.version, highestVersion))
166
+ highestVersion = localPackage.packageJson.version;
167
+ }
168
+
169
+ if (!highestVersion)
170
+ throw new Error(`Unable to find version for packages`);
171
+
172
+ let syncedFixedVersions = false;
173
+ for (let localPackage of localPackages) {
174
+ const currentVersion = localPackage.packageJson.version;
175
+ if (currentVersion === highestVersion)
176
+ continue;
177
+
178
+ localPackage.packageJson.version = highestVersion;
179
+ logger.info(`(${cw.color(localPackage.name)}) bumping version from ${currentVersion} -> ${localPackage.packageJson.version}`);
180
+ await Fs.writeFiles([{ path: localPackage.filePath, content: JSON.stringify(localPackage.packageJson, null, 2) }]);
181
+ syncedFixedVersions = true;
182
+ }
183
+
184
+ return syncedFixedVersions ? highestVersion : false;
128
185
  }
129
186
 
130
187
  async function buildAndTest(localPackage: LocalPackage) {
131
188
  const packageDir = path.dirname(localPackage.filePath);
132
- await cmd('npm', ['run', 'clean'], { cwd: packageDir }, { logPrefix: `[${localPackage.name}] ` });
133
- logger.info(`(${localPackage.name}) cleaned package (${packageDir})`);
134
- await cmd('npm', ['install'], { cwd: packageDir }, { logPrefix: `[${localPackage.name}] ` });
135
- logger.info(`(${localPackage.name}) installed latest dependency versions (${packageDir})`);
136
- await cmd('npm', ['run', 'build'], { cwd: packageDir }, { logPrefix: `[${localPackage.name}] ` });
137
- logger.info(`(${localPackage.name}) built version ${localPackage.packageJson.version} (${packageDir})`);
189
+ logger.info(`(${cw.color(localPackage.name)}) cleaning package`);
190
+ await cmd('npm', ['run', 'clean'], { cwd: packageDir }, { logPrefix: `[${cw.color(localPackage.name)}] ` });
191
+ logger.info(`(${cw.color(localPackage.name)}) cleaned package`);
192
+ logger.info(`(${cw.color(localPackage.name)}) installing latest dependency versions`);
193
+ await cmd('npm', ['install'], { cwd: packageDir }, { logPrefix: `[${cw.color(localPackage.name)}] ` });
194
+ logger.info(`(${cw.color(localPackage.name)}) installed latest dependency versions`);
195
+ logger.info(`(${cw.color(localPackage.name)}) building version ${localPackage.packageJson.version}`);
196
+ await cmd('npm', ['run', 'build'], { cwd: packageDir }, { logPrefix: `[${cw.color(localPackage.name)}] ` });
197
+ logger.info(`(${cw.color(localPackage.name)}) built version ${localPackage.packageJson.version} (${packageDir})`);
138
198
  if (localPackage.packageJson.scripts?.test) {
139
- await cmd('npm', ['run', 'test'], { cwd: packageDir }, { logPrefix: `[${localPackage.name}] ` });
140
- logger.info(`(${localPackage.name}) tested version ${localPackage.packageJson.version} (${packageDir})`);
199
+ logger.info(`(${cw.color(localPackage.name)}) testing version ${localPackage.packageJson.version}`);
200
+ await cmd('npm', ['run', 'test'], { cwd: packageDir }, { logPrefix: `[${cw.color(localPackage.name)}] ` });
201
+ logger.info(`(${cw.color(localPackage.name)}) tested version ${localPackage.packageJson.version}`);
141
202
  }
142
203
  }
143
204
 
144
205
  async function pull(localPackage: LocalPackage) {
145
206
  const packageDir = path.dirname(localPackage.filePath);
146
- await cmd('git', ['pull'], { cwd: packageDir }, { logPrefix: `[${localPackage.name}] ` });
147
- logger.info(`(${localPackage.name}) pulled latest changes`);
207
+ logger.info(`(${cw.color(localPackage.name)}) pulling latest changes`);
208
+ await cmd('git', ['pull'], { cwd: packageDir }, { logPrefix: `[${cw.color(localPackage.name)}] ` });
209
+ logger.info(`(${cw.color(localPackage.name)}) pulled latest changes`);
148
210
  }
149
211
 
150
- async function push(localPackage: LocalPackage): Promise<Commit> {
212
+ async function pushAndTag(localPackage: LocalPackage): Promise<Commit> {
151
213
  const packageDir = path.dirname(localPackage.filePath);
152
- await cmd('git', ['add', '.'], { cwd: packageDir }, { logPrefix: `[${localPackage.name}] ` });
153
- await cmd('git', ['commit', '-m', `chore(version): bumping dependency versions for ${localPackage.name} [skip ci]`], { cwd: packageDir }, { logPrefix: `[${localPackage.name}] ` });
154
- await cmd('git', ['push'], { cwd: packageDir }, { logPrefix: `[${localPackage.name}] ` });
155
- logger.info(`(${localPackage.name}) pushed latest version (${localPackage.packageJson.version})`);
214
+ logger.info(`(${cw.color(localPackage.name)}) pushing latest version (${localPackage.packageJson.version})`);
215
+ await cmd('git', ['add', '.'], { cwd: packageDir }, { logPrefix: `[${cw.color(localPackage.name)}] ` });
216
+ await cmd('git', ['commit', '-m', `chore(version): bumping dependency versions for ${localPackage.name} [skip ci]`], { cwd: packageDir }, { logPrefix: `[${cw.color(localPackage.name)}] ` });
217
+ await cmd('git', ['push'], { cwd: packageDir }, { logPrefix: `[${cw.color(localPackage.name)}] ` });
218
+ logger.info(`(${cw.color(localPackage.name)}) pushed latest version (${localPackage.packageJson.version})`);
156
219
  const latestCommitSha = await getLatestCommitSha(packageDir);
157
220
  const repoInfo = await getRepoInfo(packageDir);
158
221
  const commit = { sha: latestCommitSha, ...repoInfo };
159
222
  const tagName = `${localPackage.name}@${localPackage.packageJson.version}`;
160
- await cmd('git', ['tag', '-a', tagName, '-m', `Release ${tagName}`], { cwd: packageDir }, { logPrefix: `[${localPackage.name}] ` });
161
- await cmd('git', ['push', 'origin', tagName], { cwd: packageDir }, { logPrefix: `[${localPackage.name}] ` });
162
- logger.info(`(${localPackage.name}) pushed tag (${tagName})`);
223
+ logger.info(`(${cw.color(localPackage.name)}) pushing tag (${tagName})`);
224
+ await cmd('git', ['tag', '-a', tagName, '-m', `Release ${tagName}`], { cwd: packageDir }, { logPrefix: `[${cw.color(localPackage.name)}] ` });
225
+ await cmd('git', ['push', 'origin', tagName], { cwd: packageDir }, { logPrefix: `[${cw.color(localPackage.name)}] ` });
226
+ logger.info(`(${cw.color(localPackage.name)}) pushed tag (${tagName})`);
227
+ return commit;
228
+ }
229
+
230
+ async function pushAndTagFixedVersionRepo(dir: string, version: string): Promise<Commit> {
231
+ const repoName = path.basename(dir.endsWith(path.sep) ? dir.slice(0, -1) : dir);
232
+ logger.info(`(${cw.color(repoName)}) pushing latest version (${version})`);
233
+ await cmd('git', ['add', '.'], { cwd: dir }, { logPrefix: `[${cw.color(repoName)}] ` });
234
+ await cmd('git', ['commit', '-m', `chore(version): bumping dependency versions [skip ci]`], { cwd: dir }, { logPrefix: `[${cw.color(repoName)}] ` });
235
+ await cmd('git', ['push'], { cwd: dir }, { logPrefix: `[${cw.color(repoName)}] ` });
236
+ logger.info(`(${cw.color(repoName)}) pushed latest version (${version})`);
237
+ const latestCommitSha = await getLatestCommitSha(dir);
238
+ const repoInfo = await getRepoInfo(dir);
239
+ const commit = { sha: latestCommitSha, ...repoInfo };
240
+ const tagName = `v${version}`;
241
+ logger.info(`(${cw.color(repoName)}) pushing tag (${tagName})`);
242
+ await cmd('git', ['tag', '-a', tagName, '-m', `Release ${tagName}`], { cwd: dir }, { logPrefix: `[${cw.color(repoName)}] ` });
243
+ await cmd('git', ['push', 'origin', tagName], { cwd: dir }, { logPrefix: `[${cw.color(repoName)}] ` });
244
+ logger.info(`(${cw.color(repoName)}) pushed tag (${tagName})`);
163
245
  return commit;
164
246
  }
165
247
 
@@ -174,11 +256,22 @@ async function pushMetarepos(dir: string) {
174
256
 
175
257
  async function pushMetarepo(dir: string) {
176
258
  const repoName = path.basename(dir.endsWith(path.sep) ? dir.slice(0, -1) : dir);
177
- await cmd('git', ['add', '.'], { cwd: dir }, { logPrefix: `[${repoName}] ` });
178
- await cmd('git', ['commit', '-m', `chore(version): bumping submodule versions [skip ci]`], { cwd: dir }, { logPrefix: `[${repoName}] ` });
179
- await cmd('git', ['pull'], { cwd: dir }, { logPrefix: `[${repoName}] ` });
180
- await cmd('git', ['push'], { cwd: dir }, { logPrefix: `[${repoName}] ` });
181
- logger.info(`(workspace) pushed metarepo (${dir})`);
259
+ logger.info(`(${cw.color(repoName)}) pushing metarepo (${dir})`);
260
+ await cmd('git', ['add', '.'], { cwd: dir }, { logPrefix: `[${cw.color(repoName)}] ` });
261
+ await cmd('git', ['commit', '-m', `chore(version): bumping submodule versions [skip ci]`], { cwd: dir }, { logPrefix: `[${cw.color(repoName)}] ` });
262
+ await cmd('git', ['pull'], { cwd: dir }, { logPrefix: `[${cw.color(repoName)}] ` });
263
+ await cmd('git', ['push'], { cwd: dir }, { logPrefix: `[${cw.color(repoName)}] ` });
264
+ logger.info(`(${cw.color(repoName)}) pushed metarepo (${dir})`);
265
+ }
266
+
267
+ async function symlinkWorkspace(workspacePath: string, packageNames: string[], packageMap: LocalPackageMap) {
268
+ logger.info(`> Symlinking local dependencies in workspace (${workspacePath})`);
269
+ for (let packageName of packageNames) {
270
+ const localPackage = packageMap[packageName];
271
+ await PackageUtil.symlinkDependencies(localPackage, packageMap, logger);
272
+ }
273
+
274
+ logger.info(`> Symlinked local dependencies in workspace (${workspacePath})`);
182
275
  }
183
276
 
184
277
  async function getLatestCommitSha(dir: string): Promise<string> {
@@ -225,19 +318,20 @@ async function getRepoInfo(dir: string): Promise<RepoInfo> {
225
318
 
226
319
  async function publish(localPackage: LocalPackage) {
227
320
  if (localPackage.packageJson.private) {
228
- logger.info(`Preventing publish of private package: ${localPackage.name}`);
321
+ logger.info(`Preventing publish of private package: ${cw.color(localPackage.name)}`);
229
322
  return;
230
323
  }
231
324
 
232
325
  if (!localPackage.name.startsWith('@proteinjs/')) {
233
- logger.warn(`Preventing publish of non-proteinjs package: ${localPackage.name}`);
326
+ logger.warn(`Preventing publish of non-proteinjs package: ${cw.color(localPackage.name)}`);
234
327
  return;
235
328
  }
236
329
 
237
330
  const packageDir = path.dirname(localPackage.filePath);
238
- await cmd('npm', ['set', `//registry.npmjs.org/:_authToken=${getNpmToken()}`], { cwd: packageDir }, { logPrefix: `[${localPackage.name}] ` });
239
- await cmd('npm', ['publish', '--tag', 'latest', '--access', 'public'], { cwd: packageDir }, { logPrefix: `[${localPackage.name}] ` });
240
- logger.info(`(${localPackage.name}) published latest version (${localPackage.packageJson.version})`);
331
+ logger.info(`(${cw.color(localPackage.name)}) publishing latest version (${localPackage.packageJson.version})`);
332
+ await cmd('npm', ['set', `//registry.npmjs.org/:_authToken=${getNpmToken()}`], { cwd: packageDir }, { logPrefix: `[${cw.color(localPackage.name)}] ` });
333
+ await cmd('npm', ['publish', '--tag', 'latest', '--access', 'public'], { cwd: packageDir }, { logPrefix: `[${cw.color(localPackage.name)}] ` });
334
+ logger.info(`(${cw.color(localPackage.name)}) published latest version (${localPackage.packageJson.version})`);
241
335
  }
242
336
 
243
337
  function getNpmToken() {
@@ -1,9 +1,11 @@
1
1
  import * as path from 'path'
2
- import { PackageUtil, WorkspaceMetadata, cmd } from '@proteinjs/util-node'
2
+ import { PackageUtil, WorkspaceMetadata, cmd, LogColorWrapper } from '@proteinjs/util-node'
3
3
  import { Logger } from '@proteinjs/util'
4
+ import { primaryLogColor, secondaryLogColor } from './logColors';
4
5
 
5
6
  export const watchWorkspace = async (workspaceMetadata?: WorkspaceMetadata) => {
6
- const logger = new Logger('watchWorkspace');
7
+ const cw = new LogColorWrapper();
8
+ const logger = new Logger(cw.color('workspace:', primaryLogColor) + cw.color('watch', secondaryLogColor));
7
9
  const workspacePath = process.cwd();
8
10
  const { packageMap, sortedPackageNames } = workspaceMetadata ? workspaceMetadata : await PackageUtil.getWorkspaceMetadata(workspacePath);
9
11
  const filteredPackageNames = sortedPackageNames.filter(packageName => !!packageMap[packageName].packageJson.scripts?.watch);
@@ -15,7 +17,7 @@ export const watchWorkspace = async (workspaceMetadata?: WorkspaceMetadata) => {
15
17
  const packageDir = path.dirname(localPackage.filePath);
16
18
  const loggingEnabledState = { loggingEnabled: false };
17
19
  setTimeout(() => loggingEnabledState.loggingEnabled = true, loggingStartDelay);
18
- const logPrefix = `[${packageName}] `;
20
+ const logPrefix = `[${cw.color(packageName)}] `;
19
21
  let inMultiLineLog = false;
20
22
  const stdoutFilter = (log: string) => {
21
23
  if (log.includes('File change detected. Starting incremental compilation'))
@@ -1,6 +1,7 @@
1
1
  import * as path from 'path'
2
- import { LocalPackageMap, PackageUtil, cmd, parseArgsMap } from '@proteinjs/util-node'
2
+ import { LocalPackageMap, LogColorWrapper, PackageUtil, cmd, parseArgsMap } from '@proteinjs/util-node'
3
3
  import { Logger } from '@proteinjs/util'
4
+ import { primaryLogColor, secondaryLogColor } from './logColors'
4
5
 
5
6
  /**
6
7
  * Run a npm command against all packages in the workspace, in dependency order.
@@ -13,7 +14,8 @@ import { Logger } from '@proteinjs/util'
13
14
  */
14
15
  export const workspaceCommand = async () => {
15
16
  const command = process.argv[2]
16
- const logger = new Logger(`workspace:${command}`);
17
+ const cw = new LogColorWrapper();
18
+ const logger = new Logger(cw.color('workspace:', primaryLogColor) + cw.color(command, secondaryLogColor));
17
19
  const args = getArgs();
18
20
  const workspacePath = process.cwd();
19
21
  const { packageMap, sortedPackageNames } = await PackageUtil.getWorkspaceMetadata(workspacePath);
@@ -30,7 +32,7 @@ export const workspaceCommand = async () => {
30
32
  for (let packageName of filteredPackageNames) {
31
33
  const localPackage = packageMap[packageName];
32
34
  const packageDir = path.dirname(localPackage.filePath);
33
- await cmd('npm', ['run', command], { cwd: packageDir }, { logPrefix: `[${packageName}] ` });
35
+ await cmd('npm', ['run', command], { cwd: packageDir }, { logPrefix: `[${cw.color(packageName)}] ` });
34
36
  }
35
37
  logger.info(`> Ran \`npm run ${command}\` for ${filteredPackageNames.length} package${filteredPackageNames.length != 1 ? 's' : ''} in workspace (${workspacePath})`);
36
38
  }
@@ -1,6 +1,7 @@
1
1
  import * as path from 'path'
2
- import { PackageUtil, cmd } from '@proteinjs/util-node'
2
+ import { LogColorWrapper, PackageUtil, cmd } from '@proteinjs/util-node'
3
3
  import { Logger } from '@proteinjs/util'
4
+ import { primaryLogColor } from './logColors'
4
5
 
5
6
  /**
6
7
  * Run a command in the directory of the specified package.
@@ -12,15 +13,16 @@ export const workspacePackageCommand = async () => {
12
13
  const packageName = process.argv[2]
13
14
  const command = process.argv[3];
14
15
  const args = process.argv.slice(4);
15
- const logger = new Logger(`workspace-package(${packageName}):${command}`);
16
+ const cw = new LogColorWrapper();
17
+ const logger = new Logger(`workspace-package(${cw.color(packageName, primaryLogColor)}):${command}`);
16
18
  const workspacePath = process.cwd();
17
19
  const { packageMap } = await PackageUtil.getWorkspaceMetadata(workspacePath);
18
20
  const localPackage = packageMap[packageName];
19
21
  if (!localPackage)
20
- throw new Error(`Package (${packageName}) does not exist in workspace: ${workspacePath}`)
22
+ throw new Error(`Package (${cw.color(packageName, primaryLogColor)}) does not exist in workspace: ${workspacePath}`)
21
23
 
22
24
  const packageDir = path.dirname(localPackage.filePath);
23
- await cmd(command, args, { cwd: packageDir }, { logPrefix: `[${packageName}] ` });
25
+ await cmd(command, args, { cwd: packageDir }, { logPrefix: `[${cw.color(packageName, primaryLogColor)}] ` });
24
26
  if (command === 'npm')
25
27
  await PackageUtil.symlinkDependencies(localPackage, packageMap, logger);
26
28
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"runBuildWorkspace.d.ts","sourceRoot":"","sources":["../../src/runBuildWorkspace.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"runBuildWorkspace.js","sourceRoot":"","sources":["../../src/runBuildWorkspace.ts"],"names":[],"mappings":";;;AAEA,mDAAiD;AAEjD,IAAA,+BAAc,GAAE,CAAC"}