@tramvai/cli 2.79.5 → 2.79.7
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/lib/api/start/utils/tips/tips.js +8 -0
- package/lib/api/start/utils/tips/tips.js.map +1 -1
- package/lib/commands/static/application.js +26 -4
- package/lib/commands/static/application.js.map +1 -1
- package/lib/commands/static/static.js +10 -3
- package/lib/commands/static/static.js.map +1 -1
- package/lib/commands/static/utils/handle-server-output.d.ts +2 -0
- package/lib/commands/static/utils/handle-server-output.js +28 -0
- package/lib/commands/static/utils/handle-server-output.js.map +1 -0
- package/lib/models/logger.d.ts +2 -3
- package/lib/models/logger.js +8 -5
- package/lib/models/logger.js.map +1 -1
- package/package.json +3 -2
- package/src/api/start/utils/tips/tips.ts +9 -0
- package/src/commands/static/application.ts +36 -10
- package/src/commands/static/static.ts +10 -2
- package/src/commands/static/utils/handle-server-output.ts +27 -0
- package/src/models/logger.ts +16 -9
|
@@ -125,5 +125,13 @@ Check available render modes in tramvai`,
|
|
|
125
125
|
return !safeRequireResolve('@tramvai/module-page-render-mode');
|
|
126
126
|
},
|
|
127
127
|
},
|
|
128
|
+
{
|
|
129
|
+
text: `Optimize your child-app size by enabling shared dependencies`,
|
|
130
|
+
docLink: 'references/modules/child-app#module-federation-sharing-dependencies',
|
|
131
|
+
isApplicable(di) {
|
|
132
|
+
const { type, shared } = di.get(tokens_1.CONFIG_MANAGER_TOKEN);
|
|
133
|
+
return type === 'child-app' && shared.deps.length === 0;
|
|
134
|
+
},
|
|
135
|
+
},
|
|
128
136
|
];
|
|
129
137
|
//# sourceMappingURL=tips.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tips.js","sourceRoot":"","sources":["../../../../../src/api/start/utils/tips/tips.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tips.js","sourceRoot":"","sources":["../../../../../src/api/start/utils/tips/tips.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ const intersection_1 = tslib_1.__importDefault(require("@tinkoff/utils/array/int
|
|
|
7
7
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
8
8
|
const execa_1 = require("execa");
|
|
9
9
|
const wait_on_1 = tslib_1.__importDefault(require("wait-on"));
|
|
10
|
+
const env_ci_1 = tslib_1.__importDefault(require("env-ci"));
|
|
10
11
|
const configManager_1 = require("../../config/configManager");
|
|
11
12
|
const request_1 = require("./request");
|
|
12
13
|
const generate_1 = require("./generate");
|
|
@@ -15,12 +16,17 @@ const safeRequire_1 = require("../../utils/safeRequire");
|
|
|
15
16
|
const index_1 = require("../index");
|
|
16
17
|
const staticServer_1 = require("./staticServer");
|
|
17
18
|
const server_1 = require("./server");
|
|
19
|
+
const handle_server_output_1 = require("./utils/handle-server-output");
|
|
18
20
|
// eslint-disable-next-line max-statements
|
|
19
21
|
const staticApp = (context, configEntry, options) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
20
|
-
var _a;
|
|
21
22
|
const clientConfigManager = (0, configManager_1.createConfigManager)(configEntry, Object.assign(Object.assign({ env: 'production' }, options), { buildType: 'client', modern: false }));
|
|
22
23
|
const serverConfigManager = clientConfigManager.withSettings({ buildType: 'server' });
|
|
23
24
|
if (options.buildType !== 'none') {
|
|
25
|
+
context.logger.event({
|
|
26
|
+
type: 'debug',
|
|
27
|
+
event: 'COMMAND:STATIC:BUILD',
|
|
28
|
+
message: `message: build step was started`,
|
|
29
|
+
});
|
|
24
30
|
yield index_1.app.run('build', options);
|
|
25
31
|
yield (0, copyStatsJsonFile_1.copyStatsJsonFileToServerDirectory)(clientConfigManager);
|
|
26
32
|
}
|
|
@@ -28,11 +34,21 @@ const staticApp = (context, configEntry, options) => tslib_1.__awaiter(void 0, v
|
|
|
28
34
|
context.logger.event({
|
|
29
35
|
type: 'debug',
|
|
30
36
|
event: 'COMMAND:STATIC:BUILD',
|
|
31
|
-
message: `message: build step skipped`,
|
|
37
|
+
message: `message: build step was skipped`,
|
|
32
38
|
});
|
|
33
39
|
}
|
|
34
40
|
const { name, host, port, staticPort, staticHost, output } = serverConfigManager;
|
|
35
41
|
const root = serverConfigManager.buildPath;
|
|
42
|
+
const assetsPrefix = process.env.ASSETS_PREFIX;
|
|
43
|
+
if (!assetsPrefix) {
|
|
44
|
+
context.logger.event({
|
|
45
|
+
type: 'warning',
|
|
46
|
+
event: 'COMMAND:STATIC:BUILD',
|
|
47
|
+
message: 'message: ASSETS_PREFIX variable is not defined. It will cause ' +
|
|
48
|
+
'of incorrect urls for static assets in your files. Also, some features, ' +
|
|
49
|
+
'like a resources inlining will not work.',
|
|
50
|
+
});
|
|
51
|
+
}
|
|
36
52
|
context.logger.event({
|
|
37
53
|
type: 'debug',
|
|
38
54
|
event: 'COMMAND:STATIC:SERVER_START',
|
|
@@ -40,8 +56,8 @@ const staticApp = (context, configEntry, options) => tslib_1.__awaiter(void 0, v
|
|
|
40
56
|
});
|
|
41
57
|
const server = (0, execa_1.node)(path_1.default.resolve(root, 'server.js'), [], {
|
|
42
58
|
cwd: root,
|
|
43
|
-
|
|
44
|
-
|
|
59
|
+
env: Object.assign(Object.assign(Object.assign({}, (process.env.DANGEROUS_UNSAFE_ENV_FILES === 'true' || !(0, env_ci_1.default)().isCi
|
|
60
|
+
? Object.assign(Object.assign({}, (0, safeRequire_1.safeRequire)(path_1.default.resolve(process.cwd(), 'env.development'), true)), (0, safeRequire_1.safeRequire)(path_1.default.resolve(process.cwd(), 'env'), true)) : {})), process.env), { NODE_ENV: 'production', PORT: `${port}`, PORT_SERVER: `${port}`, ASSETS_PREFIX: assetsPrefix !== null && assetsPrefix !== void 0 ? assetsPrefix : `http://${staticHost}:${staticPort}/${output.client.replace(/\/$/, '')}/` }),
|
|
45
61
|
});
|
|
46
62
|
server.catch((reason) => {
|
|
47
63
|
context.logger.event({
|
|
@@ -51,6 +67,12 @@ const staticApp = (context, configEntry, options) => tslib_1.__awaiter(void 0, v
|
|
|
51
67
|
payload: reason,
|
|
52
68
|
});
|
|
53
69
|
});
|
|
70
|
+
server.stdout.on('data', (chunk) => {
|
|
71
|
+
if (server.killed) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
(0, handle_server_output_1.handleServerOutput)(context.logger, chunk);
|
|
75
|
+
});
|
|
54
76
|
const bundleInfoPath = `http://localhost:${port}/${name}/papi/bundleInfo`;
|
|
55
77
|
yield Promise.race([
|
|
56
78
|
server,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../../src/commands/static/application.ts"],"names":[],"mappings":";;;;AAAA,kFAAkD;AAClD,6FAA6D;AAE7D,wDAAwB;AACxB,iCAA6B;AAC7B,8DAA6B;
|
|
1
|
+
{"version":3,"file":"application.js","sourceRoot":"","sources":["../../../src/commands/static/application.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
3
4
|
const application_1 = require("./application");
|
|
4
|
-
exports.default = (context, parameters) => {
|
|
5
|
+
exports.default = (context, parameters) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
5
6
|
const { target } = parameters;
|
|
6
7
|
const configEntry = context.config.getProject(target);
|
|
7
8
|
if (configEntry.type === 'application') {
|
|
8
|
-
|
|
9
|
+
const result = yield (0, application_1.staticApp)(context, configEntry, parameters);
|
|
10
|
+
context.logger.event({
|
|
11
|
+
type: 'success',
|
|
12
|
+
event: 'COMMAND:STATIC:SUCCESS',
|
|
13
|
+
message: result.message,
|
|
14
|
+
});
|
|
15
|
+
return result;
|
|
9
16
|
}
|
|
10
17
|
throw new Error(`Target '${configEntry.type}' not supported`);
|
|
11
|
-
};
|
|
18
|
+
});
|
|
12
19
|
//# sourceMappingURL=static.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static.js","sourceRoot":"","sources":["../../../src/commands/static/static.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"static.js","sourceRoot":"","sources":["../../../src/commands/static/static.ts"],"names":[],"mappings":";;;AACA,+CAA0C;AAI1C,kBAAe,CAAO,OAAgB,EAAE,UAAU,EAA0B,EAAE;IAC5E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IAC9B,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAEtD,IAAI,WAAW,CAAC,IAAI,KAAK,aAAa,EAAE;QACtC,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAS,EAAC,OAAO,EAAE,WAAqC,EAAE,UAAU,CAAC,CAAC;QAE3F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YACnB,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,wBAAwB;YAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;KACf;IAED,MAAM,IAAI,KAAK,CAAC,WAAW,WAAW,CAAC,IAAI,iBAAiB,CAAC,CAAC;AAChE,CAAC,CAAA,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleServerOutput = void 0;
|
|
4
|
+
const handleServerOutput = (logger, chunk) => {
|
|
5
|
+
const data = chunk.toString('utf-8');
|
|
6
|
+
let type = 'info';
|
|
7
|
+
let message = data;
|
|
8
|
+
let payload = data;
|
|
9
|
+
try {
|
|
10
|
+
const parsed = JSON.parse(data);
|
|
11
|
+
type = parsed.type;
|
|
12
|
+
if (parsed.message) {
|
|
13
|
+
message = parsed.message;
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
payload = '';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
catch (error) { }
|
|
20
|
+
logger.event({
|
|
21
|
+
event: 'COMMAND:STATIC:SERVER',
|
|
22
|
+
type,
|
|
23
|
+
message,
|
|
24
|
+
payload,
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
exports.handleServerOutput = handleServerOutput;
|
|
28
|
+
//# sourceMappingURL=handle-server-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-server-output.js","sourceRoot":"","sources":["../../../../src/commands/static/utils/handle-server-output.ts"],"names":[],"mappings":";;;AAEO,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAE,KAAa,EAAE,EAAE;IAClE,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,IAAI,GAAqB,MAAM,CAAC;IACpC,IAAI,OAAO,GAAwB,IAAI,CAAC;IACxC,IAAI,OAAO,GAAwB,IAAI,CAAC;IAExC,IAAI;QACF,MAAM,MAAM,GAAa,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE1C,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAEnB,IAAI,MAAM,CAAC,OAAO,EAAE;YAClB,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;SAC1B;aAAM;YACL,OAAO,GAAG,EAAE,CAAC;SACd;KACF;IAAC,OAAO,KAAK,EAAE,GAAE;IAElB,MAAM,CAAC,KAAK,CAAC;QACX,KAAK,EAAE,uBAAuB;QAC9B,IAAI;QACJ,OAAO;QACP,OAAO;KACR,CAAC,CAAC;AACL,CAAC,CAAC;AAxBW,QAAA,kBAAkB,sBAwB7B"}
|
package/lib/models/logger.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
interface LogEvent {
|
|
2
|
-
type: 'error' | 'warning' | 'info' | 'debug';
|
|
1
|
+
export interface LogEvent {
|
|
2
|
+
type: 'success' | 'error' | 'warning' | 'info' | 'debug';
|
|
3
3
|
event: string;
|
|
4
4
|
message: string;
|
|
5
5
|
payload?: any;
|
|
@@ -7,4 +7,3 @@ interface LogEvent {
|
|
|
7
7
|
export declare class Logger {
|
|
8
8
|
event(event: LogEvent): void;
|
|
9
9
|
}
|
|
10
|
-
export {};
|
package/lib/models/logger.js
CHANGED
|
@@ -5,15 +5,18 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
6
6
|
class Logger {
|
|
7
7
|
event(event) {
|
|
8
|
-
var _a, _b, _c;
|
|
9
|
-
if (event.type === '
|
|
10
|
-
console.
|
|
8
|
+
var _a, _b, _c, _d;
|
|
9
|
+
if (event.type === 'success') {
|
|
10
|
+
console.log(chalk_1.default.bgGreen(event.type), chalk_1.default.green(event.event), event.message, (_a = event.payload) !== null && _a !== void 0 ? _a : '');
|
|
11
|
+
}
|
|
12
|
+
else if (event.type === 'error') {
|
|
13
|
+
console.error(chalk_1.default.bgRed(event.type), chalk_1.default.red(event.event), event.message, (_b = event.payload) !== null && _b !== void 0 ? _b : '');
|
|
11
14
|
}
|
|
12
15
|
else if (event.type === 'warning') {
|
|
13
|
-
console.warn(chalk_1.default.
|
|
16
|
+
console.warn(chalk_1.default.bgYellow(event.type), chalk_1.default.yellow(event.event), event.message, (_c = event.payload) !== null && _c !== void 0 ? _c : '');
|
|
14
17
|
}
|
|
15
18
|
else if (event.type === 'info' || process.env.DEBUG_MODE === 'true') {
|
|
16
|
-
console.log(chalk_1.default.
|
|
19
|
+
console.log(chalk_1.default.bgMagenta(event.type), chalk_1.default.magenta(event.event), event.message, (_d = event.payload) !== null && _d !== void 0 ? _d : '');
|
|
17
20
|
}
|
|
18
21
|
}
|
|
19
22
|
}
|
package/lib/models/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/models/logger.ts"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAS1B,MAAa,MAAM;IACjB,KAAK,CAAC,KAAe;;QACnB,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/models/logger.ts"],"names":[],"mappings":";;;;AAAA,0DAA0B;AAS1B,MAAa,MAAM;IACjB,KAAK,CAAC,KAAe;;QACnB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;YAC5B,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EACzB,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EACxB,KAAK,CAAC,OAAO,EACb,MAAA,KAAK,CAAC,OAAO,mCAAI,EAAE,CACpB,CAAC;SACH;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YACjC,OAAO,CAAC,KAAK,CACX,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EACvB,eAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EACtB,KAAK,CAAC,OAAO,EACb,MAAA,KAAK,CAAC,OAAO,mCAAI,EAAE,CACpB,CAAC;SACH;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;YACnC,OAAO,CAAC,IAAI,CACV,eAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAC1B,eAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EACzB,KAAK,CAAC,OAAO,EACb,MAAA,KAAK,CAAC,OAAO,mCAAI,EAAE,CACpB,CAAC;SACH;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,MAAM,EAAE;YACrE,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAC3B,eAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAC1B,KAAK,CAAC,OAAO,EACb,MAAA,KAAK,CAAC,OAAO,mCAAI,EAAE,CACpB,CAAC;SACH;IACH,CAAC;CACF;AAhCD,wBAgCC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tramvai/cli",
|
|
3
|
-
"version": "2.79.
|
|
3
|
+
"version": "2.79.7",
|
|
4
4
|
"description": "Cli инструмент для сборки и запуска приложений",
|
|
5
5
|
"files": [
|
|
6
6
|
"src",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"@tinkoff/utils": "^2.1.3",
|
|
72
72
|
"@tinkoff/webpack-dedupe-plugin": "1.0.4",
|
|
73
73
|
"@tramvai/build": "3.1.3",
|
|
74
|
-
"@tramvai/react": "2.79.
|
|
74
|
+
"@tramvai/react": "2.79.7",
|
|
75
75
|
"@tramvai/tools-check-versions": "0.4.10",
|
|
76
76
|
"@tramvai/tools-migrate": "0.6.13",
|
|
77
77
|
"ajv": "^6.12.6",
|
|
@@ -114,6 +114,7 @@
|
|
|
114
114
|
"ini": "^3.0.1",
|
|
115
115
|
"inquirer": "^7.3.3",
|
|
116
116
|
"inquirer-autocomplete-prompt": "^1.4.0",
|
|
117
|
+
"env-ci": "^5.0.2",
|
|
117
118
|
"inspectpack": "^4.7.1",
|
|
118
119
|
"latest-version": "^5.0.0",
|
|
119
120
|
"less": "^3.13.1",
|
|
@@ -139,4 +139,13 @@ Check available render modes in tramvai`,
|
|
|
139
139
|
return !safeRequireResolve('@tramvai/module-page-render-mode');
|
|
140
140
|
},
|
|
141
141
|
},
|
|
142
|
+
{
|
|
143
|
+
text: `Optimize your child-app size by enabling shared dependencies`,
|
|
144
|
+
docLink: 'references/modules/child-app#module-federation-sharing-dependencies',
|
|
145
|
+
isApplicable(di) {
|
|
146
|
+
const { type, shared } = di.get(CONFIG_MANAGER_TOKEN);
|
|
147
|
+
|
|
148
|
+
return type === 'child-app' && shared.deps.length === 0;
|
|
149
|
+
},
|
|
150
|
+
},
|
|
142
151
|
];
|
|
@@ -4,22 +4,20 @@ import intersection from '@tinkoff/utils/array/intersection';
|
|
|
4
4
|
import path from 'path';
|
|
5
5
|
import { node } from 'execa';
|
|
6
6
|
import waitOn from 'wait-on';
|
|
7
|
+
import envCi from 'env-ci';
|
|
7
8
|
import type { Context } from '../../models/context';
|
|
8
|
-
import webpackBuild from '../../utils/webpackBuild';
|
|
9
|
-
import { webpackClientConfig } from '../../library/webpack/application/client/prod';
|
|
10
|
-
import { webpackServerConfig } from '../../library/webpack/application/server/prod';
|
|
11
9
|
import type { CommandResult } from '../../models/command';
|
|
12
10
|
import type { ApplicationConfigEntry } from '../../typings/configEntry/application';
|
|
13
11
|
import type { Params } from './command';
|
|
14
12
|
import { createConfigManager } from '../../config/configManager';
|
|
15
13
|
import { request } from './request';
|
|
16
14
|
import { generateStatic } from './generate';
|
|
17
|
-
import { toWebpackConfig } from '../../library/webpack/utils/toWebpackConfig';
|
|
18
15
|
import { copyStatsJsonFileToServerDirectory } from '../../builder/webpack/utils/copyStatsJsonFile';
|
|
19
16
|
import { safeRequire } from '../../utils/safeRequire';
|
|
20
17
|
import { app } from '../index';
|
|
21
18
|
import { startStaticServer } from './staticServer';
|
|
22
19
|
import { startServer } from './server';
|
|
20
|
+
import { handleServerOutput } from './utils/handle-server-output';
|
|
23
21
|
|
|
24
22
|
// eslint-disable-next-line max-statements
|
|
25
23
|
export const staticApp = async (
|
|
@@ -36,18 +34,37 @@ export const staticApp = async (
|
|
|
36
34
|
const serverConfigManager = clientConfigManager.withSettings({ buildType: 'server' });
|
|
37
35
|
|
|
38
36
|
if (options.buildType !== 'none') {
|
|
37
|
+
context.logger.event({
|
|
38
|
+
type: 'debug',
|
|
39
|
+
event: 'COMMAND:STATIC:BUILD',
|
|
40
|
+
message: `message: build step was started`,
|
|
41
|
+
});
|
|
42
|
+
|
|
39
43
|
await app.run('build', options);
|
|
44
|
+
|
|
40
45
|
await copyStatsJsonFileToServerDirectory(clientConfigManager);
|
|
41
46
|
} else {
|
|
42
47
|
context.logger.event({
|
|
43
48
|
type: 'debug',
|
|
44
49
|
event: 'COMMAND:STATIC:BUILD',
|
|
45
|
-
message: `message: build step skipped`,
|
|
50
|
+
message: `message: build step was skipped`,
|
|
46
51
|
});
|
|
47
52
|
}
|
|
48
53
|
|
|
49
54
|
const { name, host, port, staticPort, staticHost, output } = serverConfigManager;
|
|
50
55
|
const root = serverConfigManager.buildPath;
|
|
56
|
+
const assetsPrefix = process.env.ASSETS_PREFIX;
|
|
57
|
+
|
|
58
|
+
if (!assetsPrefix) {
|
|
59
|
+
context.logger.event({
|
|
60
|
+
type: 'warning',
|
|
61
|
+
event: 'COMMAND:STATIC:BUILD',
|
|
62
|
+
message:
|
|
63
|
+
'message: ASSETS_PREFIX variable is not defined. It will cause ' +
|
|
64
|
+
'of incorrect urls for static assets in your files. Also, some features, ' +
|
|
65
|
+
'like a resources inlining will not work.',
|
|
66
|
+
});
|
|
67
|
+
}
|
|
51
68
|
|
|
52
69
|
context.logger.event({
|
|
53
70
|
type: 'debug',
|
|
@@ -57,17 +74,19 @@ export const staticApp = async (
|
|
|
57
74
|
|
|
58
75
|
const server = node(path.resolve(root, 'server.js'), [], {
|
|
59
76
|
cwd: root,
|
|
60
|
-
stdio: 'inherit',
|
|
61
77
|
env: {
|
|
62
|
-
...
|
|
63
|
-
|
|
78
|
+
...(process.env.DANGEROUS_UNSAFE_ENV_FILES === 'true' || !envCi().isCi
|
|
79
|
+
? {
|
|
80
|
+
...safeRequire(path.resolve(process.cwd(), 'env.development'), true),
|
|
81
|
+
...safeRequire(path.resolve(process.cwd(), 'env'), true),
|
|
82
|
+
}
|
|
83
|
+
: {}),
|
|
64
84
|
...process.env,
|
|
65
85
|
NODE_ENV: 'production',
|
|
66
86
|
PORT: `${port}`,
|
|
67
87
|
PORT_SERVER: `${port}`,
|
|
68
88
|
ASSETS_PREFIX:
|
|
69
|
-
|
|
70
|
-
`http://${staticHost}:${staticPort}/${output.client.replace(/\/$/, '')}/`,
|
|
89
|
+
assetsPrefix ?? `http://${staticHost}:${staticPort}/${output.client.replace(/\/$/, '')}/`,
|
|
71
90
|
},
|
|
72
91
|
});
|
|
73
92
|
|
|
@@ -79,6 +98,13 @@ export const staticApp = async (
|
|
|
79
98
|
payload: reason,
|
|
80
99
|
});
|
|
81
100
|
});
|
|
101
|
+
server.stdout.on('data', (chunk: Buffer) => {
|
|
102
|
+
if (server.killed) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
handleServerOutput(context.logger, chunk);
|
|
107
|
+
});
|
|
82
108
|
|
|
83
109
|
const bundleInfoPath = `http://localhost:${port}/${name}/papi/bundleInfo`;
|
|
84
110
|
|
|
@@ -3,12 +3,20 @@ import { staticApp } from './application';
|
|
|
3
3
|
import type { CommandResult } from '../../models/command';
|
|
4
4
|
import type { ApplicationConfigEntry } from '../../typings/configEntry/application';
|
|
5
5
|
|
|
6
|
-
export default (context: Context, parameters): Promise<CommandResult> => {
|
|
6
|
+
export default async (context: Context, parameters): Promise<CommandResult> => {
|
|
7
7
|
const { target } = parameters;
|
|
8
8
|
const configEntry = context.config.getProject(target);
|
|
9
9
|
|
|
10
10
|
if (configEntry.type === 'application') {
|
|
11
|
-
|
|
11
|
+
const result = await staticApp(context, configEntry as ApplicationConfigEntry, parameters);
|
|
12
|
+
|
|
13
|
+
context.logger.event({
|
|
14
|
+
type: 'success',
|
|
15
|
+
event: 'COMMAND:STATIC:SUCCESS',
|
|
16
|
+
message: result.message,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
return result;
|
|
12
20
|
}
|
|
13
21
|
|
|
14
22
|
throw new Error(`Target '${configEntry.type}' not supported`);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { LogEvent, Logger } from '../../../models/logger';
|
|
2
|
+
|
|
3
|
+
export const handleServerOutput = (logger: Logger, chunk: Buffer) => {
|
|
4
|
+
const data = chunk.toString('utf-8');
|
|
5
|
+
let type: LogEvent['type'] = 'info';
|
|
6
|
+
let message: LogEvent['message'] = data;
|
|
7
|
+
let payload: LogEvent['payload'] = data;
|
|
8
|
+
|
|
9
|
+
try {
|
|
10
|
+
const parsed: LogEvent = JSON.parse(data);
|
|
11
|
+
|
|
12
|
+
type = parsed.type;
|
|
13
|
+
|
|
14
|
+
if (parsed.message) {
|
|
15
|
+
message = parsed.message;
|
|
16
|
+
} else {
|
|
17
|
+
payload = '';
|
|
18
|
+
}
|
|
19
|
+
} catch (error) {}
|
|
20
|
+
|
|
21
|
+
logger.event({
|
|
22
|
+
event: 'COMMAND:STATIC:SERVER',
|
|
23
|
+
type,
|
|
24
|
+
message,
|
|
25
|
+
payload,
|
|
26
|
+
});
|
|
27
|
+
};
|
package/src/models/logger.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
|
|
3
|
-
interface LogEvent {
|
|
4
|
-
type: 'error' | 'warning' | 'info' | 'debug';
|
|
3
|
+
export interface LogEvent {
|
|
4
|
+
type: 'success' | 'error' | 'warning' | 'info' | 'debug';
|
|
5
5
|
event: string; // уникальный идентификатор
|
|
6
6
|
message: string;
|
|
7
7
|
payload?: any;
|
|
@@ -9,24 +9,31 @@ interface LogEvent {
|
|
|
9
9
|
|
|
10
10
|
export class Logger {
|
|
11
11
|
event(event: LogEvent): void {
|
|
12
|
-
if (event.type === '
|
|
12
|
+
if (event.type === 'success') {
|
|
13
|
+
console.log(
|
|
14
|
+
chalk.bgGreen(event.type),
|
|
15
|
+
chalk.green(event.event),
|
|
16
|
+
event.message,
|
|
17
|
+
event.payload ?? ''
|
|
18
|
+
);
|
|
19
|
+
} else if (event.type === 'error') {
|
|
13
20
|
console.error(
|
|
14
|
-
chalk.
|
|
15
|
-
chalk.
|
|
21
|
+
chalk.bgRed(event.type),
|
|
22
|
+
chalk.red(event.event),
|
|
16
23
|
event.message,
|
|
17
24
|
event.payload ?? ''
|
|
18
25
|
);
|
|
19
26
|
} else if (event.type === 'warning') {
|
|
20
27
|
console.warn(
|
|
21
|
-
chalk.
|
|
22
|
-
chalk.
|
|
28
|
+
chalk.bgYellow(event.type),
|
|
29
|
+
chalk.yellow(event.event),
|
|
23
30
|
event.message,
|
|
24
31
|
event.payload ?? ''
|
|
25
32
|
);
|
|
26
33
|
} else if (event.type === 'info' || process.env.DEBUG_MODE === 'true') {
|
|
27
34
|
console.log(
|
|
28
|
-
chalk.
|
|
29
|
-
chalk.
|
|
35
|
+
chalk.bgMagenta(event.type),
|
|
36
|
+
chalk.magenta(event.event),
|
|
30
37
|
event.message,
|
|
31
38
|
event.payload ?? ''
|
|
32
39
|
);
|