@servicetitan/startup 26.1.0 → 26.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.
@@ -4,12 +4,20 @@ import { LinterOptions } from 'stylelint';
4
4
  import { Config } from '@jest/types';
5
5
  export declare const allowedWebpackDevServerOptions: readonly ["headers", "port", "proxy", "static"];
6
6
  type ElementType<T> = T extends readonly (infer ElementType)[] ? ElementType : never;
7
+ export interface MinifyJSOptions {
8
+ compress?: boolean;
9
+ mangle?: boolean;
10
+ }
11
+ export interface MinifyOptions {
12
+ js?: boolean | MinifyJSOptions;
13
+ }
7
14
  export interface WebpackConfiguration extends Omit<Pick<WebpackDevServerConfiguration, ElementType<typeof allowedWebpackDevServerOptions>>, 'proxy'> {
8
15
  'contentBase'?: boolean | string | string[] | number;
9
16
  'custom-style-rules'?: boolean;
10
17
  'expose-shared-dependencies'?: boolean;
11
18
  'devServer'?: WebpackDevServerConfiguration;
12
19
  'disable-style-check'?: boolean;
20
+ 'minify'?: MinifyOptions;
13
21
  'proxy'?: WebpackDevServerConfiguration['proxy'] | string;
14
22
  }
15
23
  export interface ESLintConfiguration extends ESLint.Options {
@@ -60,6 +68,7 @@ export declare function getConfigurationSafe(locationOrJson?: LocationOrJson): C
60
68
  export declare function getESLintConfiguration(): ESLintConfiguration;
61
69
  export declare function getJestConfiguration(): JestConfiguration & NodeConfiguration;
62
70
  export declare function getStylelintConfiguration(): StylelintConfiguration;
71
+ export declare function getWebpackConfiguration(locationOrJson?: LocationOrJson): WebpackConfiguration;
63
72
  export declare function isBundle(locationOrJson?: LocationOrJson): boolean;
64
73
  export declare function isCustomStyleRules(): boolean;
65
74
  export declare function isExposeSharedDependencies(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"get-configuration.d.ts","sourceRoot":"","sources":["../../src/utils/get-configuration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-configuration.d.ts","sourceRoot":"","sources":["../../src/utils/get-configuration.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isWebComponent = exports.isStyleCheckDisabled = exports.isLegacyRoot = exports.isLegacy = exports.isExposeSharedDependencies = exports.isCustomStyleRules = exports.isBundle = exports.getStylelintConfiguration = exports.getJestConfiguration = exports.getESLintConfiguration = exports.getConfigurationSafe = exports.getConfiguration = exports.CommandName = exports.allowedWebpackDevServerOptions = void 0;
6
+ exports.isWebComponent = exports.isStyleCheckDisabled = exports.isLegacyRoot = exports.isLegacy = exports.isExposeSharedDependencies = exports.isCustomStyleRules = exports.isBundle = exports.getWebpackConfiguration = exports.getStylelintConfiguration = exports.getJestConfiguration = exports.getESLintConfiguration = exports.getConfigurationSafe = exports.getConfiguration = exports.CommandName = exports.allowedWebpackDevServerOptions = void 0;
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const read_json_1 = require("./read-json");
9
9
  exports.allowedWebpackDevServerOptions = ['headers', 'port', 'proxy', 'static'];
@@ -56,24 +56,21 @@ function getStylelintConfiguration() {
56
56
  return (_b = (_a = getConfiguration().lint) === null || _a === void 0 ? void 0 : _a.stylelint) !== null && _b !== void 0 ? _b : {};
57
57
  }
58
58
  exports.getStylelintConfiguration = getStylelintConfiguration;
59
+ function getWebpackConfiguration(locationOrJson) {
60
+ const { webpack } = getConfiguration(locationOrJson);
61
+ return typeof webpack === 'object' ? webpack : {};
62
+ }
63
+ exports.getWebpackConfiguration = getWebpackConfiguration;
59
64
  function isBundle(locationOrJson) {
60
65
  return getConfiguration(locationOrJson).webpack !== false;
61
66
  }
62
67
  exports.isBundle = isBundle;
63
68
  function isCustomStyleRules() {
64
- const configuration = getConfiguration();
65
- if (typeof configuration.webpack !== 'object') {
66
- return false;
67
- }
68
- return configuration.webpack['custom-style-rules'] === true;
69
+ return getWebpackConfiguration()['custom-style-rules'] === true;
69
70
  }
70
71
  exports.isCustomStyleRules = isCustomStyleRules;
71
72
  function isExposeSharedDependencies() {
72
- const configuration = getConfiguration();
73
- if (typeof configuration.webpack !== 'object') {
74
- return false;
75
- }
76
- return configuration.webpack['expose-shared-dependencies'] === true;
73
+ return getWebpackConfiguration()['expose-shared-dependencies'] === true;
77
74
  }
78
75
  exports.isExposeSharedDependencies = isExposeSharedDependencies;
79
76
  function isLegacy(locationOrJson) {
@@ -86,12 +83,7 @@ function isLegacyRoot() {
86
83
  }
87
84
  exports.isLegacyRoot = isLegacyRoot;
88
85
  function isStyleCheckDisabled() {
89
- var _a;
90
- const configuration = getConfiguration();
91
- if (typeof configuration.webpack !== 'object') {
92
- return false;
93
- }
94
- return ((_a = configuration.webpack) === null || _a === void 0 ? void 0 : _a['disable-style-check']) === true;
86
+ return getWebpackConfiguration()['disable-style-check'] === true;
95
87
  }
96
88
  exports.isStyleCheckDisabled = isStyleCheckDisabled;
97
89
  function isWebComponent() {
@@ -1 +1 @@
1
- {"version":3,"file":"get-configuration.js","sourceRoot":"","sources":["../../src/utils/get-configuration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-configuration.js","sourceRoot":"","sources":["../../src/utils/get-configuration.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"optimization-config.d.ts","sourceRoot":"","sources":["../../../src/webpack/configs/optimization-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAG7C,KAAK,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AAElD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CA8DzE"}
1
+ {"version":3,"file":"optimization-config.d.ts","sourceRoot":"","sources":["../../../src/webpack/configs/optimization-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAI7C,KAAK,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AAElD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAmBzE"}
@@ -1,63 +1,91 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.optimizationConfig = void 0;
7
+ const terser_webpack_plugin_1 = __importDefault(require("terser-webpack-plugin"));
4
8
  function optimizationConfig(context, _) {
5
- const { isExposeSharedDependencies, isProduction, isWebComponent } = context;
9
+ const { isProduction } = context;
6
10
  const optimization = {
7
11
  chunkIds: isProduction ? 'deterministic' : 'named',
8
12
  moduleIds: 'size',
9
13
  mangleExports: 'size',
10
14
  splitChunks: { cacheGroups: {} },
11
15
  };
12
- if (isExposeSharedDependencies) {
13
- Object.assign(optimization.splitChunks.cacheGroups, {
14
- 'design-system': {
15
- test: /[\\/]node_modules[\\/]@servicetitan[\\/](tokens|anvil-fonts|design-system)[\\/].*\.css$/,
16
- name: 'design-system',
17
- chunks: 'all',
18
- enforce: true,
19
- },
20
- 'anvil2': {
21
- test: /@servicetitan\/anvil2\/.*\.css$/,
22
- name: 'anvil2',
23
- chunks: 'all',
24
- enforce: true,
25
- },
26
- });
27
- }
28
- if (isWebComponent) {
29
- Object.assign(optimization.splitChunks.cacheGroups, {
30
- styles: {
31
- name: 'main',
32
- type: 'css/mini-extract',
33
- chunks: 'all',
34
- enforce: true,
35
- },
36
- });
37
- }
38
16
  if (isProduction) {
39
17
  optimization.runtimeChunk = 'single';
40
- if (isWebComponent) {
41
- Object.assign(optimization.splitChunks.cacheGroups, {
42
- common: {
43
- name: 'common',
44
- test: /[\\/]node_modules[\\/](axios|classnames|formstate|mobx|mobx-react|mobx-utils|react|react-dom|react-router|react-router-dom)[\\/]/,
45
- chunks: 'all',
46
- },
47
- kendo: {
48
- name: 'kendo',
49
- test: /[\\/]node_modules[\\/](@progress|@telerik)[\\/]/,
50
- chunks: 'all',
51
- },
52
- servicetitan: {
53
- name: 'servicetitan',
54
- test: /[\\/]node_modules[\\/]@servicetitan[\\/]/,
55
- chunks: 'all',
56
- },
57
- });
58
- }
59
18
  }
19
+ [minimizeConfig, sharedDependenciesConfig, webComponentConfig].forEach(handler => handler(optimization, context));
60
20
  return { optimization };
61
21
  }
62
22
  exports.optimizationConfig = optimizationConfig;
23
+ function minimizeConfig(optimization, context) {
24
+ var _a, _b;
25
+ const { isProduction } = context;
26
+ if (!isProduction) {
27
+ return;
28
+ }
29
+ const minify = (_b = (_a = context.minify) === null || _a === void 0 ? void 0 : _a.js) !== null && _b !== void 0 ? _b : true;
30
+ optimization.minimize = !!minify;
31
+ if (!optimization.minimize) {
32
+ return;
33
+ }
34
+ const terserOptions = Object.assign({ compress: false, mangle: false }, (typeof minify === 'object' ? minify : {}));
35
+ optimization.minimizer = [new terser_webpack_plugin_1.default({ terserOptions })];
36
+ }
37
+ function sharedDependenciesConfig(optimization, context) {
38
+ const { isExposeSharedDependencies } = context;
39
+ if (!isExposeSharedDependencies) {
40
+ return;
41
+ }
42
+ Object.assign(optimization.splitChunks.cacheGroups, {
43
+ 'design-system': {
44
+ test: /[\\/]node_modules[\\/]@servicetitan[\\/](tokens|anvil-fonts|design-system)[\\/].*\.css$/,
45
+ name: 'design-system',
46
+ chunks: 'all',
47
+ enforce: true,
48
+ },
49
+ 'anvil2': {
50
+ test: /@servicetitan\/anvil2\/.*\.css$/,
51
+ name: 'anvil2',
52
+ chunks: 'all',
53
+ enforce: true,
54
+ },
55
+ });
56
+ }
57
+ function webComponentConfig(optimization, context) {
58
+ const { isWebComponent, isProduction } = context;
59
+ if (!isWebComponent) {
60
+ return;
61
+ }
62
+ Object.assign(optimization.splitChunks.cacheGroups, {
63
+ styles: {
64
+ name: 'main',
65
+ type: 'css/mini-extract',
66
+ chunks: 'all',
67
+ enforce: true,
68
+ },
69
+ });
70
+ if (!isProduction) {
71
+ return;
72
+ }
73
+ Object.assign(optimization.splitChunks.cacheGroups, {
74
+ common: {
75
+ name: 'common',
76
+ test: /[\\/]node_modules[\\/](axios|classnames|formstate|mobx|mobx-react|mobx-utils|react|react-dom|react-router|react-router-dom)[\\/]/,
77
+ chunks: 'all',
78
+ },
79
+ kendo: {
80
+ name: 'kendo',
81
+ test: /[\\/]node_modules[\\/](@progress|@telerik)[\\/]/,
82
+ chunks: 'all',
83
+ },
84
+ servicetitan: {
85
+ name: 'servicetitan',
86
+ test: /[\\/]node_modules[\\/]@servicetitan[\\/]/,
87
+ chunks: 'all',
88
+ },
89
+ });
90
+ }
63
91
  //# sourceMappingURL=optimization-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"optimization-config.js","sourceRoot":"","sources":["../../../src/webpack/configs/optimization-config.ts"],"names":[],"mappings":";;;AAMA,SAAgB,kBAAkB,CAAC,OAAgB,EAAE,CAAY;IAC7D,MAAM,EAAE,0BAA0B,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAE7E,MAAM,YAAY,GAAmE;QACjF,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO;QAClD,SAAS,EAAE,MAAM;QACjB,aAAa,EAAE,MAAM;QACrB,WAAW,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;KACnC,CAAC;IAEF,IAAI,0BAA0B,EAAE,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE;YAChD,eAAe,EAAE;gBACb,IAAI,EAAE,yFAAyF;gBAC/F,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,IAAI;aAChB;YACD,QAAQ,EAAE;gBACN,IAAI,EAAE,iCAAiC;gBACvC,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,IAAI;aAChB;SACJ,CAAC,CAAC;IACP,CAAC;IAED,IAAI,cAAc,EAAE,CAAC;QACjB,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE;YAChD,MAAM,EAAE;gBACJ,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,IAAI;aAChB;SACJ,CAAC,CAAC;IACP,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACf,YAAY,CAAC,YAAY,GAAG,QAAQ,CAAC;QACrC,IAAI,cAAc,EAAE,CAAC;YACjB,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE;gBAChD,MAAM,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,kIAAkI;oBACxI,MAAM,EAAE,KAAK;iBAChB;gBACD,KAAK,EAAE;oBACH,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,iDAAiD;oBACvD,MAAM,EAAE,KAAK;iBAChB;gBACD,YAAY,EAAE;oBACV,IAAI,EAAE,cAAc;oBACpB,IAAI,EAAE,0CAA0C;oBAChD,MAAM,EAAE,KAAK;iBAChB;aACJ,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,CAAC;AAC5B,CAAC;AA9DD,gDA8DC"}
1
+ {"version":3,"file":"optimization-config.js","sourceRoot":"","sources":["../../../src/webpack/configs/optimization-config.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { getPackageData, loadSharedDependencies } from '../../utils';
1
+ import { getPackageData, loadSharedDependencies, MinifyOptions } from '../../utils';
2
2
  import { Options } from '../types';
3
3
  export { Overrides } from '../types';
4
4
  export interface Context extends Options {
@@ -11,6 +11,7 @@ export interface Context extends Options {
11
11
  isLegacyRoot: boolean;
12
12
  isProduction: boolean;
13
13
  isWebComponent: boolean;
14
+ minify?: MinifyOptions;
14
15
  packageData: ReturnType<typeof getPackageData>;
15
16
  sharedDependencies: ReturnType<typeof loadSharedDependencies>;
16
17
  source: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/webpack/configs/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,WAAW,OAAQ,SAAQ,OAAO;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,0BAA0B,EAAE,OAAO,CAAC;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;IAC/C,kBAAkB,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;IAC9D,MAAM,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/webpack/configs/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,WAAW,OAAQ,SAAQ,OAAO;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,0BAA0B,EAAE,OAAO,CAAC;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,WAAW,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;IAC/C,kBAAkB,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;IAC9D,MAAM,EAAE,MAAM,CAAC;CAClB"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-webpack-config.d.ts","sourceRoot":"","sources":["../../src/webpack/create-webpack-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AA8BxC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAG7C,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,GAAE,OAAY,GAAG,aAAa,CAwD9F"}
1
+ {"version":3,"file":"create-webpack-config.d.ts","sourceRoot":"","sources":["../../src/webpack/create-webpack-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AA+BxC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAG7C,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,GAAE,OAAY,GAAG,aAAa,CAwD9F"}
@@ -11,13 +11,14 @@ function createWebpackConfig(overrides, options = {}) {
11
11
  var _a, _b, _c;
12
12
  const { configuration = {} } = overrides;
13
13
  const { source, destination } = (0, utils_2.getFolders)();
14
+ const { minify } = (0, utils_2.getWebpackConfiguration)();
14
15
  const packageData = (0, utils_2.getPackageData)();
15
16
  const sharedDependencies = (0, utils_2.loadSharedDependencies)(packageData.dependencies, packageData.sharedDependencies);
16
- const context = Object.assign(Object.assign({ codeCoverage: (_a = options.codeCoverage) !== null && _a !== void 0 ? _a : !!yargs_1.argv['code-coverage'], destination, esbuild: (_b = options.esbuild) !== null && _b !== void 0 ? _b : !!yargs_1.argv.esbuild, experimentalBundlers: (_c = options.experimentalBundlers) !== null && _c !== void 0 ? _c : !!yargs_1.argv['experimental-bundlers'], isCustomStyleRules: (0, utils_2.isCustomStyleRules)(), isExposeSharedDependencies: (0, utils_2.isExposeSharedDependencies)(), isLegacyRoot: (0, utils_2.isLegacyRoot)(), isProduction: configuration.mode === 'production', isWebComponent: (0, utils_2.isWebComponent)(), name: '' }, options), { packageData,
17
+ const context = Object.assign(Object.assign({ codeCoverage: (_a = options.codeCoverage) !== null && _a !== void 0 ? _a : !!yargs_1.argv['code-coverage'], destination, esbuild: (_b = options.esbuild) !== null && _b !== void 0 ? _b : !!yargs_1.argv.esbuild, experimentalBundlers: (_c = options.experimentalBundlers) !== null && _c !== void 0 ? _c : !!yargs_1.argv['experimental-bundlers'], isCustomStyleRules: (0, utils_2.isCustomStyleRules)(), isExposeSharedDependencies: (0, utils_2.isExposeSharedDependencies)(), isLegacyRoot: (0, utils_2.isLegacyRoot)(), isProduction: configuration.mode === 'production', isWebComponent: (0, utils_2.isWebComponent)(), minify, name: '' }, options), { packageData,
17
18
  sharedDependencies,
18
19
  source });
19
20
  if (context.isWebComponent && isCalledFromCustomWebpackConfigFile()) {
20
- throw new Error('You cannot call createWebpackConfig in a custom webpack config file in a web component (MFE) project. Export webpack configuration itself as a default export from the config file instead.');
21
+ throw new Error(WEB_COMPONENT_CONFIG_ERROR);
21
22
  }
22
23
  const result = (0, webpack_merge_1.merge)([
23
24
  configs_1.cacheConfig,
@@ -63,4 +64,10 @@ function stringify(configuration) {
63
64
  }
64
65
  return JSON.stringify(configuration, replacer, 2);
65
66
  }
67
+ const WEB_COMPONENT_CONFIG_ERROR = `
68
+ You cannot call createWebpackConfig in a custom webpack config file in a web component (MFE) project.
69
+ Export webpack configuration itself as a default export from the config file instead.
70
+ `
71
+ .replace(/\n\s*/g, ' ')
72
+ .trim();
66
73
  //# sourceMappingURL=create-webpack-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-webpack-config.js","sourceRoot":"","sources":["../../src/webpack/create-webpack-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-webpack-config.js","sourceRoot":"","sources":["../../src/webpack/create-webpack-config.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/startup",
3
- "version": "26.1.0",
3
+ "version": "26.2.0",
4
4
  "description": "",
5
5
  "homepage": "https://docs.st.dev/docs/frontend/startup",
6
6
  "repository": {
@@ -36,8 +36,8 @@
36
36
  "@babel/preset-env": "~7.25.3",
37
37
  "@jest/core": "~29.7.0",
38
38
  "@jest/types": "~29.6.3",
39
- "@servicetitan/eslint-config": "26.1.0",
40
- "@servicetitan/stylelint-config": "26.1.0",
39
+ "@servicetitan/eslint-config": "26.2.0",
40
+ "@servicetitan/stylelint-config": "26.2.0",
41
41
  "@svgr/webpack": "^8.1.0",
42
42
  "@swc/core": "1.6.13",
43
43
  "@types/debug": "^4.1.12",
@@ -78,6 +78,7 @@
78
78
  "style-loader": "~4.0.0",
79
79
  "stylelint": "~14.16.1",
80
80
  "swc-loader": "0.2.6",
81
+ "terser-webpack-plugin": "^5.3.10",
81
82
  "ts-jest": "~29.2.4",
82
83
  "ts-loader": "~9.5.1",
83
84
  "ts-node": "~10.9.2",
@@ -104,5 +105,5 @@
104
105
  "cli": {
105
106
  "webpack": false
106
107
  },
107
- "gitHead": "4c71c8eb6e0144825b8f1542c097ff8a8bf1afe7"
108
+ "gitHead": "db962a72024497a2c475d3bbf9aab5f9c7aae223"
108
109
  }
@@ -10,6 +10,15 @@ export const allowedWebpackDevServerOptions = ['headers', 'port', 'proxy', 'stat
10
10
 
11
11
  type ElementType<T> = T extends readonly (infer ElementType)[] ? ElementType : never;
12
12
 
13
+ export interface MinifyJSOptions {
14
+ compress?: boolean;
15
+ mangle?: boolean;
16
+ }
17
+
18
+ export interface MinifyOptions {
19
+ js?: boolean | MinifyJSOptions;
20
+ }
21
+
13
22
  export interface WebpackConfiguration
14
23
  extends Omit<
15
24
  Pick<WebpackDevServerConfiguration, ElementType<typeof allowedWebpackDevServerOptions>>,
@@ -20,6 +29,7 @@ export interface WebpackConfiguration
20
29
  'expose-shared-dependencies'?: boolean;
21
30
  'devServer'?: WebpackDevServerConfiguration;
22
31
  'disable-style-check'?: boolean;
32
+ 'minify'?: MinifyOptions;
23
33
  'proxy'?: WebpackDevServerConfiguration['proxy'] | string;
24
34
  }
25
35
 
@@ -102,28 +112,21 @@ export function getStylelintConfiguration() {
102
112
  return getConfiguration().lint?.stylelint ?? {};
103
113
  }
104
114
 
115
+ export function getWebpackConfiguration(locationOrJson?: LocationOrJson) {
116
+ const { webpack } = getConfiguration(locationOrJson);
117
+ return typeof webpack === 'object' ? webpack : {};
118
+ }
119
+
105
120
  export function isBundle(locationOrJson?: LocationOrJson) {
106
121
  return getConfiguration(locationOrJson).webpack !== false;
107
122
  }
108
123
 
109
124
  export function isCustomStyleRules() {
110
- const configuration = getConfiguration();
111
-
112
- if (typeof configuration.webpack !== 'object') {
113
- return false;
114
- }
115
-
116
- return configuration.webpack['custom-style-rules'] === true;
125
+ return getWebpackConfiguration()['custom-style-rules'] === true;
117
126
  }
118
127
 
119
128
  export function isExposeSharedDependencies() {
120
- const configuration = getConfiguration();
121
-
122
- if (typeof configuration.webpack !== 'object') {
123
- return false;
124
- }
125
-
126
- return configuration.webpack['expose-shared-dependencies'] === true;
129
+ return getWebpackConfiguration()['expose-shared-dependencies'] === true;
127
130
  }
128
131
 
129
132
  export function isLegacy(locationOrJson?: LocationOrJson) {
@@ -136,13 +139,7 @@ export function isLegacyRoot() {
136
139
  }
137
140
 
138
141
  export function isStyleCheckDisabled() {
139
- const configuration = getConfiguration();
140
-
141
- if (typeof configuration.webpack !== 'object') {
142
- return false;
143
- }
144
-
145
- return configuration.webpack?.['disable-style-check'] === true;
142
+ return getWebpackConfiguration()['disable-style-check'] === true;
146
143
  }
147
144
 
148
145
  export function isWebComponent() {
@@ -5,6 +5,7 @@ import { fs, vol } from 'memfs';
5
5
  import MomentLocalesPlugin from 'moment-locales-webpack-plugin';
6
6
  import os from 'os';
7
7
  import path from 'path';
8
+ const TerserPlugin = require('terser-webpack-plugin');
8
9
  import { IgnorePlugin, ProvidePlugin } from 'webpack';
9
10
  import WebpackDevServer from 'webpack-dev-server';
10
11
  const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
@@ -21,6 +22,7 @@ import {
21
22
  getPackageDependencyVersion,
22
23
  getPackages,
23
24
  getTsConfig,
25
+ getWebpackConfiguration,
24
26
  isCustomStyleRules,
25
27
  isWebComponent,
26
28
  loadSharedDependencies,
@@ -39,6 +41,7 @@ jest.mock('mini-css-extract-plugin', () =>
39
41
  Object.assign(jest.fn(), { loader: 'MiniCssExtractPlugin.loader' })
40
42
  );
41
43
  jest.mock('moment-locales-webpack-plugin', () => jest.fn());
44
+ jest.mock('terser-webpack-plugin', () => jest.fn());
42
45
  jest.mock('webpack', () => ({
43
46
  ...jest.requireActual('webpack'),
44
47
  IgnorePlugin: jest.fn(),
@@ -57,6 +60,7 @@ jest.mock('../../utils', () => ({
57
60
  getPackageDependencyVersion: jest.fn(),
58
61
  getPackages: jest.fn(),
59
62
  getTsConfig: jest.fn(),
63
+ getWebpackConfiguration: jest.fn(),
60
64
  isCustomStyleRules: jest.fn(),
61
65
  isExposeSharedDependencies: jest.fn(),
62
66
  isWebComponent: jest.fn(),
@@ -120,8 +124,10 @@ describe(`[startup] ${createWebpackConfig.name}`, () => {
120
124
  jest.mocked(IgnorePlugin).mockImplementation(mockPlugIn('IgnorePlugin'));
121
125
  jest.mocked(MomentLocalesPlugin).mockImplementation(mockPlugIn('MomentLocalesPlugin'));
122
126
  jest.mocked(ProvidePlugin).mockImplementation(mockPlugIn('ProvidePlugin'));
127
+ jest.mocked(TerserPlugin).mockImplementation(mockPlugIn('TerserPlugin'));
123
128
 
124
129
  jest.mocked(getConfiguration).mockImplementation(() => configuration as any);
130
+ jest.mocked(getWebpackConfiguration).mockImplementation(() => configuration.webpack ?? {});
125
131
  jest.mocked(getFolders).mockImplementation((location?: string) => {
126
132
  const prefix = location ? `${location.replace(/\W/g, '')}-` : '';
127
133
  return { source: `${prefix}${source}`, destination };
@@ -625,6 +631,40 @@ describe(`[startup] ${createWebpackConfig.name}`, () => {
625
631
  expect(subject().optimization?.runtimeChunk).toBe('single');
626
632
  });
627
633
 
634
+ test('configures "optimization.minimize"', () => {
635
+ expect(subject().optimization?.minimize).toBe(true);
636
+ });
637
+
638
+ test('configures "optimization.minimizer"', () => {
639
+ expect(subject().optimization?.minimizer).toEqual([
640
+ new TerserPlugin({ terserOptions: { compress: false, mangle: false } }),
641
+ ]);
642
+ });
643
+
644
+ describe('when JS minification is turned off', () => {
645
+ beforeEach(() => (configuration = { webpack: { minify: { js: false } } }));
646
+
647
+ test('changes "optimization.minimize" to false', () => {
648
+ expect(subject().optimization?.minimize).toBe(false);
649
+ });
650
+
651
+ test('omits "optimization.minimizer"', () => {
652
+ expect(subject().optimization?.minimizer).toBeUndefined();
653
+ });
654
+ });
655
+
656
+ describe('with JS minification options', () => {
657
+ beforeEach(() => {
658
+ configuration = { webpack: { minify: { js: { compress: true, mangle: true } } } };
659
+ });
660
+
661
+ test('applies the options', () => {
662
+ expect(subject().optimization?.minimizer).toEqual([
663
+ new TerserPlugin({ terserOptions: configuration.webpack?.minify?.js }),
664
+ ]);
665
+ });
666
+ });
667
+
628
668
  Object.entries(productionStyleRules).forEach(([extension, rules]) => {
629
669
  test(`configures "${extension}" rules`, () => {
630
670
  expect(subject().module?.rules).toContainEqual(rules);
@@ -1,69 +1,109 @@
1
+ import TerserPlugin from 'terser-webpack-plugin';
1
2
  import { Configuration } from 'webpack';
2
3
  import { Context, Overrides } from './types';
3
4
 
4
5
  type Config = Configuration['optimization'];
6
+ type ConfigWithCacheGroups = Config & { splitChunks: { cacheGroups: Record<string, any> } };
5
7
  type Result = Pick<Configuration, 'optimization'>;
6
8
 
7
9
  export function optimizationConfig(context: Context, _: Overrides): Result {
8
- const { isExposeSharedDependencies, isProduction, isWebComponent } = context;
10
+ const { isProduction } = context;
9
11
 
10
- const optimization: Config & { splitChunks: { cacheGroups: Record<string, any> } } = {
12
+ const optimization: ConfigWithCacheGroups = {
11
13
  chunkIds: isProduction ? 'deterministic' : 'named',
12
14
  moduleIds: 'size',
13
15
  mangleExports: 'size',
14
16
  splitChunks: { cacheGroups: {} },
15
17
  };
16
18
 
17
- if (isExposeSharedDependencies) {
18
- Object.assign(optimization.splitChunks.cacheGroups, {
19
- 'design-system': {
20
- test: /[\\/]node_modules[\\/]@servicetitan[\\/](tokens|anvil-fonts|design-system)[\\/].*\.css$/,
21
- name: 'design-system',
22
- chunks: 'all',
23
- enforce: true,
24
- },
25
- 'anvil2': {
26
- test: /@servicetitan\/anvil2\/.*\.css$/,
27
- name: 'anvil2',
28
- chunks: 'all',
29
- enforce: true,
30
- },
31
- });
19
+ if (isProduction) {
20
+ optimization.runtimeChunk = 'single';
32
21
  }
33
22
 
34
- if (isWebComponent) {
35
- Object.assign(optimization.splitChunks.cacheGroups, {
36
- styles: {
37
- name: 'main',
38
- type: 'css/mini-extract',
39
- chunks: 'all',
40
- enforce: true,
41
- },
42
- });
23
+ [minimizeConfig, sharedDependenciesConfig, webComponentConfig].forEach(handler =>
24
+ handler(optimization, context)
25
+ );
26
+
27
+ return { optimization };
28
+ }
29
+
30
+ function minimizeConfig(optimization: ConfigWithCacheGroups, context: Context) {
31
+ const { isProduction } = context;
32
+ if (!isProduction) {
33
+ return;
43
34
  }
44
35
 
45
- if (isProduction) {
46
- optimization.runtimeChunk = 'single';
47
- if (isWebComponent) {
48
- Object.assign(optimization.splitChunks.cacheGroups, {
49
- common: {
50
- name: 'common',
51
- test: /[\\/]node_modules[\\/](axios|classnames|formstate|mobx|mobx-react|mobx-utils|react|react-dom|react-router|react-router-dom)[\\/]/,
52
- chunks: 'all',
53
- },
54
- kendo: {
55
- name: 'kendo',
56
- test: /[\\/]node_modules[\\/](@progress|@telerik)[\\/]/,
57
- chunks: 'all',
58
- },
59
- servicetitan: {
60
- name: 'servicetitan',
61
- test: /[\\/]node_modules[\\/]@servicetitan[\\/]/,
62
- chunks: 'all',
63
- },
64
- });
65
- }
36
+ const minify = context.minify?.js ?? true;
37
+ optimization.minimize = !!minify;
38
+ if (!optimization.minimize) {
39
+ return;
66
40
  }
67
41
 
68
- return { optimization };
42
+ const terserOptions = {
43
+ compress: false,
44
+ mangle: false,
45
+ ...(typeof minify === 'object' ? minify : {}),
46
+ };
47
+
48
+ optimization.minimizer = [new TerserPlugin({ terserOptions })];
49
+ }
50
+
51
+ function sharedDependenciesConfig(optimization: ConfigWithCacheGroups, context: Context) {
52
+ const { isExposeSharedDependencies } = context;
53
+ if (!isExposeSharedDependencies) {
54
+ return;
55
+ }
56
+
57
+ Object.assign(optimization.splitChunks.cacheGroups, {
58
+ 'design-system': {
59
+ test: /[\\/]node_modules[\\/]@servicetitan[\\/](tokens|anvil-fonts|design-system)[\\/].*\.css$/,
60
+ name: 'design-system',
61
+ chunks: 'all',
62
+ enforce: true,
63
+ },
64
+ 'anvil2': {
65
+ test: /@servicetitan\/anvil2\/.*\.css$/,
66
+ name: 'anvil2',
67
+ chunks: 'all',
68
+ enforce: true,
69
+ },
70
+ });
71
+ }
72
+
73
+ function webComponentConfig(optimization: ConfigWithCacheGroups, context: Context) {
74
+ const { isWebComponent, isProduction } = context;
75
+ if (!isWebComponent) {
76
+ return;
77
+ }
78
+
79
+ Object.assign(optimization.splitChunks.cacheGroups, {
80
+ styles: {
81
+ name: 'main',
82
+ type: 'css/mini-extract',
83
+ chunks: 'all',
84
+ enforce: true,
85
+ },
86
+ });
87
+
88
+ if (!isProduction) {
89
+ return;
90
+ }
91
+
92
+ Object.assign(optimization.splitChunks.cacheGroups, {
93
+ common: {
94
+ name: 'common',
95
+ test: /[\\/]node_modules[\\/](axios|classnames|formstate|mobx|mobx-react|mobx-utils|react|react-dom|react-router|react-router-dom)[\\/]/,
96
+ chunks: 'all',
97
+ },
98
+ kendo: {
99
+ name: 'kendo',
100
+ test: /[\\/]node_modules[\\/](@progress|@telerik)[\\/]/,
101
+ chunks: 'all',
102
+ },
103
+ servicetitan: {
104
+ name: 'servicetitan',
105
+ test: /[\\/]node_modules[\\/]@servicetitan[\\/]/,
106
+ chunks: 'all',
107
+ },
108
+ });
69
109
  }
@@ -1,4 +1,4 @@
1
- import { getPackageData, loadSharedDependencies } from '../../utils';
1
+ import { getPackageData, loadSharedDependencies, MinifyOptions } from '../../utils';
2
2
  import { Options } from '../types';
3
3
  export { Overrides } from '../types';
4
4
 
@@ -12,6 +12,7 @@ export interface Context extends Options {
12
12
  isLegacyRoot: boolean;
13
13
  isProduction: boolean;
14
14
  isWebComponent: boolean;
15
+ minify?: MinifyOptions;
15
16
  packageData: ReturnType<typeof getPackageData>;
16
17
  sharedDependencies: ReturnType<typeof loadSharedDependencies>;
17
18
  source: string;
@@ -6,6 +6,7 @@ import { webpackDevConfigFileName, webpackProdConfigFileName } from '../cli/util
6
6
  import {
7
7
  getFolders,
8
8
  getPackageData,
9
+ getWebpackConfiguration,
9
10
  isCustomStyleRules,
10
11
  isExposeSharedDependencies,
11
12
  isLegacyRoot,
@@ -35,6 +36,7 @@ export function createWebpackConfig(overrides: Overrides, options: Options = {})
35
36
  const { configuration = {} } = overrides;
36
37
 
37
38
  const { source, destination } = getFolders();
39
+ const { minify } = getWebpackConfiguration();
38
40
  const packageData = getPackageData();
39
41
  const sharedDependencies = loadSharedDependencies(
40
42
  packageData.dependencies,
@@ -52,6 +54,7 @@ export function createWebpackConfig(overrides: Overrides, options: Options = {})
52
54
  isLegacyRoot: isLegacyRoot(),
53
55
  isProduction: configuration.mode === 'production',
54
56
  isWebComponent: isWebComponent(),
57
+ minify,
55
58
  name: '',
56
59
  ...options,
57
60
  packageData,
@@ -60,9 +63,7 @@ export function createWebpackConfig(overrides: Overrides, options: Options = {})
60
63
  };
61
64
 
62
65
  if (context.isWebComponent && isCalledFromCustomWebpackConfigFile()) {
63
- throw new Error(
64
- 'You cannot call createWebpackConfig in a custom webpack config file in a web component (MFE) project. Export webpack configuration itself as a default export from the config file instead.'
65
- );
66
+ throw new Error(WEB_COMPONENT_CONFIG_ERROR);
66
67
  }
67
68
 
68
69
  const result = merge(
@@ -115,3 +116,10 @@ function stringify(configuration: any) {
115
116
  }
116
117
  return JSON.stringify(configuration, replacer, 2);
117
118
  }
119
+
120
+ const WEB_COMPONENT_CONFIG_ERROR = `
121
+ You cannot call createWebpackConfig in a custom webpack config file in a web component (MFE) project.
122
+ Export webpack configuration itself as a default export from the config file instead.
123
+ `
124
+ .replace(/\n\s*/g, ' ')
125
+ .trim();