@proteinjs/build 1.1.4 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/LICENSE +21 -0
- package/dist/src/bin/runBuildWorkspace.d.ts.map +1 -0
- package/dist/src/{runBuildWorkspace.js → bin/runBuildWorkspace.js} +1 -1
- package/dist/src/bin/runBuildWorkspace.js.map +1 -0
- package/dist/src/bin/runCleanWorkspace.d.ts.map +1 -0
- package/dist/src/{runCleanWorkspace.js → bin/runCleanWorkspace.js} +1 -1
- package/dist/src/bin/runCleanWorkspace.js.map +1 -0
- package/dist/src/bin/runTestWorkspace.d.ts.map +1 -0
- package/dist/src/{runTestWorkspace.js → bin/runTestWorkspace.js} +1 -1
- package/dist/src/bin/runTestWorkspace.js.map +1 -0
- package/dist/src/bin/runVersionWorkspace.d.ts.map +1 -0
- package/dist/src/{runVersionWorkspace.js → bin/runVersionWorkspace.js} +1 -1
- package/dist/src/bin/runVersionWorkspace.js.map +1 -0
- package/dist/src/bin/runWatchWorkspace.d.ts.map +1 -0
- package/dist/src/{runWatchWorkspace.js → bin/runWatchWorkspace.js} +1 -1
- package/dist/src/bin/runWatchWorkspace.js.map +1 -0
- package/dist/src/bin/runWorkspaceCommand.d.ts.map +1 -0
- package/dist/src/{runWorkspaceCommand.js → bin/runWorkspaceCommand.js} +1 -1
- package/dist/src/bin/runWorkspaceCommand.js.map +1 -0
- package/dist/src/bin/runWorkspacePackageCommand.d.ts.map +1 -0
- package/dist/src/{runWorkspacePackageCommand.js → bin/runWorkspacePackageCommand.js} +1 -1
- package/dist/src/bin/runWorkspacePackageCommand.js.map +1 -0
- package/dist/src/buildWorkspace.d.ts.map +1 -1
- package/dist/src/buildWorkspace.js +8 -6
- package/dist/src/buildWorkspace.js.map +1 -1
- package/dist/src/cleanWorkspace.js +1 -1
- package/dist/src/cleanWorkspace.js.map +1 -1
- package/dist/src/logColors.d.ts +11 -0
- package/dist/src/logColors.d.ts.map +1 -0
- package/dist/src/logColors.js +6 -0
- package/dist/src/logColors.js.map +1 -0
- package/dist/src/testWorkspace.js +1 -1
- package/dist/src/testWorkspace.js.map +1 -1
- package/dist/src/versionWorkspace.d.ts.map +1 -1
- package/dist/src/versionWorkspace.js +229 -68
- package/dist/src/versionWorkspace.js.map +1 -1
- package/dist/src/watchWorkspace.d.ts.map +1 -1
- package/dist/src/watchWorkspace.js +5 -3
- package/dist/src/watchWorkspace.js.map +1 -1
- package/dist/src/workspaceCommand.d.ts.map +1 -1
- package/dist/src/workspaceCommand.js +5 -3
- package/dist/src/workspaceCommand.js.map +1 -1
- package/dist/src/workspacePackageCommand.d.ts.map +1 -1
- package/dist/src/workspacePackageCommand.js +6 -4
- package/dist/src/workspacePackageCommand.js.map +1 -1
- package/package.json +15 -12
- package/src/bin/runBuildWorkspace.ts +5 -0
- package/src/bin/runCleanWorkspace.ts +5 -0
- package/src/bin/runTestWorkspace.ts +5 -0
- package/src/bin/runVersionWorkspace.ts +5 -0
- package/src/bin/runWatchWorkspace.ts +5 -0
- package/src/bin/runWorkspaceCommand.ts +5 -0
- package/src/bin/runWorkspacePackageCommand.ts +5 -0
- package/src/buildWorkspace.ts +8 -6
- package/src/cleanWorkspace.ts +1 -1
- package/src/logColors.ts +2 -0
- package/src/testWorkspace.ts +1 -1
- package/src/versionWorkspace.ts +139 -43
- package/src/watchWorkspace.ts +5 -3
- package/src/workspaceCommand.ts +5 -3
- package/src/workspacePackageCommand.ts +6 -4
- package/dist/src/runBuildWorkspace.d.ts.map +0 -1
- package/dist/src/runBuildWorkspace.js.map +0 -1
- package/dist/src/runCleanWorkspace.d.ts.map +0 -1
- package/dist/src/runCleanWorkspace.js.map +0 -1
- package/dist/src/runTestWorkspace.d.ts.map +0 -1
- package/dist/src/runTestWorkspace.js.map +0 -1
- package/dist/src/runVersionWorkspace.d.ts.map +0 -1
- package/dist/src/runVersionWorkspace.js.map +0 -1
- package/dist/src/runWatchWorkspace.d.ts.map +0 -1
- package/dist/src/runWatchWorkspace.js.map +0 -1
- package/dist/src/runWorkspaceCommand.d.ts.map +0 -1
- package/dist/src/runWorkspaceCommand.js.map +0 -1
- package/dist/src/runWorkspacePackageCommand.d.ts.map +0 -1
- package/dist/src/runWorkspacePackageCommand.js.map +0 -1
- package/src/runBuildWorkspace.ts +0 -5
- package/src/runCleanWorkspace.ts +0 -5
- package/src/runTestWorkspace.ts +0 -5
- package/src/runVersionWorkspace.ts +0 -5
- package/src/runWatchWorkspace.ts +0 -5
- package/src/runWorkspaceCommand.ts +0 -5
- package/src/runWorkspacePackageCommand.ts +0 -5
- /package/dist/src/{runBuildWorkspace.d.ts → bin/runBuildWorkspace.d.ts} +0 -0
- /package/dist/src/{runCleanWorkspace.d.ts → bin/runCleanWorkspace.d.ts} +0 -0
- /package/dist/src/{runTestWorkspace.d.ts → bin/runTestWorkspace.d.ts} +0 -0
- /package/dist/src/{runVersionWorkspace.d.ts → bin/runVersionWorkspace.d.ts} +0 -0
- /package/dist/src/{runWatchWorkspace.d.ts → bin/runWatchWorkspace.d.ts} +0 -0
- /package/dist/src/{runWorkspaceCommand.d.ts → bin/runWorkspaceCommand.d.ts} +0 -0
- /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
|
-
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA4B;AAC5B,
|
|
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":"
|
|
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
|
-
|
|
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,
|
|
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.
|
|
3
|
+
"version": "1.2.0",
|
|
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"
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"author": "Brent Bahry",
|
|
28
28
|
"license": "MIT",
|
|
29
29
|
"scripts": {
|
|
30
|
-
"clean": "rm -rf dist/ node_modules/
|
|
30
|
+
"clean": "rm -rf dist/ node_modules/",
|
|
31
31
|
"build": "tsc",
|
|
32
32
|
"watch": "tsc -w -p .",
|
|
33
33
|
"build-dist": "tsc && webpack --mode production"
|
|
@@ -35,18 +35,21 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@octokit/core": "6.1.2",
|
|
37
37
|
"@proteinjs/util": "1.1.0",
|
|
38
|
-
"@proteinjs/util-node": "1.
|
|
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",
|
|
48
50
|
"typescript": "5.2.2",
|
|
49
51
|
"webpack": "5.90.0",
|
|
50
52
|
"webpack-cli": "5.1.4"
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
+
},
|
|
54
|
+
"gitHead": "93d31ea6e722a8e5e926a051f29f2df3e9fac04a"
|
|
55
|
+
}
|
package/src/buildWorkspace.ts
CHANGED
|
@@ -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
|
|
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
|
|
package/src/cleanWorkspace.ts
CHANGED
|
@@ -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('
|
|
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);
|
package/src/logColors.ts
ADDED
package/src/testWorkspace.ts
CHANGED
|
@@ -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('
|
|
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);
|
package/src/versionWorkspace.ts
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
logger.info(`(${localPackage.name})
|
|
136
|
-
await cmd('npm', ['
|
|
137
|
-
logger.info(`(${localPackage.name})
|
|
189
|
+
logger.info(`(${cw.color(localPackage.name)}) cleaning package (${packageDir})`);
|
|
190
|
+
await cmd('npm', ['run', 'clean'], { cwd: packageDir }, { logPrefix: `[${cw.color(localPackage.name)}] ` });
|
|
191
|
+
logger.info(`(${cw.color(localPackage.name)}) cleaned package (${packageDir})`);
|
|
192
|
+
logger.info(`(${cw.color(localPackage.name)}) installing latest dependency versions (${packageDir})`);
|
|
193
|
+
await cmd('npm', ['install'], { cwd: packageDir }, { logPrefix: `[${cw.color(localPackage.name)}] ` });
|
|
194
|
+
logger.info(`(${cw.color(localPackage.name)}) installed latest dependency versions (${packageDir})`);
|
|
195
|
+
logger.info(`(${cw.color(localPackage.name)}) building version ${localPackage.packageJson.version} (${packageDir})`);
|
|
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
|
-
|
|
140
|
-
|
|
199
|
+
logger.info(`(${cw.color(localPackage.name)}) testing version ${localPackage.packageJson.version} (${packageDir})`);
|
|
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} (${packageDir})`);
|
|
141
202
|
}
|
|
142
203
|
}
|
|
143
204
|
|
|
144
205
|
async function pull(localPackage: LocalPackage) {
|
|
145
206
|
const packageDir = path.dirname(localPackage.filePath);
|
|
146
|
-
|
|
147
|
-
|
|
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
|
|
212
|
+
async function pushAndTag(localPackage: LocalPackage): Promise<Commit> {
|
|
151
213
|
const packageDir = path.dirname(localPackage.filePath);
|
|
152
|
-
|
|
153
|
-
await cmd('git', ['
|
|
154
|
-
await cmd('git', ['
|
|
155
|
-
|
|
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 ${cw.color(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
|
-
|
|
161
|
-
await cmd('git', ['
|
|
162
|
-
|
|
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
|
|
|
@@ -173,10 +255,23 @@ async function pushMetarepos(dir: string) {
|
|
|
173
255
|
}
|
|
174
256
|
|
|
175
257
|
async function pushMetarepo(dir: string) {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
await cmd('git', ['
|
|
179
|
-
|
|
258
|
+
const repoName = path.basename(dir.endsWith(path.sep) ? dir.slice(0, -1) : 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})`);
|
|
180
275
|
}
|
|
181
276
|
|
|
182
277
|
async function getLatestCommitSha(dir: string): Promise<string> {
|
|
@@ -223,19 +318,20 @@ async function getRepoInfo(dir: string): Promise<RepoInfo> {
|
|
|
223
318
|
|
|
224
319
|
async function publish(localPackage: LocalPackage) {
|
|
225
320
|
if (localPackage.packageJson.private) {
|
|
226
|
-
logger.info(`Preventing publish of private package: ${localPackage.name}`);
|
|
321
|
+
logger.info(`Preventing publish of private package: ${cw.color(localPackage.name)}`);
|
|
227
322
|
return;
|
|
228
323
|
}
|
|
229
324
|
|
|
230
325
|
if (!localPackage.name.startsWith('@proteinjs/')) {
|
|
231
|
-
logger.warn(`Preventing publish of non-proteinjs package: ${localPackage.name}`);
|
|
326
|
+
logger.warn(`Preventing publish of non-proteinjs package: ${cw.color(localPackage.name)}`);
|
|
232
327
|
return;
|
|
233
328
|
}
|
|
234
329
|
|
|
235
330
|
const packageDir = path.dirname(localPackage.filePath);
|
|
236
|
-
|
|
237
|
-
await cmd('npm', ['
|
|
238
|
-
|
|
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})`);
|
|
239
335
|
}
|
|
240
336
|
|
|
241
337
|
function getNpmToken() {
|
package/src/watchWorkspace.ts
CHANGED
|
@@ -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
|
|
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'))
|
package/src/workspaceCommand.ts
CHANGED
|
@@ -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
|
|
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
|
|
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
|
}
|