@proteinjs/build 1.0.10 → 1.0.11
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 +8 -0
- package/dist/src/buildWorkspace.d.ts +10 -2
- package/dist/src/buildWorkspace.d.ts.map +1 -1
- package/dist/src/buildWorkspace.js +58 -34
- package/dist/src/buildWorkspace.js.map +1 -1
- package/dist/src/runWorkspaceCommand.d.ts +3 -0
- package/dist/src/runWorkspaceCommand.d.ts.map +1 -0
- package/dist/src/runWorkspaceCommand.js +6 -0
- package/dist/src/runWorkspaceCommand.js.map +1 -0
- package/dist/src/workspaceCommand.d.ts +11 -0
- package/dist/src/workspaceCommand.d.ts.map +1 -0
- package/dist/src/workspaceCommand.js +112 -0
- package/dist/src/workspaceCommand.js.map +1 -0
- package/package.json +5 -4
- package/src/buildWorkspace.ts +51 -14
- package/src/runWorkspaceCommand.ts +5 -0
- package/src/workspaceCommand.ts +32 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
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.11](https://github.com/proteinjs/build/compare/@proteinjs/build@1.0.10...@proteinjs/build@1.0.11) (2024-04-18)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @proteinjs/build
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
6
14
|
## [1.0.10](https://github.com/proteinjs/build/compare/@proteinjs/build@1.0.9...@proteinjs/build@1.0.10) (2024-04-17)
|
|
7
15
|
|
|
8
16
|
**Note:** Version bump only for package @proteinjs/build
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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":"
|
|
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
|
-
|
|
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,
|
|
69
|
-
return __generator(this, function (
|
|
70
|
-
switch (
|
|
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('
|
|
81
|
+
logger = new util_1.Logger('workspace:build');
|
|
82
|
+
args = getArgs();
|
|
73
83
|
workspacePath = process.cwd();
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
_b =
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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
|
-
|
|
90
|
-
case
|
|
91
|
-
if (!(_i < filteredPackageNames_1.length)) return [3 /*break*/,
|
|
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
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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
|
|
100
|
-
|
|
107
|
+
case 4:
|
|
108
|
+
_b.sent();
|
|
101
109
|
logger.info("Installed ".concat(packageName, " (").concat(packageDir, ")"));
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
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
|
-
|
|
108
|
-
case
|
|
117
|
+
_b.label = 7;
|
|
118
|
+
case 7:
|
|
109
119
|
_i++;
|
|
110
|
-
return [3 /*break*/,
|
|
111
|
-
case
|
|
112
|
-
logger.info(">
|
|
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,
|
|
1
|
+
{"version":3,"file":"buildWorkspace.js","sourceRoot":"","sources":["../../src/buildWorkspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runWorkspaceCommand.d.ts","sourceRoot":"","sources":["../../src/runWorkspaceCommand.ts"],"names":[],"mappings":""}
|
|
@@ -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,qBAc5B,CAAA"}
|
|
@@ -0,0 +1,112 @@
|
|
|
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
|
+
logger.info("> Running `npm run ".concat(command, "` for ").concat(filteredPackageNames.length, " package").concat(filteredPackageNames.length != 1 ? 's' : '', " in workspace (").concat(workspacePath, ")"));
|
|
88
|
+
_i = 0, filteredPackageNames_1 = filteredPackageNames;
|
|
89
|
+
_b.label = 2;
|
|
90
|
+
case 2:
|
|
91
|
+
if (!(_i < filteredPackageNames_1.length)) return [3 /*break*/, 5];
|
|
92
|
+
packageName = filteredPackageNames_1[_i];
|
|
93
|
+
localPackage = packageMap[packageName];
|
|
94
|
+
packageDir = path.dirname(localPackage.filePath);
|
|
95
|
+
return [4 /*yield*/, (0, util_node_1.cmd)('npm', ['run', command], { cwd: packageDir }, { logPrefix: "[".concat(packageName, "] ") })];
|
|
96
|
+
case 3:
|
|
97
|
+
_b.sent();
|
|
98
|
+
_b.label = 4;
|
|
99
|
+
case 4:
|
|
100
|
+
_i++;
|
|
101
|
+
return [3 /*break*/, 2];
|
|
102
|
+
case 5:
|
|
103
|
+
logger.info("> Ran `npm run ".concat(command, "` for ").concat(filteredPackageNames.length, " package").concat(filteredPackageNames.length != 1 ? 's' : '', " in workspace (").concat(workspacePath, ")"));
|
|
104
|
+
return [2 /*return*/];
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}); };
|
|
108
|
+
exports.workspaceCommand = workspaceCommand;
|
|
109
|
+
function hasScript(scriptName, packageName, packageMap) {
|
|
110
|
+
return !!packageMap[packageName].packageJson.scripts && !!packageMap[packageName].packageJson.scripts[scriptName];
|
|
111
|
+
}
|
|
112
|
+
//# 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,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;AAdY,QAAA,gBAAgB,oBAc5B;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.
|
|
3
|
+
"version": "1.0.11",
|
|
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.
|
|
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": "
|
|
49
|
+
"gitHead": "658fb5a910e9638cd070cc3707c3d8e1e085b343"
|
|
49
50
|
}
|
package/src/buildWorkspace.ts
CHANGED
|
@@ -1,29 +1,66 @@
|
|
|
1
1
|
import * as path from 'path'
|
|
2
|
-
import { PackageUtil,
|
|
2
|
+
import { PackageUtil, cmd, parseArgsMap } from '@proteinjs/util-node'
|
|
3
3
|
import { Logger } from '@proteinjs/util'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
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 (
|
|
23
|
-
await cmd('npm', ['
|
|
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(`>
|
|
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,32 @@
|
|
|
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
|
+
logger.info(`> Running \`npm run ${command}\` for ${filteredPackageNames.length} package${filteredPackageNames.length != 1 ? 's' : ''} in workspace (${workspacePath})`);
|
|
22
|
+
for (let packageName of filteredPackageNames) {
|
|
23
|
+
const localPackage = packageMap[packageName];
|
|
24
|
+
const packageDir = path.dirname(localPackage.filePath);
|
|
25
|
+
await cmd('npm', ['run', command], { cwd: packageDir }, { logPrefix: `[${packageName}] ` });
|
|
26
|
+
}
|
|
27
|
+
logger.info(`> Ran \`npm run ${command}\` for ${filteredPackageNames.length} package${filteredPackageNames.length != 1 ? 's' : ''} in workspace (${workspacePath})`);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function hasScript(scriptName: string, packageName: string, packageMap: LocalPackageMap) {
|
|
31
|
+
return !!packageMap[packageName].packageJson.scripts && !!packageMap[packageName].packageJson.scripts[scriptName];
|
|
32
|
+
}
|