@tramvai/cli 2.33.3 → 2.34.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/lib/api/index.d.ts +1 -0
- package/lib/api/index.js +1 -0
- package/lib/api/index.js.map +1 -1
- package/lib/library/webpack/blocks/filesClient.js +8 -13
- package/lib/library/webpack/blocks/filesClient.js.map +1 -1
- package/lib/library/webpack/blocks/filesServer.js +8 -13
- package/lib/library/webpack/blocks/filesServer.js.map +1 -1
- package/lib/library/webpack/blocks/js.js +8 -30
- package/lib/library/webpack/blocks/js.js.map +1 -1
- package/lib/library/webpack/blocks/ts.js +3 -27
- package/lib/library/webpack/blocks/ts.js.map +1 -1
- package/lib/library/webpack/utils/files.d.ts +6 -0
- package/lib/library/webpack/utils/files.js +31 -0
- package/lib/library/webpack/utils/files.js.map +1 -0
- package/lib/library/webpack/utils/transpiler.d.ts +17 -0
- package/lib/library/webpack/utils/transpiler.js +36 -0
- package/lib/library/webpack/utils/transpiler.js.map +1 -0
- package/lib/typings/public.d.ts +7 -0
- package/lib/typings/public.js +3 -0
- package/lib/typings/public.js.map +1 -0
- package/package.json +4 -2
- package/src/api/index.ts +1 -0
- package/src/commands/new/templates/shared/typings.d.ts.hbs +33 -0
- package/src/library/webpack/blocks/filesClient.ts +7 -10
- package/src/library/webpack/blocks/filesServer.ts +7 -10
- package/src/library/webpack/blocks/js.ts +9 -37
- package/src/library/webpack/blocks/ts.ts +3 -28
- package/src/library/webpack/utils/files.ts +37 -0
- package/src/library/webpack/utils/transpiler.ts +41 -0
- package/src/typings/public.ts +9 -0
package/lib/api/index.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export { lessWebpackRulesFactory } from '../library/webpack/blocks/less';
|
|
|
15
15
|
export { postcssAssetsWebpackRulesFactory } from '../library/webpack/blocks/postcssAssets';
|
|
16
16
|
export { extractCssPluginFactory } from '../library/webpack/blocks/extractCssPlugin';
|
|
17
17
|
export { configToEnv } from '../library/webpack/blocks/configToEnv';
|
|
18
|
+
export * from '../typings/public';
|
|
18
19
|
export declare const start: StartCommand;
|
|
19
20
|
export declare const build: BuildCommand;
|
|
20
21
|
export declare const benchmark: BenchmarkCommand;
|
package/lib/api/index.js
CHANGED
|
@@ -28,6 +28,7 @@ var extractCssPlugin_1 = require("../library/webpack/blocks/extractCssPlugin");
|
|
|
28
28
|
Object.defineProperty(exports, "extractCssPluginFactory", { enumerable: true, get: function () { return extractCssPlugin_1.extractCssPluginFactory; } });
|
|
29
29
|
var configToEnv_1 = require("../library/webpack/blocks/configToEnv");
|
|
30
30
|
Object.defineProperty(exports, "configToEnv", { enumerable: true, get: function () { return configToEnv_1.configToEnv; } });
|
|
31
|
+
tslib_1.__exportStar(require("../typings/public"), exports);
|
|
31
32
|
const app = (0, createApp_1.createApp)({
|
|
32
33
|
commands: {
|
|
33
34
|
start: () => Promise.resolve().then(() => tslib_1.__importStar(require('./start'))),
|
package/lib/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;;AAAA,6CAAiD;AAEjD,yCAKsB;AACtB,qDAAkD;AAQlD,uDAA6B;AAC7B,yDAAwD;AAA/C,8GAAA,aAAa,OAAA;AACtB,2CAA2E;AAAlE,gHAAA,aAAa,OAA0B;AAChD,8DAA6D;AAApD,oHAAA,gBAAgB,OAAA;AACzB,sDAAqD;AAA5C,4GAAA,YAAY,OAAA;AACrB,0CAAsD;AAA7C,2GAAA,kBAAkB,OAAA;AAC3B,qEAAsF;AAA7E,4HAAA,6BAA6B,OAAA;AACtC,qDAAuE;AAA9D,6GAAA,sBAAsB,OAAA;AAC/B,uDAAyE;AAAhE,+GAAA,uBAAuB,OAAA;AAChC,yEAA2F;AAAlF,iIAAA,gCAAgC,OAAA;AACzC,+EAAqF;AAA5E,2HAAA,uBAAuB,OAAA;AAChC,qEAAoE;AAA3D,0GAAA,WAAW,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,15 +4,19 @@ exports.filesClientWebackRulesFactory = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
6
6
|
const spark_md5_1 = tslib_1.__importDefault(require("spark-md5"));
|
|
7
|
+
const files_1 = require("../utils/files");
|
|
7
8
|
const filesClientWebackRulesFactory = (configManager) => (config) => {
|
|
8
|
-
var _a, _b, _c, _d, _e, _f
|
|
9
|
+
var _a, _b, _c, _d, _e, _f;
|
|
10
|
+
const svgoOptions = (0, files_1.getSvgoOptions)(configManager);
|
|
9
11
|
config.module
|
|
10
12
|
.rule('woff')
|
|
11
13
|
.test(/\.woff2?$/)
|
|
12
14
|
.set('type', 'asset');
|
|
15
|
+
(0, files_1.addSvgrLoader)(configManager, config, svgoOptions);
|
|
13
16
|
config.module
|
|
14
17
|
.rule('svg')
|
|
15
18
|
.test(/\.svg$/)
|
|
19
|
+
.set('resourceQuery', { not: /react/ })
|
|
16
20
|
.set('type', 'asset/resource')
|
|
17
21
|
.set('generator', {
|
|
18
22
|
filename: (pathInfo) => {
|
|
@@ -23,16 +27,7 @@ const filesClientWebackRulesFactory = (configManager) => (config) => {
|
|
|
23
27
|
})
|
|
24
28
|
.use('svg')
|
|
25
29
|
.loader('svgo-loader')
|
|
26
|
-
.options(
|
|
27
|
-
plugins: (_d = (_c = (_b = (_a = configManager.build) === null || _a === void 0 ? void 0 : _a.configurations) === null || _b === void 0 ? void 0 : _b.svgo) === null || _c === void 0 ? void 0 : _c.plugins) !== null && _d !== void 0 ? _d : [
|
|
28
|
-
{
|
|
29
|
-
cleanupIDs: false,
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
collapseGroups: false,
|
|
33
|
-
},
|
|
34
|
-
],
|
|
35
|
-
});
|
|
30
|
+
.options(svgoOptions);
|
|
36
31
|
config.module
|
|
37
32
|
.rule('tramvai-image')
|
|
38
33
|
.test(/\.(png|jpe?g|gif|webp)$/)
|
|
@@ -43,13 +38,13 @@ const filesClientWebackRulesFactory = (configManager) => (config) => {
|
|
|
43
38
|
.rule('video')
|
|
44
39
|
.test(/\.(mp4|webm|avif)$/)
|
|
45
40
|
.set('type', 'asset/resource');
|
|
46
|
-
if ((
|
|
41
|
+
if ((_c = (_b = (_a = configManager.build) === null || _a === void 0 ? void 0 : _a.configurations) === null || _b === void 0 ? void 0 : _b.imageOptimization) === null || _c === void 0 ? void 0 : _c.enabled) {
|
|
47
42
|
config.module
|
|
48
43
|
.rule('image-optimization')
|
|
49
44
|
.test(/\.(gif|png|jpe?g|svg)$/)
|
|
50
45
|
.use('image')
|
|
51
46
|
.loader('image-webpack-loader')
|
|
52
|
-
.options(Object.assign({}, (
|
|
47
|
+
.options(Object.assign({}, (_f = (_e = (_d = configManager.build) === null || _d === void 0 ? void 0 : _d.configurations) === null || _e === void 0 ? void 0 : _e.imageOptimization) === null || _f === void 0 ? void 0 : _f.options))
|
|
53
48
|
.end()
|
|
54
49
|
.enforce('pre');
|
|
55
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesClient.js","sourceRoot":"","sources":["../../../../src/library/webpack/blocks/filesClient.ts"],"names":[],"mappings":";;;;AAAA,wDAAwB;AAExB,kEAAiC;
|
|
1
|
+
{"version":3,"file":"filesClient.js","sourceRoot":"","sources":["../../../../src/library/webpack/blocks/filesClient.ts"],"names":[],"mappings":";;;;AAAA,wDAAwB;AAExB,kEAAiC;AAEjC,0CAA+D;AAExD,MAAM,6BAA6B,GAAG,CAAC,aAA4B,EAAE,EAAE,CAAC,CAAC,MAAc,EAAE,EAAE;;IAChG,MAAM,WAAW,GAAG,IAAA,sBAAc,EAAC,aAAa,CAAC,CAAC;IAElD,MAAM,CAAC,MAAM;SACV,IAAI,CAAC,MAAM,CAAC;SACZ,IAAI,CAAC,WAAW,CAAC;SACjB,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAExB,IAAA,qBAAa,EAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAElD,MAAM,CAAC,MAAM;SACV,IAAI,CAAC,KAAK,CAAC;SACX,IAAI,CAAC,QAAQ,CAAC;SACd,GAAG,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;SACtC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC;SAC7B,GAAG,CAAC,WAAW,EAAE;QAChB,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;YACrB,6DAA6D;YAC7D,sFAAsF;YACtF,OAAO,GAAG,mBAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;QACtF,CAAC;KACF,CAAC;SACD,GAAG,CAAC,KAAK,CAAC;SACV,MAAM,CAAC,aAAa,CAAC;SACrB,OAAO,CAAC,WAAW,CAAC,CAAC;IAExB,MAAM,CAAC,MAAM;SACV,IAAI,CAAC,eAAe,CAAC;SACrB,IAAI,CAAC,yBAAyB,CAAC;SAC/B,GAAG,CAAC,MAAM,CAAC;SACX,MAAM,CAAC,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;SAC1D,GAAG,EAAE,CAAC;IAET,MAAM,CAAC,MAAM;SACV,IAAI,CAAC,OAAO,CAAC;SACb,IAAI,CAAC,oBAAoB,CAAC;SAC1B,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAEjC,IAAI,MAAA,MAAA,MAAA,aAAa,CAAC,KAAK,0CAAE,cAAc,0CAAE,iBAAiB,0CAAE,OAAO,EAAE;QACnE,MAAM,CAAC,MAAM;aACV,IAAI,CAAC,oBAAoB,CAAC;aAC1B,IAAI,CAAC,wBAAwB,CAAC;aAC9B,GAAG,CAAC,OAAO,CAAC;aACZ,MAAM,CAAC,sBAAsB,CAAC;aAC9B,OAAO,mBAAM,MAAA,MAAA,MAAA,aAAa,CAAC,KAAK,0CAAE,cAAc,0CAAE,iBAAiB,0CAAE,OAAO,EAAG;aAC/E,GAAG,EAAE;aACL,OAAO,CAAC,KAAK,CAAC,CAAC;KACnB;AACH,CAAC,CAAC;AAhDW,QAAA,6BAA6B,iCAgDxC;AAEF,kBAAe,qCAA6B,CAAC"}
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
5
|
+
const files_1 = require("../utils/files");
|
|
5
6
|
exports.default = (configManager) => (config) => {
|
|
6
|
-
var _a, _b, _c, _d, _e, _f
|
|
7
|
+
var _a, _b, _c, _d, _e, _f;
|
|
8
|
+
const svgoOptions = (0, files_1.getSvgoOptions)(configManager);
|
|
7
9
|
config.module
|
|
8
10
|
.rule('woff')
|
|
9
11
|
.test(/\.woff2?$/)
|
|
@@ -11,22 +13,15 @@ exports.default = (configManager) => (config) => {
|
|
|
11
13
|
.set('generator', {
|
|
12
14
|
emit: false,
|
|
13
15
|
});
|
|
16
|
+
(0, files_1.addSvgrLoader)(configManager, config, svgoOptions);
|
|
14
17
|
config.module
|
|
15
18
|
.rule('svg')
|
|
16
19
|
.test(/\.svg$/)
|
|
20
|
+
.set('resourceQuery', { not: /react/ })
|
|
17
21
|
.set('type', 'asset/source')
|
|
18
22
|
.use('svg')
|
|
19
23
|
.loader('svgo-loader')
|
|
20
|
-
.options(
|
|
21
|
-
plugins: (_d = (_c = (_b = (_a = configManager.build) === null || _a === void 0 ? void 0 : _a.configurations) === null || _b === void 0 ? void 0 : _b.svgo) === null || _c === void 0 ? void 0 : _c.plugins) !== null && _d !== void 0 ? _d : [
|
|
22
|
-
{
|
|
23
|
-
cleanupIDs: false,
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
collapseGroups: false,
|
|
27
|
-
},
|
|
28
|
-
],
|
|
29
|
-
});
|
|
24
|
+
.options(svgoOptions);
|
|
30
25
|
config.module
|
|
31
26
|
.rule('tramvai-image')
|
|
32
27
|
.test(/\.(png|jpe?g|gif|webp)$/)
|
|
@@ -43,13 +38,13 @@ exports.default = (configManager) => (config) => {
|
|
|
43
38
|
.set('generator', {
|
|
44
39
|
emit: false,
|
|
45
40
|
});
|
|
46
|
-
if ((
|
|
41
|
+
if ((_c = (_b = (_a = configManager.build) === null || _a === void 0 ? void 0 : _a.configurations) === null || _b === void 0 ? void 0 : _b.imageOptimization) === null || _c === void 0 ? void 0 : _c.enabled) {
|
|
47
42
|
config.module
|
|
48
43
|
.rule('image-optimization')
|
|
49
44
|
.test(/\.(gif|png|jpe?g|svg)$/)
|
|
50
45
|
.use('image')
|
|
51
46
|
.loader('image-webpack-loader')
|
|
52
|
-
.options(Object.assign({}, (
|
|
47
|
+
.options(Object.assign({}, (_f = (_e = (_d = configManager.build) === null || _d === void 0 ? void 0 : _d.configurations) === null || _e === void 0 ? void 0 : _e.imageOptimization) === null || _f === void 0 ? void 0 : _f.options))
|
|
53
48
|
.end()
|
|
54
49
|
.enforce('pre');
|
|
55
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesServer.js","sourceRoot":"","sources":["../../../../src/library/webpack/blocks/filesServer.ts"],"names":[],"mappings":";;;AAAA,wDAAwB;
|
|
1
|
+
{"version":3,"file":"filesServer.js","sourceRoot":"","sources":["../../../../src/library/webpack/blocks/filesServer.ts"],"names":[],"mappings":";;;AAAA,wDAAwB;AAGxB,0CAA+D;AAE/D,kBAAe,CAAC,aAA4B,EAAE,EAAE,CAAC,CAAC,MAAc,EAAE,EAAE;;IAClE,MAAM,WAAW,GAAG,IAAA,sBAAc,EAAC,aAAa,CAAC,CAAC;IAElD,MAAM,CAAC,MAAM;SACV,IAAI,CAAC,MAAM,CAAC;SACZ,IAAI,CAAC,WAAW,CAAC;SACjB,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;SACpB,GAAG,CAAC,WAAW,EAAE;QAChB,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IAEL,IAAA,qBAAa,EAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAElD,MAAM,CAAC,MAAM;SACV,IAAI,CAAC,KAAK,CAAC;SACX,IAAI,CAAC,QAAQ,CAAC;SACd,GAAG,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;SACtC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;SAC3B,GAAG,CAAC,KAAK,CAAC;SACV,MAAM,CAAC,aAAa,CAAC;SACrB,OAAO,CAAC,WAAW,CAAC,CAAC;IAExB,MAAM,CAAC,MAAM;SACV,IAAI,CAAC,eAAe,CAAC;SACrB,IAAI,CAAC,yBAAyB,CAAC;SAC/B,GAAG,CAAC,MAAM,CAAC;SACX,MAAM,CAAC,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;SAC1D,OAAO,CAAC;QACP,QAAQ,EAAE,KAAK;KAChB,CAAC;SACD,GAAG,EAAE,CAAC;IAET,MAAM,CAAC,MAAM;SACV,IAAI,CAAC,OAAO,CAAC;SACb,IAAI,CAAC,oBAAoB,CAAC;SAC1B,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC;SAC7B,GAAG,CAAC,WAAW,EAAE;QAChB,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IAEL,IAAI,MAAA,MAAA,MAAA,aAAa,CAAC,KAAK,0CAAE,cAAc,0CAAE,iBAAiB,0CAAE,OAAO,EAAE;QACnE,MAAM,CAAC,MAAM;aACV,IAAI,CAAC,oBAAoB,CAAC;aAC1B,IAAI,CAAC,wBAAwB,CAAC;aAC9B,GAAG,CAAC,OAAO,CAAC;aACZ,MAAM,CAAC,sBAAsB,CAAC;aAC9B,OAAO,mBAAM,MAAA,MAAA,MAAA,aAAa,CAAC,KAAK,0CAAE,cAAc,0CAAE,iBAAiB,0CAAE,OAAO,EAAG;aAC/E,GAAG,EAAE;aACL,OAAO,CAAC,KAAK,CAAC,CAAC;KACnB;AACH,CAAC,CAAC"}
|
|
@@ -1,30 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
3
|
const is_modern_lib_1 = require("@tinkoff/is-modern-lib");
|
|
5
|
-
const babel_1 = tslib_1.__importDefault(require("../../babel"));
|
|
6
|
-
const swc_1 = require("../../swc");
|
|
7
4
|
const workersPool_1 = require("../utils/workersPool");
|
|
5
|
+
const transpiler_1 = require("../utils/transpiler");
|
|
8
6
|
// eslint-disable-next-line import/no-default-export
|
|
9
7
|
exports.default = (configManager) => (config) => {
|
|
10
|
-
const
|
|
11
|
-
const {
|
|
12
|
-
const commonBabelConfig = {
|
|
13
|
-
isServer: configManager.buildType === 'server',
|
|
14
|
-
env,
|
|
15
|
-
generateDataQaTag,
|
|
16
|
-
modern,
|
|
17
|
-
alias,
|
|
18
|
-
tramvai: true,
|
|
19
|
-
hot: configManager.hotRefresh,
|
|
20
|
-
excludesPresetEnv: configManager.build.configurations.excludesPresetEnv,
|
|
21
|
-
removeTypeofWindow,
|
|
22
|
-
enableFillActionNamePlugin,
|
|
23
|
-
rootDir: configManager.rootDir,
|
|
24
|
-
target: configManager.target,
|
|
25
|
-
};
|
|
8
|
+
const transpilerConfig = (0, transpiler_1.getTranspilerConfig)(configManager);
|
|
9
|
+
const { transpileOnlyModernLibs } = configManager.build.configurations;
|
|
26
10
|
const jsRule = (babelCfg) => (rule) => {
|
|
27
|
-
const { loader } = configManager.experiments.transpilation;
|
|
28
11
|
const cfg = rule
|
|
29
12
|
.test(/\.[cm]?js[x]?$/)
|
|
30
13
|
.oneOf('default')
|
|
@@ -35,24 +18,19 @@ exports.default = (configManager) => (config) => {
|
|
|
35
18
|
.options((0, workersPool_1.createWorkerPoolBabel)(configManager))
|
|
36
19
|
.end())
|
|
37
20
|
.use('babel');
|
|
38
|
-
|
|
39
|
-
return cfg.loader('swc-loader').options((0, swc_1.getSwcOptions)(babelCfg)).end();
|
|
40
|
-
}
|
|
41
|
-
if (loader === 'babel') {
|
|
42
|
-
return cfg.loader('babel-loader').options((0, babel_1.default)(babelCfg)).end();
|
|
43
|
-
}
|
|
21
|
+
return (0, transpiler_1.addTranspilerLoader)(configManager, cfg, babelCfg);
|
|
44
22
|
};
|
|
45
23
|
if (transpileOnlyModernLibs) {
|
|
46
24
|
config.module
|
|
47
25
|
.rule('js:project')
|
|
48
26
|
.exclude.add(/node_modules/)
|
|
49
27
|
.end()
|
|
50
|
-
.batch(jsRule(
|
|
28
|
+
.batch(jsRule(transpilerConfig));
|
|
51
29
|
config.module
|
|
52
30
|
.rule('js:node_modules')
|
|
53
31
|
.include.add(is_modern_lib_1.modernLibsFilter)
|
|
54
32
|
.end()
|
|
55
|
-
.batch(jsRule(Object.assign(Object.assign({},
|
|
33
|
+
.batch(jsRule(Object.assign(Object.assign({}, transpilerConfig), { hot: false })))
|
|
56
34
|
.merge({
|
|
57
35
|
// TODO: некоторые пакеты неправильно описывают импорты для es модулей
|
|
58
36
|
// https://github.com/babel/babel/issues/12058
|
|
@@ -64,12 +42,12 @@ exports.default = (configManager) => (config) => {
|
|
|
64
42
|
.rule('js:project')
|
|
65
43
|
.exclude.add(/node_modules/)
|
|
66
44
|
.end()
|
|
67
|
-
.batch(jsRule(
|
|
45
|
+
.batch(jsRule(transpilerConfig));
|
|
68
46
|
config.module
|
|
69
47
|
.rule('js:node_modules')
|
|
70
48
|
.include.add(/node_modules/)
|
|
71
49
|
.end()
|
|
72
|
-
.batch(jsRule(Object.assign(Object.assign({},
|
|
50
|
+
.batch(jsRule(Object.assign(Object.assign({}, transpilerConfig), { hot: false })))
|
|
73
51
|
.merge({
|
|
74
52
|
// TODO: некоторые пакеты неправильно описывают импорты для es модулей
|
|
75
53
|
// https://github.com/babel/babel/issues/12058
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"js.js","sourceRoot":"","sources":["../../../../src/library/webpack/blocks/js.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"js.js","sourceRoot":"","sources":["../../../../src/library/webpack/blocks/js.ts"],"names":[],"mappings":";;AACA,0DAA0D;AAE1D,sDAA6D;AAE7D,oDAA+E;AAE/E,oDAAoD;AACpD,kBAAe,CAAC,aAA4B,EAAE,EAAE,CAAC,CAAC,MAAc,EAAE,EAAE;IAClE,MAAM,gBAAgB,GAAG,IAAA,gCAAmB,EAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,EAAE,uBAAuB,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC;IAEvE,MAAM,MAAM,GAAG,CAAC,QAA2C,EAAE,EAAE,CAAC,CAAC,IAAiB,EAAE,EAAE;QACpF,MAAM,GAAG,GAAG,IAAI;aACb,IAAI,CAAC,gBAAgB,CAAC;aACtB,KAAK,CAAC,SAAS,CAAC;YACjB,6DAA6D;aAC5D,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAClE,GAAG;aACA,GAAG,CAAC,QAAQ,CAAC;aACb,MAAM,CAAC,eAAe,CAAC;aACvB,OAAO,CAAC,IAAA,mCAAqB,EAAC,aAAa,CAAC,CAAC;aAC7C,GAAG,EAAE,CACT;aACA,GAAG,CAAC,OAAO,CAAC,CAAC;QAEhB,OAAO,IAAA,gCAAmB,EAAC,aAAa,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,IAAI,uBAAuB,EAAE;QAC3B,MAAM,CAAC,MAAM;aACV,IAAI,CAAC,YAAY,CAAC;aAClB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;aAC3B,GAAG,EAAE;aACL,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAEnC,MAAM,CAAC,MAAM;aACV,IAAI,CAAC,iBAAiB,CAAC;aACvB,OAAO,CAAC,GAAG,CAAC,gCAAgB,CAAC;aAC7B,GAAG,EAAE;aACL,KAAK,CAAC,MAAM,iCAAM,gBAAgB,KAAE,GAAG,EAAE,KAAK,IAAG,CAAC;aAClD,KAAK,CAAC;YACL,sEAAsE;YACtE,8CAA8C;YAC9C,OAAO,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE;SACnC,CAAC,CAAC;KACN;SAAM;QACL,MAAM,CAAC,MAAM;aACV,IAAI,CAAC,YAAY,CAAC;aAClB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;aAC3B,GAAG,EAAE;aACL,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAEnC,MAAM,CAAC,MAAM;aACV,IAAI,CAAC,iBAAiB,CAAC;aACvB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;aAC3B,GAAG,EAAE;aACL,KAAK,CAAC,MAAM,iCAAM,gBAAgB,KAAE,GAAG,EAAE,KAAK,IAAG,CAAC;aAClD,KAAK,CAAC;YACL,sEAAsE;YACtE,8CAA8C;YAC9C,OAAO,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE;SACnC,CAAC,CAAC;KACN;AACH,CAAC,CAAC"}
|
|
@@ -1,28 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
const babel_1 = tslib_1.__importDefault(require("../../babel"));
|
|
5
3
|
const workersPool_1 = require("../utils/workersPool");
|
|
6
|
-
const
|
|
4
|
+
const transpiler_1 = require("../utils/transpiler");
|
|
7
5
|
exports.default = (configManager) => (config) => {
|
|
8
|
-
const {
|
|
9
|
-
const { loader } = configManager.experiments.transpilation;
|
|
10
|
-
const { env, modern } = configManager;
|
|
11
|
-
const loaderConfig = {
|
|
12
|
-
isServer: configManager.buildType === 'server',
|
|
13
|
-
env,
|
|
14
|
-
generateDataQaTag,
|
|
15
|
-
typescript: true,
|
|
16
|
-
modern,
|
|
17
|
-
alias,
|
|
18
|
-
tramvai: true,
|
|
19
|
-
removeTypeofWindow,
|
|
20
|
-
hot: configManager.hotRefresh,
|
|
21
|
-
excludesPresetEnv: configManager.build.configurations.excludesPresetEnv,
|
|
22
|
-
enableFillActionNamePlugin,
|
|
23
|
-
rootDir: configManager.rootDir,
|
|
24
|
-
target: configManager.target,
|
|
25
|
-
};
|
|
6
|
+
const transpilerConfig = Object.assign(Object.assign({}, (0, transpiler_1.getTranspilerConfig)(configManager)), { typescript: true });
|
|
26
7
|
const cfg = config.module
|
|
27
8
|
.rule('ts:project')
|
|
28
9
|
.test(/\.ts[x]?$/)
|
|
@@ -32,11 +13,6 @@ exports.default = (configManager) => (config) => {
|
|
|
32
13
|
// TODO разобраться почему на винде все плохо с thread-loader
|
|
33
14
|
.when(process.platform !== 'win32', (cfg) => cfg.use('thread').loader('thread-loader').options((0, workersPool_1.createWorkerPoolBabel)(configManager)).end())
|
|
34
15
|
.use('babel');
|
|
35
|
-
|
|
36
|
-
return cfg.loader('swc-loader').options((0, swc_1.getSwcOptions)(loaderConfig)).end();
|
|
37
|
-
}
|
|
38
|
-
if (loader === 'babel') {
|
|
39
|
-
return cfg.loader('babel-loader').options((0, babel_1.default)(loaderConfig)).end();
|
|
40
|
-
}
|
|
16
|
+
return (0, transpiler_1.addTranspilerLoader)(configManager, cfg, transpilerConfig);
|
|
41
17
|
};
|
|
42
18
|
//# sourceMappingURL=ts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ts.js","sourceRoot":"","sources":["../../../../src/library/webpack/blocks/ts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ts.js","sourceRoot":"","sources":["../../../../src/library/webpack/blocks/ts.ts"],"names":[],"mappings":";;AACA,sDAA6D;AAE7D,oDAA+E;AAE/E,kBAAe,CAAC,aAA4B,EAAE,EAAE,CAAC,CAAC,MAAc,EAAE,EAAE;IAClE,MAAM,gBAAgB,mCAAQ,IAAA,gCAAmB,EAAC,aAAa,CAAC,KAAE,UAAU,EAAE,IAAI,GAAE,CAAC;IAErF,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM;SACtB,IAAI,CAAC,YAAY,CAAC;SAClB,IAAI,CAAC,WAAW,CAAC;SACjB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;SAC3B,GAAG,EAAE;SACL,KAAK,CAAC,SAAS,CAAC;QACjB,6DAA6D;SAC5D,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAC1C,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,IAAA,mCAAqB,EAAC,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAC9F;SACA,GAAG,CAAC,OAAO,CAAC,CAAC;IAEhB,OAAO,IAAA,gCAAmB,EAAC,aAAa,EAAE,GAAG,EAAE,gBAAgB,CAAC,CAAC;AACnE,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type Config from 'webpack-chain';
|
|
2
|
+
import type { ConfigManager } from '../../../config/configManager';
|
|
3
|
+
export declare const addSvgrLoader: (configManager: ConfigManager, config: Config, svgoOptions: Record<string, any>) => void;
|
|
4
|
+
export declare const getSvgoOptions: (configManager: ConfigManager) => {
|
|
5
|
+
plugins: Record<string, any>[];
|
|
6
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSvgoOptions = exports.addSvgrLoader = void 0;
|
|
4
|
+
const transpiler_1 = require("./transpiler");
|
|
5
|
+
const addSvgrLoader = (configManager, config, svgoOptions) => {
|
|
6
|
+
const transpilerConfig = (0, transpiler_1.getTranspilerConfig)(configManager);
|
|
7
|
+
// based on https://github.com/facebook/create-react-app/issues/11213#issuecomment-883466601
|
|
8
|
+
const svgrConfig = config.module
|
|
9
|
+
.rule('svgr')
|
|
10
|
+
.test(/\.svg$/)
|
|
11
|
+
// @todo: `issuer: /\.tsx?$/` нужен или нет?
|
|
12
|
+
.set('resourceQuery', /react/);
|
|
13
|
+
(0, transpiler_1.addTranspilerLoader)(configManager, svgrConfig.use('svgr-transpiler'), Object.assign(Object.assign({}, transpilerConfig), { typescript: true }));
|
|
14
|
+
svgrConfig.use('svgr').loader('@svgr/webpack').options({ babel: false, svgo: svgoOptions }).end();
|
|
15
|
+
};
|
|
16
|
+
exports.addSvgrLoader = addSvgrLoader;
|
|
17
|
+
const getSvgoOptions = (configManager) => {
|
|
18
|
+
var _a, _b, _c, _d;
|
|
19
|
+
return {
|
|
20
|
+
plugins: (_d = (_c = (_b = (_a = configManager.build) === null || _a === void 0 ? void 0 : _a.configurations) === null || _b === void 0 ? void 0 : _b.svgo) === null || _c === void 0 ? void 0 : _c.plugins) !== null && _d !== void 0 ? _d : [
|
|
21
|
+
{
|
|
22
|
+
cleanupIDs: false,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
collapseGroups: false,
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
exports.getSvgoOptions = getSvgoOptions;
|
|
31
|
+
//# sourceMappingURL=files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../../../src/library/webpack/utils/files.ts"],"names":[],"mappings":";;;AAEA,6CAAwE;AAEjE,MAAM,aAAa,GAAG,CAC3B,aAA4B,EAC5B,MAAc,EACd,WAAgC,EAChC,EAAE;IACF,MAAM,gBAAgB,GAAG,IAAA,gCAAmB,EAAC,aAAa,CAAC,CAAC;IAC5D,4FAA4F;IAC5F,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM;SAC7B,IAAI,CAAC,MAAM,CAAC;SACZ,IAAI,CAAC,QAAQ,CAAC;QACf,4CAA4C;SAC3C,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAEjC,IAAA,gCAAmB,EAAC,aAAa,EAAE,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,kCAC/D,gBAAgB,KACnB,UAAU,EAAE,IAAI,IAChB,CAAC;IAEH,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;AACpG,CAAC,CAAC;AAnBW,QAAA,aAAa,iBAmBxB;AAEK,MAAM,cAAc,GAAG,CAAC,aAA4B,EAAE,EAAE;;IAC7D,OAAO;QACL,OAAO,EAAE,MAAA,MAAA,MAAA,MAAA,aAAa,CAAC,KAAK,0CAAE,cAAc,0CAAE,IAAI,0CAAE,OAAO,mCAAI;YAC7D;gBACE,UAAU,EAAE,KAAK;aAClB;YACD;gBACE,cAAc,EAAE,KAAK;aACtB;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,cAAc,kBAWzB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type Config from 'webpack-chain';
|
|
2
|
+
import type { ConfigManager } from '../../../config/configManager';
|
|
3
|
+
export declare const addTranspilerLoader: (configManager: ConfigManager, rule: Config.Use, transpilerConfig: Record<string, any>) => Config.Rule;
|
|
4
|
+
export declare const getTranspilerConfig: (configManager: ConfigManager) => {
|
|
5
|
+
isServer: boolean;
|
|
6
|
+
env: any;
|
|
7
|
+
generateDataQaTag: boolean;
|
|
8
|
+
modern: boolean;
|
|
9
|
+
alias: Record<string, any>;
|
|
10
|
+
tramvai: boolean;
|
|
11
|
+
removeTypeofWindow: boolean;
|
|
12
|
+
hot: boolean;
|
|
13
|
+
excludesPresetEnv: string[];
|
|
14
|
+
enableFillActionNamePlugin: boolean;
|
|
15
|
+
rootDir: string;
|
|
16
|
+
target: import("../../../typings/target").Target;
|
|
17
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTranspilerConfig = exports.addTranspilerLoader = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const swc_1 = require("../../swc");
|
|
6
|
+
const babel_1 = tslib_1.__importDefault(require("../../babel"));
|
|
7
|
+
const addTranspilerLoader = (configManager, rule, transpilerConfig) => {
|
|
8
|
+
const { loader } = configManager.experiments.transpilation;
|
|
9
|
+
if (loader === 'swc') {
|
|
10
|
+
return rule.loader('swc-loader').options((0, swc_1.getSwcOptions)(transpilerConfig)).end();
|
|
11
|
+
}
|
|
12
|
+
if (loader === 'babel') {
|
|
13
|
+
return rule.loader('babel-loader').options((0, babel_1.default)(transpilerConfig)).end();
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
exports.addTranspilerLoader = addTranspilerLoader;
|
|
17
|
+
const getTranspilerConfig = (configManager) => {
|
|
18
|
+
const { generateDataQaTag, alias, removeTypeofWindow, enableFillActionNamePlugin } = configManager.build.configurations;
|
|
19
|
+
const { env, modern } = configManager;
|
|
20
|
+
return {
|
|
21
|
+
isServer: configManager.buildType === 'server',
|
|
22
|
+
env,
|
|
23
|
+
generateDataQaTag,
|
|
24
|
+
modern,
|
|
25
|
+
alias,
|
|
26
|
+
tramvai: true,
|
|
27
|
+
removeTypeofWindow,
|
|
28
|
+
hot: configManager.hotRefresh,
|
|
29
|
+
excludesPresetEnv: configManager.build.configurations.excludesPresetEnv,
|
|
30
|
+
enableFillActionNamePlugin,
|
|
31
|
+
rootDir: configManager.rootDir,
|
|
32
|
+
target: configManager.target,
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
exports.getTranspilerConfig = getTranspilerConfig;
|
|
36
|
+
//# sourceMappingURL=transpiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transpiler.js","sourceRoot":"","sources":["../../../../src/library/webpack/utils/transpiler.ts"],"names":[],"mappings":";;;;AAEA,mCAA0C;AAC1C,gEAAsC;AAE/B,MAAM,mBAAmB,GAAG,CACjC,aAA4B,EAC5B,IAAgB,EAChB,gBAAqC,EACrC,EAAE;IACF,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC;IAE3D,IAAI,MAAM,KAAK,KAAK,EAAE;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,IAAA,mBAAa,EAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;KACjF;IAED,IAAI,MAAM,KAAK,OAAO,EAAE;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,IAAA,eAAW,EAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;KACjF;AACH,CAAC,CAAC;AAdW,QAAA,mBAAmB,uBAc9B;AAEK,MAAM,mBAAmB,GAAG,CAAC,aAA4B,EAAE,EAAE;IAClE,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,GAChF,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC;IACrC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;IAEtC,OAAO;QACL,QAAQ,EAAE,aAAa,CAAC,SAAS,KAAK,QAAQ;QAC9C,GAAG;QACH,iBAAiB;QACjB,MAAM;QACN,KAAK;QACL,OAAO,EAAE,IAAI;QACb,kBAAkB;QAClB,GAAG,EAAE,aAAa,CAAC,UAAU;QAC7B,iBAAiB,EAAE,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,iBAAiB;QACvE,0BAA0B;QAC1B,OAAO,EAAE,aAAa,CAAC,OAAO;QAC9B,MAAM,EAAE,aAAa,CAAC,MAAM;KAC7B,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,mBAAmB,uBAmB9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../src/typings/public.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tramvai/cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.34.0",
|
|
4
4
|
"description": "Cli инструмент для сборки и запуска приложений",
|
|
5
5
|
"files": [
|
|
6
6
|
"src",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"url": "git@github.com:Tinkoff/tramvai.git"
|
|
29
29
|
},
|
|
30
30
|
"main": "lib/api/index.js",
|
|
31
|
+
"typings": "lib/api/index.d.ts",
|
|
31
32
|
"dependencies": {
|
|
32
33
|
"@babel/cli": "^7.18.10",
|
|
33
34
|
"@babel/core": "^7.18.10",
|
|
@@ -57,6 +58,7 @@
|
|
|
57
58
|
"@fastify/static": "^6.5.0",
|
|
58
59
|
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.7",
|
|
59
60
|
"@sentry/node": "^6.2.5",
|
|
61
|
+
"@svgr/webpack": "^6.4.0",
|
|
60
62
|
"@tinkoff/browserslist-config": "0.2.4",
|
|
61
63
|
"@tinkoff/dippy": "0.8.8",
|
|
62
64
|
"@tinkoff/is-modern-lib": "2.0.4",
|
|
@@ -67,7 +69,7 @@
|
|
|
67
69
|
"@tinkoff/request-plugin-protocol-http": "^0.11.6",
|
|
68
70
|
"@tinkoff/utils": "^2.1.3",
|
|
69
71
|
"@tramvai/build": "3.0.6",
|
|
70
|
-
"@tramvai/react": "2.
|
|
72
|
+
"@tramvai/react": "2.34.0",
|
|
71
73
|
"@tramvai/tools-check-versions": "0.4.5",
|
|
72
74
|
"@tramvai/tools-migrate": "0.6.6",
|
|
73
75
|
"ajv": "^6.12.6",
|
package/src/api/index.ts
CHANGED
|
@@ -26,6 +26,7 @@ export { lessWebpackRulesFactory } from '../library/webpack/blocks/less';
|
|
|
26
26
|
export { postcssAssetsWebpackRulesFactory } from '../library/webpack/blocks/postcssAssets';
|
|
27
27
|
export { extractCssPluginFactory } from '../library/webpack/blocks/extractCssPlugin';
|
|
28
28
|
export { configToEnv } from '../library/webpack/blocks/configToEnv';
|
|
29
|
+
export * from '../typings/public';
|
|
29
30
|
|
|
30
31
|
const app = createApp({
|
|
31
32
|
commands: {
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { ImageObject, SvgComponent } from '@tramvai/cli';
|
|
2
|
+
|
|
1
3
|
declare module '*.css' {
|
|
2
4
|
interface IClassNames {
|
|
3
5
|
[className: string]: string;
|
|
@@ -5,3 +7,34 @@ declare module '*.css' {
|
|
|
5
7
|
const classNames: IClassNames;
|
|
6
8
|
export = classNames;
|
|
7
9
|
}
|
|
10
|
+
|
|
11
|
+
declare module '*.woff2' {
|
|
12
|
+
export = string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
type ImageString = string;
|
|
16
|
+
|
|
17
|
+
declare module '*.png' {
|
|
18
|
+
export default ImageString;
|
|
19
|
+
export const image: ImageObject;
|
|
20
|
+
}
|
|
21
|
+
declare module '*.jpg' {
|
|
22
|
+
export default ImageString;
|
|
23
|
+
export const image: ImageObject;
|
|
24
|
+
}
|
|
25
|
+
declare module '*.jpeg' {
|
|
26
|
+
export default ImageString;
|
|
27
|
+
export const image: ImageObject;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
declare module '*.svg' {
|
|
31
|
+
export = string;
|
|
32
|
+
}
|
|
33
|
+
declare module '*.svg?react' {
|
|
34
|
+
/**
|
|
35
|
+
* React component transformed with https://react-svgr.com/
|
|
36
|
+
*/
|
|
37
|
+
const Svg: SvgComponent;
|
|
38
|
+
|
|
39
|
+
export = Svg;
|
|
40
|
+
}
|
|
@@ -2,16 +2,22 @@ import path from 'path';
|
|
|
2
2
|
import type Config from 'webpack-chain';
|
|
3
3
|
import SparkMD5 from 'spark-md5';
|
|
4
4
|
import type { ConfigManager } from '../../../config/configManager';
|
|
5
|
+
import { addSvgrLoader, getSvgoOptions } from '../utils/files';
|
|
5
6
|
|
|
6
7
|
export const filesClientWebackRulesFactory = (configManager: ConfigManager) => (config: Config) => {
|
|
8
|
+
const svgoOptions = getSvgoOptions(configManager);
|
|
9
|
+
|
|
7
10
|
config.module
|
|
8
11
|
.rule('woff')
|
|
9
12
|
.test(/\.woff2?$/)
|
|
10
13
|
.set('type', 'asset');
|
|
11
14
|
|
|
15
|
+
addSvgrLoader(configManager, config, svgoOptions);
|
|
16
|
+
|
|
12
17
|
config.module
|
|
13
18
|
.rule('svg')
|
|
14
19
|
.test(/\.svg$/)
|
|
20
|
+
.set('resourceQuery', { not: /react/ })
|
|
15
21
|
.set('type', 'asset/resource')
|
|
16
22
|
.set('generator', {
|
|
17
23
|
filename: (pathInfo) => {
|
|
@@ -22,16 +28,7 @@ export const filesClientWebackRulesFactory = (configManager: ConfigManager) => (
|
|
|
22
28
|
})
|
|
23
29
|
.use('svg')
|
|
24
30
|
.loader('svgo-loader')
|
|
25
|
-
.options(
|
|
26
|
-
plugins: configManager.build?.configurations?.svgo?.plugins ?? [
|
|
27
|
-
{
|
|
28
|
-
cleanupIDs: false,
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
collapseGroups: false,
|
|
32
|
-
},
|
|
33
|
-
],
|
|
34
|
-
});
|
|
31
|
+
.options(svgoOptions);
|
|
35
32
|
|
|
36
33
|
config.module
|
|
37
34
|
.rule('tramvai-image')
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import type Config from 'webpack-chain';
|
|
3
3
|
import type { ConfigManager } from '../../../config/configManager';
|
|
4
|
+
import { addSvgrLoader, getSvgoOptions } from '../utils/files';
|
|
4
5
|
|
|
5
6
|
export default (configManager: ConfigManager) => (config: Config) => {
|
|
7
|
+
const svgoOptions = getSvgoOptions(configManager);
|
|
8
|
+
|
|
6
9
|
config.module
|
|
7
10
|
.rule('woff')
|
|
8
11
|
.test(/\.woff2?$/)
|
|
@@ -11,22 +14,16 @@ export default (configManager: ConfigManager) => (config: Config) => {
|
|
|
11
14
|
emit: false,
|
|
12
15
|
});
|
|
13
16
|
|
|
17
|
+
addSvgrLoader(configManager, config, svgoOptions);
|
|
18
|
+
|
|
14
19
|
config.module
|
|
15
20
|
.rule('svg')
|
|
16
21
|
.test(/\.svg$/)
|
|
22
|
+
.set('resourceQuery', { not: /react/ })
|
|
17
23
|
.set('type', 'asset/source')
|
|
18
24
|
.use('svg')
|
|
19
25
|
.loader('svgo-loader')
|
|
20
|
-
.options(
|
|
21
|
-
plugins: configManager.build?.configurations?.svgo?.plugins ?? [
|
|
22
|
-
{
|
|
23
|
-
cleanupIDs: false,
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
collapseGroups: false,
|
|
27
|
-
},
|
|
28
|
-
],
|
|
29
|
-
});
|
|
26
|
+
.options(svgoOptions);
|
|
30
27
|
|
|
31
28
|
config.module
|
|
32
29
|
.rule('tramvai-image')
|
|
@@ -1,38 +1,16 @@
|
|
|
1
1
|
import type Config from 'webpack-chain';
|
|
2
2
|
import { modernLibsFilter } from '@tinkoff/is-modern-lib';
|
|
3
|
-
import babelConfig from '../../babel';
|
|
4
|
-
import { getSwcOptions } from '../../swc';
|
|
3
|
+
import type babelConfig from '../../babel';
|
|
5
4
|
import { createWorkerPoolBabel } from '../utils/workersPool';
|
|
6
5
|
import type { ConfigManager } from '../../../config/configManager';
|
|
6
|
+
import { getTranspilerConfig, addTranspilerLoader } from '../utils/transpiler';
|
|
7
7
|
|
|
8
8
|
// eslint-disable-next-line import/no-default-export
|
|
9
9
|
export default (configManager: ConfigManager) => (config: Config) => {
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
alias,
|
|
13
|
-
removeTypeofWindow,
|
|
14
|
-
enableFillActionNamePlugin,
|
|
15
|
-
transpileOnlyModernLibs,
|
|
16
|
-
} = configManager.build.configurations;
|
|
17
|
-
const { env, modern } = configManager;
|
|
18
|
-
const commonBabelConfig = {
|
|
19
|
-
isServer: configManager.buildType === 'server',
|
|
20
|
-
env,
|
|
21
|
-
generateDataQaTag,
|
|
22
|
-
modern,
|
|
23
|
-
alias,
|
|
24
|
-
tramvai: true,
|
|
25
|
-
hot: configManager.hotRefresh,
|
|
26
|
-
excludesPresetEnv: configManager.build.configurations.excludesPresetEnv,
|
|
27
|
-
removeTypeofWindow,
|
|
28
|
-
enableFillActionNamePlugin,
|
|
29
|
-
rootDir: configManager.rootDir,
|
|
30
|
-
target: configManager.target,
|
|
31
|
-
};
|
|
10
|
+
const transpilerConfig = getTranspilerConfig(configManager);
|
|
11
|
+
const { transpileOnlyModernLibs } = configManager.build.configurations;
|
|
32
12
|
|
|
33
13
|
const jsRule = (babelCfg: Parameters<typeof babelConfig>[0]) => (rule: Config.Rule) => {
|
|
34
|
-
const { loader } = configManager.experiments.transpilation;
|
|
35
|
-
|
|
36
14
|
const cfg = rule
|
|
37
15
|
.test(/\.[cm]?js[x]?$/)
|
|
38
16
|
.oneOf('default')
|
|
@@ -46,13 +24,7 @@ export default (configManager: ConfigManager) => (config: Config) => {
|
|
|
46
24
|
)
|
|
47
25
|
.use('babel');
|
|
48
26
|
|
|
49
|
-
|
|
50
|
-
return cfg.loader('swc-loader').options(getSwcOptions(babelCfg)).end();
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
if (loader === 'babel') {
|
|
54
|
-
return cfg.loader('babel-loader').options(babelConfig(babelCfg)).end();
|
|
55
|
-
}
|
|
27
|
+
return addTranspilerLoader(configManager, cfg, babelCfg);
|
|
56
28
|
};
|
|
57
29
|
|
|
58
30
|
if (transpileOnlyModernLibs) {
|
|
@@ -60,13 +32,13 @@ export default (configManager: ConfigManager) => (config: Config) => {
|
|
|
60
32
|
.rule('js:project')
|
|
61
33
|
.exclude.add(/node_modules/)
|
|
62
34
|
.end()
|
|
63
|
-
.batch(jsRule(
|
|
35
|
+
.batch(jsRule(transpilerConfig));
|
|
64
36
|
|
|
65
37
|
config.module
|
|
66
38
|
.rule('js:node_modules')
|
|
67
39
|
.include.add(modernLibsFilter)
|
|
68
40
|
.end()
|
|
69
|
-
.batch(jsRule({ ...
|
|
41
|
+
.batch(jsRule({ ...transpilerConfig, hot: false }))
|
|
70
42
|
.merge({
|
|
71
43
|
// TODO: некоторые пакеты неправильно описывают импорты для es модулей
|
|
72
44
|
// https://github.com/babel/babel/issues/12058
|
|
@@ -77,13 +49,13 @@ export default (configManager: ConfigManager) => (config: Config) => {
|
|
|
77
49
|
.rule('js:project')
|
|
78
50
|
.exclude.add(/node_modules/)
|
|
79
51
|
.end()
|
|
80
|
-
.batch(jsRule(
|
|
52
|
+
.batch(jsRule(transpilerConfig));
|
|
81
53
|
|
|
82
54
|
config.module
|
|
83
55
|
.rule('js:node_modules')
|
|
84
56
|
.include.add(/node_modules/)
|
|
85
57
|
.end()
|
|
86
|
-
.batch(jsRule({ ...
|
|
58
|
+
.batch(jsRule({ ...transpilerConfig, hot: false }))
|
|
87
59
|
.merge({
|
|
88
60
|
// TODO: некоторые пакеты неправильно описывают импорты для es модулей
|
|
89
61
|
// https://github.com/babel/babel/issues/12058
|
|
@@ -1,29 +1,10 @@
|
|
|
1
1
|
import type Config from 'webpack-chain';
|
|
2
|
-
import babelConfig from '../../babel';
|
|
3
2
|
import { createWorkerPoolBabel } from '../utils/workersPool';
|
|
4
3
|
import type { ConfigManager } from '../../../config/configManager';
|
|
5
|
-
import {
|
|
4
|
+
import { addTranspilerLoader, getTranspilerConfig } from '../utils/transpiler';
|
|
6
5
|
|
|
7
6
|
export default (configManager: ConfigManager) => (config: Config) => {
|
|
8
|
-
const {
|
|
9
|
-
configManager.build.configurations;
|
|
10
|
-
const { loader } = configManager.experiments.transpilation;
|
|
11
|
-
const { env, modern } = configManager;
|
|
12
|
-
const loaderConfig = {
|
|
13
|
-
isServer: configManager.buildType === 'server',
|
|
14
|
-
env,
|
|
15
|
-
generateDataQaTag,
|
|
16
|
-
typescript: true,
|
|
17
|
-
modern,
|
|
18
|
-
alias,
|
|
19
|
-
tramvai: true,
|
|
20
|
-
removeTypeofWindow,
|
|
21
|
-
hot: configManager.hotRefresh,
|
|
22
|
-
excludesPresetEnv: configManager.build.configurations.excludesPresetEnv,
|
|
23
|
-
enableFillActionNamePlugin,
|
|
24
|
-
rootDir: configManager.rootDir,
|
|
25
|
-
target: configManager.target,
|
|
26
|
-
};
|
|
7
|
+
const transpilerConfig = { ...getTranspilerConfig(configManager), typescript: true };
|
|
27
8
|
|
|
28
9
|
const cfg = config.module
|
|
29
10
|
.rule('ts:project')
|
|
@@ -37,11 +18,5 @@ export default (configManager: ConfigManager) => (config: Config) => {
|
|
|
37
18
|
)
|
|
38
19
|
.use('babel');
|
|
39
20
|
|
|
40
|
-
|
|
41
|
-
return cfg.loader('swc-loader').options(getSwcOptions(loaderConfig)).end();
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
if (loader === 'babel') {
|
|
45
|
-
return cfg.loader('babel-loader').options(babelConfig(loaderConfig)).end();
|
|
46
|
-
}
|
|
21
|
+
return addTranspilerLoader(configManager, cfg, transpilerConfig);
|
|
47
22
|
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type Config from 'webpack-chain';
|
|
2
|
+
import type { ConfigManager } from '../../../config/configManager';
|
|
3
|
+
import { addTranspilerLoader, getTranspilerConfig } from './transpiler';
|
|
4
|
+
|
|
5
|
+
export const addSvgrLoader = (
|
|
6
|
+
configManager: ConfigManager,
|
|
7
|
+
config: Config,
|
|
8
|
+
svgoOptions: Record<string, any>
|
|
9
|
+
) => {
|
|
10
|
+
const transpilerConfig = getTranspilerConfig(configManager);
|
|
11
|
+
// based on https://github.com/facebook/create-react-app/issues/11213#issuecomment-883466601
|
|
12
|
+
const svgrConfig = config.module
|
|
13
|
+
.rule('svgr')
|
|
14
|
+
.test(/\.svg$/)
|
|
15
|
+
// @todo: `issuer: /\.tsx?$/` нужен или нет?
|
|
16
|
+
.set('resourceQuery', /react/);
|
|
17
|
+
|
|
18
|
+
addTranspilerLoader(configManager, svgrConfig.use('svgr-transpiler'), {
|
|
19
|
+
...transpilerConfig,
|
|
20
|
+
typescript: true,
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
svgrConfig.use('svgr').loader('@svgr/webpack').options({ babel: false, svgo: svgoOptions }).end();
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export const getSvgoOptions = (configManager: ConfigManager) => {
|
|
27
|
+
return {
|
|
28
|
+
plugins: configManager.build?.configurations?.svgo?.plugins ?? [
|
|
29
|
+
{
|
|
30
|
+
cleanupIDs: false,
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
collapseGroups: false,
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
};
|
|
37
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type Config from 'webpack-chain';
|
|
2
|
+
import type { ConfigManager } from '../../../config/configManager';
|
|
3
|
+
import { getSwcOptions } from '../../swc';
|
|
4
|
+
import babelConfig from '../../babel';
|
|
5
|
+
|
|
6
|
+
export const addTranspilerLoader = (
|
|
7
|
+
configManager: ConfigManager,
|
|
8
|
+
rule: Config.Use,
|
|
9
|
+
transpilerConfig: Record<string, any>
|
|
10
|
+
) => {
|
|
11
|
+
const { loader } = configManager.experiments.transpilation;
|
|
12
|
+
|
|
13
|
+
if (loader === 'swc') {
|
|
14
|
+
return rule.loader('swc-loader').options(getSwcOptions(transpilerConfig)).end();
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (loader === 'babel') {
|
|
18
|
+
return rule.loader('babel-loader').options(babelConfig(transpilerConfig)).end();
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export const getTranspilerConfig = (configManager: ConfigManager) => {
|
|
23
|
+
const { generateDataQaTag, alias, removeTypeofWindow, enableFillActionNamePlugin } =
|
|
24
|
+
configManager.build.configurations;
|
|
25
|
+
const { env, modern } = configManager;
|
|
26
|
+
|
|
27
|
+
return {
|
|
28
|
+
isServer: configManager.buildType === 'server',
|
|
29
|
+
env,
|
|
30
|
+
generateDataQaTag,
|
|
31
|
+
modern,
|
|
32
|
+
alias,
|
|
33
|
+
tramvai: true,
|
|
34
|
+
removeTypeofWindow,
|
|
35
|
+
hot: configManager.hotRefresh,
|
|
36
|
+
excludesPresetEnv: configManager.build.configurations.excludesPresetEnv,
|
|
37
|
+
enableFillActionNamePlugin,
|
|
38
|
+
rootDir: configManager.rootDir,
|
|
39
|
+
target: configManager.target,
|
|
40
|
+
};
|
|
41
|
+
};
|