@proteinjs/build 1.0.10 → 1.0.12

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/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [1.0.12](https://github.com/proteinjs/build/compare/@proteinjs/build@1.0.11...@proteinjs/build@1.0.12) (2024-04-18)
7
+
8
+ **Note:** Version bump only for package @proteinjs/build
9
+
10
+
11
+
12
+
13
+
14
+ ## [1.0.11](https://github.com/proteinjs/build/compare/@proteinjs/build@1.0.10...@proteinjs/build@1.0.11) (2024-04-18)
15
+
16
+ **Note:** Version bump only for package @proteinjs/build
17
+
18
+
19
+
20
+
21
+
6
22
  ## [1.0.10](https://github.com/proteinjs/build/compare/@proteinjs/build@1.0.9...@proteinjs/build@1.0.10) (2024-04-17)
7
23
 
8
24
  **Note:** Version bump only for package @proteinjs/build
@@ -1,3 +1,11 @@
1
- import { WorkspaceMetadata } from '@proteinjs/util-node';
2
- export declare function buildWorkspace(workspaceMetadata?: WorkspaceMetadata): Promise<void>;
1
+ /**
2
+ * Install and build workspace, in dependency order.
3
+ *
4
+ * Optional args:
5
+ *
6
+ * --no-install=@some/package,@another/package
7
+ * --no-build=@some/package,@another/package
8
+ * --skip=@some/package,@another/package
9
+ */
10
+ export declare function buildWorkspace(): Promise<void>;
3
11
  //# sourceMappingURL=buildWorkspace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildWorkspace.d.ts","sourceRoot":"","sources":["../../src/buildWorkspace.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,iBAAiB,EAAO,MAAM,sBAAsB,CAAA;AAG1E,wBAAsB,cAAc,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,iBAwBzE"}
1
+ {"version":3,"file":"buildWorkspace.d.ts","sourceRoot":"","sources":["../../src/buildWorkspace.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AACH,wBAAsB,cAAc,kBA8BnC"}
@@ -63,57 +63,81 @@ exports.buildWorkspace = 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
- function buildWorkspace(workspaceMetadata) {
66
+ /**
67
+ * Install and build workspace, in dependency order.
68
+ *
69
+ * Optional args:
70
+ *
71
+ * --no-install=@some/package,@another/package
72
+ * --no-build=@some/package,@another/package
73
+ * --skip=@some/package,@another/package
74
+ */
75
+ function buildWorkspace() {
67
76
  return __awaiter(this, void 0, void 0, function () {
68
- var logger, workspacePath, _a, packageMap, sortedPackageNames, _b, filteredPackageNames, _i, filteredPackageNames_1, packageName, localPackage, packageDir;
69
- return __generator(this, function (_c) {
70
- switch (_c.label) {
77
+ var logger, args, workspacePath, _a, packageMap, sortedPackageNames, filteredPackageNames, _i, filteredPackageNames_1, packageName, localPackage, packageDir;
78
+ return __generator(this, function (_b) {
79
+ switch (_b.label) {
71
80
  case 0:
72
- logger = new util_1.Logger('buildWorkspace');
81
+ logger = new util_1.Logger('workspace:build');
82
+ args = getArgs();
73
83
  workspacePath = process.cwd();
74
- logger.info("> Building workspace (".concat(workspacePath, ")"));
75
- if (!workspaceMetadata) return [3 /*break*/, 1];
76
- _b = workspaceMetadata;
77
- return [3 /*break*/, 3];
78
- case 1: return [4 /*yield*/, util_node_1.PackageUtil.getWorkspaceMetadata(workspacePath)];
79
- case 2:
80
- _b = _c.sent();
81
- _c.label = 3;
82
- case 3:
83
- _a = _b, packageMap = _a.packageMap, sortedPackageNames = _a.sortedPackageNames;
84
- filteredPackageNames = sortedPackageNames.filter(function (packageName) { var _a; return !!((_a = packageMap[packageName].packageJson.scripts) === null || _a === void 0 ? void 0 : _a.build); });
84
+ return [4 /*yield*/, util_node_1.PackageUtil.getWorkspaceMetadata(workspacePath)];
85
+ case 1:
86
+ _a = _b.sent(), packageMap = _a.packageMap, sortedPackageNames = _a.sortedPackageNames;
87
+ filteredPackageNames = sortedPackageNames.filter(function (packageName) {
88
+ var _a;
89
+ return !!((_a = packageMap[packageName].packageJson.scripts) === null || _a === void 0 ? void 0 : _a.build) &&
90
+ !(args.skip && args.skip.includes(packageName));
91
+ });
92
+ logger.info("> Installing and building ".concat(filteredPackageNames.length, " package").concat(filteredPackageNames.length != 1 ? 's' : '', " in workspace (").concat(workspacePath, ")"));
85
93
  logger.debug("packageMap:\n".concat(JSON.stringify(packageMap, null, 2)), true);
86
94
  logger.debug("filteredPackageNames:\n".concat(JSON.stringify(filteredPackageNames, null, 2)), true);
87
- logger.info("> Installing and building ".concat(filteredPackageNames.length, " package").concat(filteredPackageNames.length != 1 ? 's' : ''));
88
95
  _i = 0, filteredPackageNames_1 = filteredPackageNames;
89
- _c.label = 4;
90
- case 4:
91
- if (!(_i < filteredPackageNames_1.length)) return [3 /*break*/, 9];
96
+ _b.label = 2;
97
+ case 2:
98
+ if (!(_i < filteredPackageNames_1.length)) return [3 /*break*/, 8];
92
99
  packageName = filteredPackageNames_1[_i];
93
100
  localPackage = packageMap[packageName];
94
101
  packageDir = path.dirname(localPackage.filePath);
95
- return [4 /*yield*/, (0, util_node_1.cmd)('npm', ['install'], { cwd: packageDir })];
96
- case 5:
97
- _c.sent();
102
+ if (!(!args.noInstall || !args.noInstall.includes(packageName))) return [3 /*break*/, 5];
103
+ return [4 /*yield*/, (0, util_node_1.cmd)('npm', ['install'], { cwd: packageDir }, { logPrefix: "[".concat(packageName, "] ") })];
104
+ case 3:
105
+ _b.sent();
98
106
  return [4 /*yield*/, util_node_1.PackageUtil.symlinkDependencies(localPackage, packageMap, logger)];
99
- case 6:
100
- _c.sent();
107
+ case 4:
108
+ _b.sent();
101
109
  logger.info("Installed ".concat(packageName, " (").concat(packageDir, ")"));
102
- if (!(packageName != 'typescript-parser')) return [3 /*break*/, 8];
103
- return [4 /*yield*/, (0, util_node_1.cmd)('npm', ['run', 'build'], { cwd: packageDir })];
104
- case 7:
105
- _c.sent();
110
+ _b.label = 5;
111
+ case 5:
112
+ if (!(!args.noBuild || !args.noBuild.includes(packageName))) return [3 /*break*/, 7];
113
+ return [4 /*yield*/, (0, util_node_1.cmd)('npm', ['run', 'build'], { cwd: packageDir }, { logPrefix: "[".concat(packageName, "] ") })];
114
+ case 6:
115
+ _b.sent();
106
116
  logger.info("Built ".concat(packageName, " (").concat(packageDir, ")"));
107
- _c.label = 8;
108
- case 8:
117
+ _b.label = 7;
118
+ case 7:
109
119
  _i++;
110
- return [3 /*break*/, 4];
111
- case 9:
112
- logger.info("> Built workspace (".concat(workspacePath, ")"));
120
+ return [3 /*break*/, 2];
121
+ case 8:
122
+ logger.info("> Installed and built ".concat(filteredPackageNames.length, " package").concat(filteredPackageNames.length != 1 ? 's' : '', " in workspace (").concat(workspacePath, ")"));
113
123
  return [2 /*return*/];
114
124
  }
115
125
  });
116
126
  });
117
127
  }
118
128
  exports.buildWorkspace = buildWorkspace;
129
+ function getArgs() {
130
+ var args = {};
131
+ var argsMap = (0, util_node_1.parseArgsMap)(process.argv.slice(2));
132
+ for (var argName in argsMap) {
133
+ var argValue = argsMap[argName];
134
+ if (argName == '--no-install' && typeof argValue === 'string')
135
+ args.noInstall = argValue.split(',');
136
+ else if (argName == '--no-build' && typeof argValue === 'string')
137
+ args.noBuild = argValue.split(',');
138
+ else if (argName == '--skip' && typeof argValue === 'string')
139
+ args.skip = argValue.split(',');
140
+ }
141
+ return args;
142
+ }
119
143
  //# sourceMappingURL=buildWorkspace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildWorkspace.js","sourceRoot":"","sources":["../../src/buildWorkspace.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA4B;AAC5B,kDAA0E;AAC1E,wCAAwC;AAExC,SAAsB,cAAc,CAAC,iBAAqC;;;;;;oBAClE,MAAM,GAAG,IAAI,aAAM,CAAC,gBAAgB,CAAC,CAAC;oBACtC,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;oBACpC,MAAM,CAAC,IAAI,CAAC,gCAAyB,aAAa,MAAG,CAAC,CAAC;yBACZ,iBAAiB,EAAjB,wBAAiB;oBAAG,KAAA,iBAAiB,CAAA;;wBAAG,qBAAM,uBAAW,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAA;;oBAArD,KAAA,SAAqD,CAAA;;;oBAAlI,OAAkI,EAAhI,UAAU,gBAAA,EAAE,kBAAkB,wBAAA;oBAChC,oBAAoB,GAAG,kBAAkB,CAAC,MAAM,CAAC,UAAA,WAAW,YAAI,OAAA,CAAC,CAAC,CAAA,MAAA,UAAU,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,OAAO,0CAAE,KAAK,CAAA,CAAA,EAAA,CAAC,CAAC;oBAC5H,MAAM,CAAC,KAAK,CAAC,uBAAgB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAE,EAAE,IAAI,CAAC,CAAC;oBAC1E,MAAM,CAAC,KAAK,CAAC,iCAA0B,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAE,EAAE,IAAI,CAAC,CAAC;oBAE9F,MAAM,CAAC,IAAI,CAAC,oCAA6B,oBAAoB,CAAC,MAAM,qBAAW,oBAAoB,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC,CAAC;0BAClF,EAApB,6CAAoB;;;yBAApB,CAAA,kCAAoB,CAAA;oBAAnC,WAAW;oBACZ,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;oBACvC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;oBACvD,qBAAM,IAAA,eAAG,EAAC,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,EAAA;;oBAAlD,SAAkD,CAAC;oBACnD,qBAAM,uBAAW,CAAC,mBAAmB,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,CAAC,EAAA;;oBAAvE,SAAuE,CAAC;oBACxE,MAAM,CAAC,IAAI,CAAC,oBAAa,WAAW,eAAK,UAAU,MAAG,CAAC,CAAC;yBAEpD,CAAA,WAAW,IAAI,mBAAmB,CAAA,EAAlC,wBAAkC;oBACpC,qBAAM,IAAA,eAAG,EAAC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,EAAA;;oBAAvD,SAAuD,CAAC;oBACxD,MAAM,CAAC,IAAI,CAAC,gBAAS,WAAW,eAAK,UAAU,MAAG,CAAC,CAAC;;;oBAThC,IAAoB,CAAA;;;oBAa5C,MAAM,CAAC,IAAI,CAAC,6BAAsB,aAAa,MAAG,CAAC,CAAC;;;;;CACrD;AAxBD,wCAwBC"}
1
+ {"version":3,"file":"buildWorkspace.js","sourceRoot":"","sources":["../../src/buildWorkspace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=runWorkspaceCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runWorkspaceCommand.d.ts","sourceRoot":"","sources":["../../src/runWorkspaceCommand.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ var workspaceCommand_1 = require("./workspaceCommand");
5
+ (0, workspaceCommand_1.workspaceCommand)();
6
+ //# sourceMappingURL=runWorkspaceCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runWorkspaceCommand.js","sourceRoot":"","sources":["../../src/runWorkspaceCommand.ts"],"names":[],"mappings":";;;AAEA,uDAAqD;AAErD,IAAA,mCAAgB,GAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Run a npm command against all packages in the workspace, in dependency order.
3
+ *
4
+ * ie: `npx workspace test --skip=@some/package,@another/package`
5
+ *
6
+ * Optional args:
7
+ *
8
+ * --skip=@some/package,@another/package
9
+ */
10
+ export declare const workspaceCommand: () => Promise<void>;
11
+ //# sourceMappingURL=workspaceCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaceCommand.d.ts","sourceRoot":"","sources":["../../src/workspaceCommand.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,qBAmB5B,CAAA"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __generator = (this && this.__generator) || function (thisArg, body) {
35
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
36
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
37
+ function verb(n) { return function (v) { return step([n, v]); }; }
38
+ function step(op) {
39
+ if (f) throw new TypeError("Generator is already executing.");
40
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
41
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
42
+ if (y = 0, t) op = [op[0] & 2, t.value];
43
+ switch (op[0]) {
44
+ case 0: case 1: t = op; break;
45
+ case 4: _.label++; return { value: op[1], done: false };
46
+ case 5: _.label++; y = op[1]; op = [0]; continue;
47
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
48
+ default:
49
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
50
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
51
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
52
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
53
+ if (t[2]) _.ops.pop();
54
+ _.trys.pop(); continue;
55
+ }
56
+ op = body.call(thisArg, _);
57
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
58
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
59
+ }
60
+ };
61
+ Object.defineProperty(exports, "__esModule", { value: true });
62
+ exports.workspaceCommand = void 0;
63
+ var path = __importStar(require("path"));
64
+ var util_node_1 = require("@proteinjs/util-node");
65
+ var util_1 = require("@proteinjs/util");
66
+ /**
67
+ * Run a npm command against all packages in the workspace, in dependency order.
68
+ *
69
+ * ie: `npx workspace test --skip=@some/package,@another/package`
70
+ *
71
+ * Optional args:
72
+ *
73
+ * --skip=@some/package,@another/package
74
+ */
75
+ var workspaceCommand = function () { return __awaiter(void 0, void 0, void 0, function () {
76
+ var command, logger, workspacePath, _a, packageMap, sortedPackageNames, filteredPackageNames, _i, filteredPackageNames_1, packageName, localPackage, packageDir;
77
+ return __generator(this, function (_b) {
78
+ switch (_b.label) {
79
+ case 0:
80
+ command = process.argv[2];
81
+ logger = new util_1.Logger("workspace:".concat(command));
82
+ workspacePath = process.cwd();
83
+ return [4 /*yield*/, util_node_1.PackageUtil.getWorkspaceMetadata(workspacePath)];
84
+ case 1:
85
+ _a = _b.sent(), packageMap = _a.packageMap, sortedPackageNames = _a.sortedPackageNames;
86
+ filteredPackageNames = sortedPackageNames.filter(function (packageName) { return hasScript(command, packageName, packageMap); });
87
+ if (filteredPackageNames.length == 0) {
88
+ logger.info("> There are no packages with the `".concat(command, "` script in workspace (").concat(workspacePath, ")"));
89
+ return [2 /*return*/];
90
+ }
91
+ logger.info("> Running `npm run ".concat(command, "` for ").concat(filteredPackageNames.length, " package").concat(filteredPackageNames.length != 1 ? 's' : '', " in workspace (").concat(workspacePath, ")"));
92
+ _i = 0, filteredPackageNames_1 = filteredPackageNames;
93
+ _b.label = 2;
94
+ case 2:
95
+ if (!(_i < filteredPackageNames_1.length)) return [3 /*break*/, 5];
96
+ packageName = filteredPackageNames_1[_i];
97
+ localPackage = packageMap[packageName];
98
+ packageDir = path.dirname(localPackage.filePath);
99
+ return [4 /*yield*/, (0, util_node_1.cmd)('npm', ['run', command], { cwd: packageDir }, { logPrefix: "[".concat(packageName, "] ") })];
100
+ case 3:
101
+ _b.sent();
102
+ _b.label = 4;
103
+ case 4:
104
+ _i++;
105
+ return [3 /*break*/, 2];
106
+ case 5:
107
+ logger.info("> Ran `npm run ".concat(command, "` for ").concat(filteredPackageNames.length, " package").concat(filteredPackageNames.length != 1 ? 's' : '', " in workspace (").concat(workspacePath, ")"));
108
+ return [2 /*return*/];
109
+ }
110
+ });
111
+ }); };
112
+ exports.workspaceCommand = workspaceCommand;
113
+ function hasScript(scriptName, packageName, packageMap) {
114
+ return !!packageMap[packageName].packageJson.scripts && !!packageMap[packageName].packageJson.scripts[scriptName];
115
+ }
116
+ //# sourceMappingURL=workspaceCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaceCommand.js","sourceRoot":"","sources":["../../src/workspaceCommand.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA4B;AAC5B,kDAAwE;AACxE,wCAAwC;AAExC;;;;;;;;GAQG;AACI,IAAM,gBAAgB,GAAG;;;;;gBACxB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACzB,MAAM,GAAG,IAAI,aAAM,CAAC,oBAAa,OAAO,CAAE,CAAC,CAAC;gBAC5C,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;gBACO,qBAAM,uBAAW,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAA;;gBAA1F,KAAqC,SAAqD,EAAxF,UAAU,gBAAA,EAAE,kBAAkB,wBAAA;gBAChC,oBAAoB,GAAG,kBAAkB,CAAC,MAAM,CAAC,UAAA,WAAW,IAAI,OAAA,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,EAA3C,CAA2C,CAAC,CAAC;gBAEnH,IAAI,oBAAoB,CAAC,MAAM,IAAI,CAAC,EAAE;oBACpC,MAAM,CAAC,IAAI,CAAC,4CAAsC,OAAO,oCAA2B,aAAa,MAAG,CAAC,CAAC;oBACtG,sBAAO;iBACR;gBAED,MAAM,CAAC,IAAI,CAAC,6BAAuB,OAAO,mBAAU,oBAAoB,CAAC,MAAM,qBAAW,oBAAoB,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,4BAAkB,aAAa,MAAG,CAAC,CAAC;sBAC7H,EAApB,6CAAoB;;;qBAApB,CAAA,kCAAoB,CAAA;gBAAnC,WAAW;gBACZ,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;gBACvC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACvD,qBAAM,IAAA,eAAG,EAAC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,WAAI,WAAW,OAAI,EAAE,CAAC,EAAA;;gBAA3F,SAA2F,CAAC;;;gBAHtE,IAAoB,CAAA;;;gBAK5C,MAAM,CAAC,IAAI,CAAC,yBAAmB,OAAO,mBAAU,oBAAoB,CAAC,MAAM,qBAAW,oBAAoB,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,4BAAkB,aAAa,MAAG,CAAC,CAAC;;;;KACtK,CAAA;AAnBY,QAAA,gBAAgB,oBAmB5B;AAED,SAAS,SAAS,CAAC,UAAkB,EAAE,WAAmB,EAAE,UAA2B;IACrF,OAAO,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACpH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proteinjs/build",
3
- "version": "1.0.10",
3
+ "version": "1.0.12",
4
4
  "description": "Workspace build tools",
5
5
  "main": "./dist/generated/index.js",
6
6
  "types": "./dist/generated/index.d.ts",
@@ -8,7 +8,8 @@
8
8
  "clean-workspace": "dist/src/runCleanWorkspace.js",
9
9
  "build-workspace": "dist/src/runBuildWorkspace.js",
10
10
  "test-workspace": "dist/src/runTestWorkspace.js",
11
- "watch-workspace": "dist/src/runWatchWorkspace.js"
11
+ "watch-workspace": "dist/src/runWatchWorkspace.js",
12
+ "workspace": "dist/src/runWorkspaceCommand.js"
12
13
  },
13
14
  "publishConfig": {
14
15
  "access": "public"
@@ -31,7 +32,7 @@
31
32
  },
32
33
  "dependencies": {
33
34
  "@proteinjs/util": "1.0.18",
34
- "@proteinjs/util-node": "1.0.18"
35
+ "@proteinjs/util-node": "1.0.19"
35
36
  },
36
37
  "devDependencies": {
37
38
  "@babel/core": "7.23.7",
@@ -45,5 +46,5 @@
45
46
  "webpack": "5.90.0",
46
47
  "webpack-cli": "5.1.4"
47
48
  },
48
- "gitHead": "ea9190703333d3138601fd6b18a170df84fc161a"
49
+ "gitHead": "0b8812fb65f2925a813349fc00808b2a7bf3581a"
49
50
  }
@@ -1,29 +1,66 @@
1
1
  import * as path from 'path'
2
- import { PackageUtil, WorkspaceMetadata, cmd } from '@proteinjs/util-node'
2
+ import { PackageUtil, cmd, parseArgsMap } from '@proteinjs/util-node'
3
3
  import { Logger } from '@proteinjs/util'
4
4
 
5
- export async function buildWorkspace(workspaceMetadata?: WorkspaceMetadata) {
6
- const logger = new Logger('buildWorkspace');
5
+ /**
6
+ * Install and build workspace, in dependency order.
7
+ *
8
+ * Optional args:
9
+ *
10
+ * --no-install=@some/package,@another/package
11
+ * --no-build=@some/package,@another/package
12
+ * --skip=@some/package,@another/package
13
+ */
14
+ export async function buildWorkspace() {
15
+ const logger = new Logger('workspace:build');
16
+ const args = getArgs();
7
17
  const workspacePath = process.cwd();
8
- logger.info(`> Building workspace (${workspacePath})`);
9
- const { packageMap, sortedPackageNames } = workspaceMetadata ? workspaceMetadata : await PackageUtil.getWorkspaceMetadata(workspacePath);
10
- const filteredPackageNames = sortedPackageNames.filter(packageName => !!packageMap[packageName].packageJson.scripts?.build);
18
+ const { packageMap, sortedPackageNames } = await PackageUtil.getWorkspaceMetadata(workspacePath);
19
+ const filteredPackageNames = sortedPackageNames.filter(packageName => {
20
+ return !!packageMap[packageName].packageJson.scripts?.build &&
21
+ !(args.skip && args.skip.includes(packageName));
22
+ });
23
+
24
+ logger.info(`> Installing and building ${filteredPackageNames.length} package${filteredPackageNames.length != 1 ? 's' : ''} in workspace (${workspacePath})`);
11
25
  logger.debug(`packageMap:\n${JSON.stringify(packageMap, null, 2)}`, true);
12
26
  logger.debug(`filteredPackageNames:\n${JSON.stringify(filteredPackageNames, null, 2)}`, true);
13
-
14
- logger.info(`> Installing and building ${filteredPackageNames.length} package${filteredPackageNames.length != 1 ? 's' : ''}`);
15
27
  for (let packageName of filteredPackageNames) {
16
28
  const localPackage = packageMap[packageName];
17
29
  const packageDir = path.dirname(localPackage.filePath);
18
- await cmd('npm', ['install'], { cwd: packageDir });
19
- await PackageUtil.symlinkDependencies(localPackage, packageMap, logger);
20
- logger.info(`Installed ${packageName} (${packageDir})`);
21
30
 
22
- if (packageName != 'typescript-parser') {
23
- await cmd('npm', ['run', 'build'], { cwd: packageDir });
31
+ if (!args.noInstall || !args.noInstall.includes(packageName)) {
32
+ await cmd('npm', ['install'], { cwd: packageDir }, { logPrefix: `[${packageName}] ` });
33
+ await PackageUtil.symlinkDependencies(localPackage, packageMap, logger);
34
+ logger.info(`Installed ${packageName} (${packageDir})`);
35
+ }
36
+
37
+ if (!args.noBuild || !args.noBuild.includes(packageName)) {
38
+ await cmd('npm', ['run', 'build'], { cwd: packageDir }, { logPrefix: `[${packageName}] ` });
24
39
  logger.info(`Built ${packageName} (${packageDir})`);
25
40
  }
26
41
  }
27
42
 
28
- logger.info(`> Built workspace (${workspacePath})`);
43
+ logger.info(`> Installed and built ${filteredPackageNames.length} package${filteredPackageNames.length != 1 ? 's' : ''} in workspace (${workspacePath})`);
44
+ }
45
+
46
+ type Args = {
47
+ noInstall?: string[],
48
+ noBuild?: string[],
49
+ skip?: string[],
50
+ }
51
+
52
+ function getArgs() {
53
+ const args: Args = {};
54
+ const argsMap = parseArgsMap(process.argv.slice(2));
55
+ for (let argName in argsMap) {
56
+ const argValue = argsMap[argName];
57
+ if (argName == '--no-install' && typeof argValue === 'string')
58
+ args.noInstall = argValue.split(',');
59
+ else if (argName == '--no-build' && typeof argValue === 'string')
60
+ args.noBuild = argValue.split(',');
61
+ else if (argName == '--skip' && typeof argValue === 'string')
62
+ args.skip = argValue.split(',');
63
+ }
64
+
65
+ return args;
29
66
  }
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { workspaceCommand } from './workspaceCommand'
4
+
5
+ workspaceCommand();
@@ -0,0 +1,37 @@
1
+ import * as path from 'path'
2
+ import { LocalPackageMap, PackageUtil, cmd } from '@proteinjs/util-node'
3
+ import { Logger } from '@proteinjs/util'
4
+
5
+ /**
6
+ * Run a npm command against all packages in the workspace, in dependency order.
7
+ *
8
+ * ie: `npx workspace test --skip=@some/package,@another/package`
9
+ *
10
+ * Optional args:
11
+ *
12
+ * --skip=@some/package,@another/package
13
+ */
14
+ export const workspaceCommand = async () => {
15
+ const command = process.argv[2]
16
+ const logger = new Logger(`workspace:${command}`);
17
+ const workspacePath = process.cwd();
18
+ const { packageMap, sortedPackageNames } = await PackageUtil.getWorkspaceMetadata(workspacePath);
19
+ const filteredPackageNames = sortedPackageNames.filter(packageName => hasScript(command, packageName, packageMap));
20
+
21
+ if (filteredPackageNames.length == 0) {
22
+ logger.info(`> There are no packages with the \`${command}\` script in workspace (${workspacePath})`);
23
+ return;
24
+ }
25
+
26
+ logger.info(`> Running \`npm run ${command}\` for ${filteredPackageNames.length} package${filteredPackageNames.length != 1 ? 's' : ''} in workspace (${workspacePath})`);
27
+ for (let packageName of filteredPackageNames) {
28
+ const localPackage = packageMap[packageName];
29
+ const packageDir = path.dirname(localPackage.filePath);
30
+ await cmd('npm', ['run', command], { cwd: packageDir }, { logPrefix: `[${packageName}] ` });
31
+ }
32
+ logger.info(`> Ran \`npm run ${command}\` for ${filteredPackageNames.length} package${filteredPackageNames.length != 1 ? 's' : ''} in workspace (${workspacePath})`);
33
+ }
34
+
35
+ function hasScript(scriptName: string, packageName: string, packageMap: LocalPackageMap) {
36
+ return !!packageMap[packageName].packageJson.scripts && !!packageMap[packageName].packageJson.scripts[scriptName];
37
+ }