@servicetitan/startup 22.17.0 → 22.19.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/dist/cli/commands/build.d.ts +3 -2
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +1 -0
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/bundle-package.d.ts +2 -1
- package/dist/cli/commands/bundle-package.d.ts.map +1 -1
- package/dist/cli/commands/bundle-package.js +4 -3
- package/dist/cli/commands/bundle-package.js.map +1 -1
- package/dist/cli/commands/mfe-publish.d.ts +1 -0
- package/dist/cli/commands/mfe-publish.d.ts.map +1 -1
- package/dist/cli/commands/mfe-publish.js +3 -2
- package/dist/cli/commands/mfe-publish.js.map +1 -1
- package/dist/cli/commands/start.d.ts +3 -2
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +3 -2
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/utils/bundle.d.ts +7 -2
- package/dist/cli/utils/bundle.d.ts.map +1 -1
- package/dist/cli/utils/bundle.js +28 -58
- package/dist/cli/utils/bundle.js.map +1 -1
- package/dist/cli/utils/set-node-options.d.ts.map +1 -1
- package/dist/cli/utils/set-node-options.js +1 -1
- package/dist/cli/utils/set-node-options.js.map +1 -1
- package/dist/utils/debug.d.ts +5 -0
- package/dist/utils/debug.d.ts.map +1 -0
- package/dist/utils/debug.js +19 -0
- package/dist/utils/debug.js.map +1 -0
- package/dist/utils/get-configuration.d.ts +1 -0
- package/dist/utils/get-configuration.d.ts.map +1 -1
- package/dist/utils/get-configuration.js +6 -1
- package/dist/utils/get-configuration.js.map +1 -1
- package/dist/utils/log.d.ts +6 -0
- package/dist/utils/log.d.ts.map +1 -1
- package/dist/utils/log.js +22 -0
- package/dist/utils/log.js.map +1 -1
- package/dist/webpack/__mocks__/file-rules.d.ts +3 -0
- package/dist/webpack/__mocks__/file-rules.d.ts.map +1 -0
- package/dist/webpack/__mocks__/file-rules.js +31 -0
- package/dist/webpack/__mocks__/file-rules.js.map +1 -0
- package/dist/webpack/__mocks__/index.d.ts +3 -0
- package/dist/webpack/__mocks__/index.d.ts.map +1 -0
- package/dist/webpack/__mocks__/index.js +19 -0
- package/dist/webpack/__mocks__/index.js.map +1 -0
- package/dist/webpack/__mocks__/style-rules.d.ts +8 -0
- package/dist/webpack/__mocks__/style-rules.d.ts.map +1 -0
- package/dist/webpack/__mocks__/style-rules.js +124 -0
- package/dist/webpack/__mocks__/style-rules.js.map +1 -0
- package/dist/webpack/configs/cache-config.d.ts +6 -0
- package/dist/webpack/configs/cache-config.d.ts.map +1 -0
- package/dist/webpack/configs/cache-config.js +24 -0
- package/dist/webpack/configs/cache-config.js.map +1 -0
- package/dist/webpack/configs/dev-server-config.d.ts +6 -0
- package/dist/webpack/configs/dev-server-config.d.ts.map +1 -0
- package/dist/webpack/configs/dev-server-config.js +27 -0
- package/dist/webpack/configs/dev-server-config.js.map +1 -0
- package/dist/webpack/configs/devtool-config.d.ts +6 -0
- package/dist/webpack/configs/devtool-config.d.ts.map +1 -0
- package/dist/webpack/configs/devtool-config.js +16 -0
- package/dist/webpack/configs/devtool-config.js.map +1 -0
- package/dist/webpack/configs/entry.config.d.ts +6 -0
- package/dist/webpack/configs/entry.config.d.ts.map +1 -0
- package/dist/webpack/configs/entry.config.js +14 -0
- package/dist/webpack/configs/entry.config.js.map +1 -0
- package/dist/webpack/configs/externals-config.d.ts +6 -0
- package/dist/webpack/configs/externals-config.d.ts.map +1 -0
- package/dist/webpack/configs/externals-config.js +16 -0
- package/dist/webpack/configs/externals-config.js.map +1 -0
- package/dist/webpack/configs/index.d.ts +13 -0
- package/dist/webpack/configs/index.d.ts.map +1 -0
- package/dist/webpack/configs/index.js +29 -0
- package/dist/webpack/configs/index.js.map +1 -0
- package/dist/webpack/configs/loaders/css-loader.d.ts +14 -0
- package/dist/webpack/configs/loaders/css-loader.d.ts.map +1 -0
- package/dist/webpack/configs/loaders/css-loader.js +17 -0
- package/dist/webpack/configs/loaders/css-loader.js.map +1 -0
- package/dist/webpack/configs/loaders/index.d.ts +5 -0
- package/dist/webpack/configs/loaders/index.d.ts.map +1 -0
- package/dist/webpack/configs/loaders/index.js +21 -0
- package/dist/webpack/configs/loaders/index.js.map +1 -0
- package/dist/webpack/configs/loaders/less-loader.d.ts +9 -0
- package/dist/webpack/configs/loaders/less-loader.d.ts.map +1 -0
- package/dist/webpack/configs/loaders/less-loader.js +8 -0
- package/dist/webpack/configs/loaders/less-loader.js.map +1 -0
- package/dist/webpack/configs/loaders/style-loader.d.ts +9 -0
- package/dist/webpack/configs/loaders/style-loader.d.ts.map +1 -0
- package/dist/webpack/configs/loaders/style-loader.js +13 -0
- package/dist/webpack/configs/loaders/style-loader.js.map +1 -0
- package/dist/webpack/configs/loaders/types.d.ts +4 -0
- package/dist/webpack/configs/loaders/types.d.ts.map +1 -0
- package/dist/webpack/configs/loaders/types.js +3 -0
- package/dist/webpack/configs/loaders/types.js.map +1 -0
- package/dist/webpack/configs/module-config.d.ts +6 -0
- package/dist/webpack/configs/module-config.d.ts.map +1 -0
- package/dist/webpack/configs/module-config.js +10 -0
- package/dist/webpack/configs/module-config.js.map +1 -0
- package/dist/webpack/configs/optimization-config.d.ts +6 -0
- package/dist/webpack/configs/optimization-config.d.ts.map +1 -0
- package/dist/webpack/configs/optimization-config.js +57 -0
- package/dist/webpack/configs/optimization-config.js.map +1 -0
- package/dist/webpack/configs/output-config.d.ts +6 -0
- package/dist/webpack/configs/output-config.d.ts.map +1 -0
- package/dist/webpack/configs/output-config.js +23 -0
- package/dist/webpack/configs/output-config.js.map +1 -0
- package/dist/webpack/configs/plugins/assets-manifest-plugin.d.ts +4 -0
- package/dist/webpack/configs/plugins/assets-manifest-plugin.d.ts.map +1 -0
- package/dist/webpack/configs/plugins/assets-manifest-plugin.js +34 -0
- package/dist/webpack/configs/plugins/assets-manifest-plugin.js.map +1 -0
- package/dist/webpack/configs/plugins/bundle-analyser-plugin.d.ts +3 -0
- package/dist/webpack/configs/plugins/bundle-analyser-plugin.d.ts.map +1 -0
- package/dist/webpack/configs/plugins/bundle-analyser-plugin.js +20 -0
- package/dist/webpack/configs/plugins/bundle-analyser-plugin.js.map +1 -0
- package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.d.ts +4 -0
- package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.d.ts.map +1 -0
- package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.js +25 -0
- package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.js.map +1 -0
- package/dist/webpack/configs/plugins/define-web-component-name-plugin.d.ts +4 -0
- package/dist/webpack/configs/plugins/define-web-component-name-plugin.d.ts.map +1 -0
- package/dist/webpack/configs/plugins/define-web-component-name-plugin.js +16 -0
- package/dist/webpack/configs/plugins/define-web-component-name-plugin.js.map +1 -0
- package/dist/webpack/configs/plugins/filter-warnings-plugin.d.ts +3 -0
- package/dist/webpack/configs/plugins/filter-warnings-plugin.d.ts.map +1 -0
- package/dist/webpack/configs/plugins/filter-warnings-plugin.js +14 -0
- package/dist/webpack/configs/plugins/filter-warnings-plugin.js.map +1 -0
- package/dist/webpack/configs/plugins/html-plugin.d.ts +4 -0
- package/dist/webpack/configs/plugins/html-plugin.d.ts.map +1 -0
- package/dist/webpack/configs/plugins/html-plugin.js +42 -0
- package/dist/webpack/configs/plugins/html-plugin.js.map +1 -0
- package/dist/webpack/configs/plugins/index.d.ts +12 -0
- package/dist/webpack/configs/plugins/index.d.ts.map +1 -0
- package/dist/webpack/configs/plugins/index.js +28 -0
- package/dist/webpack/configs/plugins/index.js.map +1 -0
- package/dist/webpack/configs/plugins/mini-css-extract-plugin.d.ts +4 -0
- package/dist/webpack/configs/plugins/mini-css-extract-plugin.d.ts.map +1 -0
- package/dist/webpack/configs/plugins/mini-css-extract-plugin.js +23 -0
- package/dist/webpack/configs/plugins/mini-css-extract-plugin.js.map +1 -0
- package/dist/webpack/configs/plugins/moment-locales-plugin.d.ts +4 -0
- package/dist/webpack/configs/plugins/moment-locales-plugin.d.ts.map +1 -0
- package/dist/webpack/configs/plugins/moment-locales-plugin.js +14 -0
- package/dist/webpack/configs/plugins/moment-locales-plugin.js.map +1 -0
- package/dist/webpack/configs/plugins/provide-react-plugin.d.ts +4 -0
- package/dist/webpack/configs/plugins/provide-react-plugin.d.ts.map +1 -0
- package/dist/webpack/configs/plugins/provide-react-plugin.js +14 -0
- package/dist/webpack/configs/plugins/provide-react-plugin.js.map +1 -0
- package/dist/webpack/configs/plugins/ts-checker-plugin.d.ts +4 -0
- package/dist/webpack/configs/plugins/ts-checker-plugin.d.ts.map +1 -0
- package/dist/webpack/configs/plugins/ts-checker-plugin.js +31 -0
- package/dist/webpack/configs/plugins/ts-checker-plugin.js.map +1 -0
- package/dist/webpack/configs/plugins/virtual-modules-plugin.d.ts +4 -0
- package/dist/webpack/configs/plugins/virtual-modules-plugin.d.ts.map +1 -0
- package/dist/webpack/configs/plugins/virtual-modules-plugin.js +42 -0
- package/dist/webpack/configs/plugins/virtual-modules-plugin.js.map +1 -0
- package/dist/webpack/configs/plugins-config.d.ts +6 -0
- package/dist/webpack/configs/plugins-config.d.ts.map +1 -0
- package/dist/webpack/configs/plugins-config.js +24 -0
- package/dist/webpack/configs/plugins-config.js.map +1 -0
- package/dist/webpack/configs/resolve-config.d.ts +6 -0
- package/dist/webpack/configs/resolve-config.d.ts.map +1 -0
- package/dist/webpack/configs/resolve-config.js +11 -0
- package/dist/webpack/configs/resolve-config.js.map +1 -0
- package/dist/webpack/configs/rules/css-rules.d.ts +4 -0
- package/dist/webpack/configs/rules/css-rules.d.ts.map +1 -0
- package/dist/webpack/configs/rules/css-rules.js +35 -0
- package/dist/webpack/configs/rules/css-rules.js.map +1 -0
- package/dist/webpack/configs/rules/font-rules.d.ts +4 -0
- package/dist/webpack/configs/rules/font-rules.d.ts.map +1 -0
- package/dist/webpack/configs/rules/font-rules.js +16 -0
- package/dist/webpack/configs/rules/font-rules.js.map +1 -0
- package/dist/webpack/configs/rules/image-rules.d.ts +4 -0
- package/dist/webpack/configs/rules/image-rules.d.ts.map +1 -0
- package/dist/webpack/configs/rules/image-rules.js +16 -0
- package/dist/webpack/configs/rules/image-rules.js.map +1 -0
- package/dist/webpack/configs/rules/index.d.ts +8 -0
- package/dist/webpack/configs/rules/index.d.ts.map +1 -0
- package/dist/webpack/configs/rules/index.js +24 -0
- package/dist/webpack/configs/rules/index.js.map +1 -0
- package/dist/webpack/configs/rules/js-rules.d.ts +4 -0
- package/dist/webpack/configs/rules/js-rules.d.ts.map +1 -0
- package/dist/webpack/configs/rules/js-rules.js +19 -0
- package/dist/webpack/configs/rules/js-rules.js.map +1 -0
- package/dist/webpack/configs/rules/less-rules.d.ts +4 -0
- package/dist/webpack/configs/rules/less-rules.d.ts.map +1 -0
- package/dist/webpack/configs/rules/less-rules.js +23 -0
- package/dist/webpack/configs/rules/less-rules.js.map +1 -0
- package/dist/webpack/configs/rules/scss-rules.d.ts +4 -0
- package/dist/webpack/configs/rules/scss-rules.d.ts.map +1 -0
- package/dist/webpack/configs/rules/scss-rules.js +23 -0
- package/dist/webpack/configs/rules/scss-rules.js.map +1 -0
- package/dist/webpack/configs/rules/tsx-rules.d.ts +4 -0
- package/dist/webpack/configs/rules/tsx-rules.d.ts.map +1 -0
- package/dist/webpack/configs/rules/tsx-rules.js +23 -0
- package/dist/webpack/configs/rules/tsx-rules.js.map +1 -0
- package/dist/webpack/configs/rules-config.d.ts +9 -0
- package/dist/webpack/configs/rules-config.d.ts.map +1 -0
- package/dist/webpack/configs/rules-config.js +31 -0
- package/dist/webpack/configs/rules-config.js.map +1 -0
- package/dist/webpack/configs/stats-config.d.ts +6 -0
- package/dist/webpack/configs/stats-config.d.ts.map +1 -0
- package/dist/webpack/configs/stats-config.js +16 -0
- package/dist/webpack/configs/stats-config.js.map +1 -0
- package/dist/webpack/configs/types.d.ts +15 -0
- package/dist/webpack/configs/types.d.ts.map +1 -0
- package/dist/webpack/configs/types.js +3 -0
- package/dist/webpack/configs/types.js.map +1 -0
- package/dist/webpack/configs/utils/generate-metadata.d.ts +3 -0
- package/dist/webpack/configs/utils/generate-metadata.d.ts.map +1 -0
- package/dist/webpack/configs/utils/generate-metadata.js +31 -0
- package/dist/webpack/configs/utils/generate-metadata.js.map +1 -0
- package/dist/webpack/configs/utils/get-startup-version.d.ts +2 -0
- package/dist/webpack/configs/utils/get-startup-version.d.ts.map +1 -0
- package/dist/webpack/configs/utils/get-startup-version.js +13 -0
- package/dist/webpack/configs/utils/get-startup-version.js.map +1 -0
- package/dist/webpack/configs/utils/index.d.ts +2 -0
- package/dist/webpack/configs/utils/index.d.ts.map +1 -0
- package/dist/webpack/configs/utils/index.js +18 -0
- package/dist/webpack/configs/utils/index.js.map +1 -0
- package/dist/webpack/create-webpack-config.d.ts +4 -0
- package/dist/webpack/create-webpack-config.d.ts.map +1 -0
- package/dist/webpack/create-webpack-config.js +67 -0
- package/dist/webpack/create-webpack-config.js.map +1 -0
- package/dist/webpack/index.d.ts +2 -10
- package/dist/webpack/index.d.ts.map +1 -1
- package/dist/webpack/index.js +16 -21
- package/dist/webpack/index.js.map +1 -1
- package/dist/webpack/types.d.ts +18 -0
- package/dist/webpack/types.d.ts.map +1 -0
- package/dist/webpack/types.js +3 -0
- package/dist/webpack/types.js.map +1 -0
- package/dist/webpack/utils/index.d.ts +5 -0
- package/dist/webpack/utils/index.d.ts.map +1 -0
- package/dist/webpack/utils/index.js +21 -0
- package/dist/webpack/utils/index.js.map +1 -0
- package/package.json +5 -4
- package/src/cli/commands/__tests__/build.test.ts +13 -0
- package/src/cli/commands/__tests__/bundle-package.test.ts +27 -4
- package/src/cli/commands/__tests__/mfe-package-publish.test.ts +10 -0
- package/src/cli/commands/__tests__/mfe-publish.test.ts +1 -0
- package/src/cli/commands/__tests__/start.test.ts +15 -0
- package/src/cli/commands/build.ts +4 -2
- package/src/cli/commands/bundle-package.ts +7 -4
- package/src/cli/commands/mfe-publish.ts +3 -1
- package/src/cli/commands/start.ts +6 -4
- package/src/cli/utils/__tests__/bundle.test.ts +142 -111
- package/src/cli/utils/__tests__/set-node-options.test.ts +4 -4
- package/src/cli/utils/bundle.ts +37 -118
- package/src/cli/utils/set-node-options.ts +2 -2
- package/src/utils/__tests__/get-configuration.test.ts +46 -0
- package/src/utils/__tests__/log.test.ts +43 -1
- package/src/utils/debug.ts +13 -0
- package/src/utils/get-configuration.ts +5 -1
- package/src/utils/log.ts +22 -0
- package/src/webpack/__mocks__/file-rules.ts +29 -0
- package/src/webpack/__mocks__/index.ts +2 -0
- package/src/webpack/__mocks__/style-rules.ts +126 -0
- package/src/webpack/__tests__/create-webpack-config-shared-dependencies.test.ts +162 -0
- package/src/webpack/__tests__/create-webpack-config-web-component.test.ts +331 -0
- package/src/webpack/__tests__/create-webpack-config.test.ts +400 -42
- package/src/webpack/configs/cache-config.ts +25 -0
- package/src/webpack/configs/dev-server-config.ts +43 -0
- package/src/webpack/configs/devtool-config.ts +18 -0
- package/src/webpack/configs/entry.config.ts +18 -0
- package/src/webpack/configs/externals-config.ts +21 -0
- package/src/webpack/configs/index.ts +12 -0
- package/src/webpack/configs/loaders/css-loader.ts +19 -0
- package/src/webpack/configs/loaders/index.ts +4 -0
- package/src/webpack/configs/loaders/less-loader.ts +3 -0
- package/src/webpack/configs/loaders/style-loader.ts +11 -0
- package/src/webpack/configs/loaders/types.ts +3 -0
- package/src/webpack/configs/module-config.ts +12 -0
- package/src/webpack/configs/optimization-config.ts +63 -0
- package/src/webpack/configs/output-config.ts +28 -0
- package/src/webpack/configs/plugins/assets-manifest-plugin.ts +34 -0
- package/src/webpack/configs/plugins/bundle-analyser-plugin.ts +18 -0
- package/src/webpack/configs/plugins/define-exposed-dependencies-plugin.ts +29 -0
- package/src/webpack/configs/plugins/define-web-component-name-plugin.ts +14 -0
- package/src/webpack/configs/plugins/filter-warnings-plugin.ts +12 -0
- package/src/webpack/configs/plugins/html-plugin.ts +53 -0
- package/src/webpack/configs/plugins/index.ts +11 -0
- package/src/webpack/configs/plugins/mini-css-extract-plugin.ts +19 -0
- package/src/webpack/configs/plugins/moment-locales-plugin.ts +8 -0
- package/src/webpack/configs/plugins/provide-react-plugin.ts +12 -0
- package/src/webpack/configs/plugins/ts-checker-plugin.ts +33 -0
- package/src/webpack/configs/plugins/virtual-modules-plugin.ts +42 -0
- package/src/webpack/configs/plugins-config.ts +38 -0
- package/src/webpack/configs/resolve-config.ts +13 -0
- package/src/webpack/configs/rules/css-rules.ts +36 -0
- package/src/webpack/configs/rules/font-rules.ts +14 -0
- package/src/webpack/configs/rules/image-rules.ts +14 -0
- package/src/webpack/configs/rules/index.ts +7 -0
- package/src/webpack/configs/rules/js-rules.ts +17 -0
- package/src/webpack/configs/rules/less-rules.ts +21 -0
- package/src/webpack/configs/rules/scss-rules.ts +21 -0
- package/src/webpack/configs/rules/tsx-rules.ts +22 -0
- package/src/webpack/configs/rules-config.ts +38 -0
- package/src/webpack/configs/stats-config.ts +18 -0
- package/src/webpack/configs/types.ts +15 -0
- package/src/webpack/configs/utils/__tests__/generate-metadata.test.ts +77 -0
- package/src/webpack/configs/utils/__tests__/get-startup-version.test.ts +27 -0
- package/src/webpack/configs/utils/generate-metadata.ts +30 -0
- package/src/webpack/configs/utils/get-startup-version.ts +8 -0
- package/src/webpack/configs/utils/index.ts +1 -0
- package/src/webpack/create-webpack-config.ts +110 -0
- package/src/webpack/index.ts +2 -52
- package/{dist/webpack/shared.config.d.ts → src/webpack/types.ts} +10 -4
- package/src/webpack/utils/index.ts +4 -0
- package/dist/webpack/development.config.d.ts +0 -11
- package/dist/webpack/development.config.d.ts.map +0 -1
- package/dist/webpack/development.config.js +0 -191
- package/dist/webpack/development.config.js.map +0 -1
- package/dist/webpack/production.config.d.ts +0 -14
- package/dist/webpack/production.config.d.ts.map +0 -1
- package/dist/webpack/production.config.js +0 -172
- package/dist/webpack/production.config.js.map +0 -1
- package/dist/webpack/shared.config.d.ts.map +0 -1
- package/dist/webpack/shared.config.js +0 -268
- package/dist/webpack/shared.config.js.map +0 -1
- package/src/webpack/__tests__/create-development-config.test.ts +0 -306
- package/src/webpack/__tests__/create-production-config.test.ts +0 -231
- package/src/webpack/__tests__/create-shared-config.test.ts +0 -508
- package/src/webpack/development.config.ts +0 -237
- package/src/webpack/production.config.ts +0 -197
- package/src/webpack/shared.config.ts +0 -360
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
1
|
import mockFS from 'mock-fs';
|
|
3
2
|
import path from 'path';
|
|
4
3
|
import webpack from 'webpack';
|
|
@@ -44,45 +43,36 @@ describe('[startup] Cli Utils', () => {
|
|
|
44
43
|
return expect.stringContaining(name);
|
|
45
44
|
}
|
|
46
45
|
|
|
47
|
-
function generatedMetadata(destination: string) {
|
|
48
|
-
return JSON.parse(fs.readFileSync(`${destination}/metadata.json`, 'utf8'));
|
|
49
|
-
}
|
|
50
|
-
|
|
51
46
|
function packageFS() {
|
|
52
47
|
return { 'package.json': JSON.stringify(pkg) };
|
|
53
48
|
}
|
|
54
49
|
|
|
55
|
-
function webComponentFS(
|
|
56
|
-
return {
|
|
57
|
-
'package.json': JSON.stringify({ ...pkg, cli: { 'web-component': true } }),
|
|
58
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
59
|
-
'node_modules': {
|
|
60
|
-
'@servicetitan': {
|
|
61
|
-
'package.json': JSON.stringify({ version: startupVersion }),
|
|
62
|
-
'startup': { 'index.js': '' },
|
|
63
|
-
},
|
|
64
|
-
},
|
|
65
|
-
};
|
|
50
|
+
function webComponentFS() {
|
|
51
|
+
return { 'package.json': JSON.stringify({ ...pkg, cli: { 'web-component': true } }) };
|
|
66
52
|
}
|
|
67
53
|
|
|
68
54
|
describe(`${bundle.name}`, () => {
|
|
69
|
-
const
|
|
55
|
+
const prodConfig = { configuration: { foo: 'bar' }, plugins: { baz: 'qux' } };
|
|
56
|
+
const customConfig = { configuration: { baz: 'qux' }, plugins: { foo: 'bar' } };
|
|
57
|
+
const customConfigFileName = 'custom.prod.config.js';
|
|
70
58
|
const stats: Partial<webpack.Stats> = { hasErrors: () => false, toString: () => 'foo' };
|
|
71
|
-
|
|
59
|
+
|
|
60
|
+
let options: Parameters<typeof bundle>[0];
|
|
72
61
|
let stdoutSpy: jest.SpyInstance;
|
|
73
62
|
|
|
74
63
|
beforeEach(() => {
|
|
75
64
|
mockFS(packageFS());
|
|
65
|
+
options = { buildStat: false };
|
|
66
|
+
stdoutSpy = jest.spyOn(process.stdout, 'write').mockImplementation(jest.fn());
|
|
67
|
+
compiler.run = jest.fn(callback => callback(null, stats as any));
|
|
76
68
|
// Allows config file to be loaded with require(...)
|
|
77
|
-
jest.doMock(path.resolve(webpackProdConfigFileName), () =>
|
|
69
|
+
jest.doMock(path.resolve(webpackProdConfigFileName), () => prodConfig, {
|
|
78
70
|
virtual: true,
|
|
79
71
|
});
|
|
80
|
-
|
|
81
|
-
stdoutSpy = jest.spyOn(process.stdout, 'write').mockImplementation(jest.fn());
|
|
82
|
-
compiler.run = jest.fn(callback => callback(null, stats as any));
|
|
72
|
+
jest.doMock(path.resolve(customConfigFileName), () => customConfig, { virtual: true });
|
|
83
73
|
});
|
|
84
74
|
|
|
85
|
-
const subject = async () => bundle(
|
|
75
|
+
const subject = async () => bundle(options);
|
|
86
76
|
|
|
87
77
|
test('runs webpack and outputs stats', async () => {
|
|
88
78
|
const toStringSpy = jest.spyOn(stats, 'toString');
|
|
@@ -91,7 +81,7 @@ describe('[startup] Cli Utils', () => {
|
|
|
91
81
|
|
|
92
82
|
expect(createWebpackConfig).toHaveBeenCalledWith(
|
|
93
83
|
{ configuration: { mode: 'production' } },
|
|
94
|
-
{ buildStat, name: expectPackageName() }
|
|
84
|
+
{ buildStat: options?.buildStat, name: expectPackageName() }
|
|
95
85
|
);
|
|
96
86
|
expect(webpack).toHaveBeenCalledWith(createWebpackResult);
|
|
97
87
|
expect(compiler.run).toHaveBeenCalled();
|
|
@@ -137,99 +127,105 @@ describe('[startup] Cli Utils', () => {
|
|
|
137
127
|
});
|
|
138
128
|
});
|
|
139
129
|
|
|
130
|
+
function itUsesConfig(params: { config: () => Record<string, any>; name: string }) {
|
|
131
|
+
test(`uses ${params.name}`, async () => {
|
|
132
|
+
await subject();
|
|
133
|
+
|
|
134
|
+
expect(webpack).toHaveBeenCalledWith(params.config());
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
|
|
140
138
|
describe(`with ${webpackProdConfigFileName} config`, () => {
|
|
141
|
-
|
|
139
|
+
const FS = { ...packageFS(), [webpackProdConfigFileName]: '' };
|
|
142
140
|
|
|
143
|
-
|
|
144
|
-
|
|
141
|
+
beforeEach(() => mockFS(FS));
|
|
142
|
+
|
|
143
|
+
itUsesConfig({ name: webpackProdConfigFileName, config: () => prodConfig });
|
|
144
|
+
|
|
145
|
+
describe('with custom config', () => {
|
|
146
|
+
beforeEach(() => {
|
|
147
|
+
options = { config: customConfigFileName };
|
|
148
|
+
mockFS({ ...FS, [customConfigFileName]: '' });
|
|
149
|
+
});
|
|
145
150
|
|
|
146
|
-
|
|
151
|
+
itUsesConfig({ name: 'custom config', config: () => customConfig });
|
|
152
|
+
|
|
153
|
+
describe('when custom config file does not exist', () => {
|
|
154
|
+
beforeEach(() => (options!.config = 'bogus.config.js'));
|
|
155
|
+
|
|
156
|
+
itUsesConfig({ name: webpackProdConfigFileName, config: () => prodConfig });
|
|
157
|
+
});
|
|
147
158
|
});
|
|
148
159
|
});
|
|
149
160
|
|
|
150
161
|
describe('when package is a web component', () => {
|
|
151
162
|
const source = 'src';
|
|
152
163
|
const destination = 'dist';
|
|
153
|
-
const startupVersion = '1.0.0';
|
|
154
164
|
const dependencies = { foo: '1.0.1' };
|
|
155
165
|
const sharedDependencies = { react: 'SharedDependencies.React' };
|
|
156
166
|
|
|
157
167
|
beforeEach(() => {
|
|
158
|
-
mockFS(webComponentFS(
|
|
168
|
+
mockFS(webComponentFS());
|
|
159
169
|
jest.mocked(getFolders).mockReturnValue({ source, destination });
|
|
160
170
|
jest.mocked(getPackageData).mockReturnValue({ dependencies });
|
|
161
171
|
jest.mocked(loadSharedDependencies).mockReturnValue(sharedDependencies);
|
|
162
172
|
});
|
|
163
173
|
|
|
164
174
|
test('builds full and "embed" packages', async () => {
|
|
165
|
-
const
|
|
175
|
+
const createOptions = { buildStat: options?.buildStat, name: expectPackageName() };
|
|
166
176
|
const overrides = { configuration: { mode: 'production' } };
|
|
167
177
|
|
|
168
178
|
await subject();
|
|
169
179
|
|
|
170
|
-
expect(createWebpackConfig).toHaveBeenCalledWith(overrides,
|
|
180
|
+
expect(createWebpackConfig).toHaveBeenCalledWith(overrides, createOptions);
|
|
171
181
|
expect(createWebpackConfig).toHaveBeenCalledWith(overrides, {
|
|
172
|
-
...
|
|
182
|
+
...createOptions,
|
|
173
183
|
embed: true,
|
|
174
184
|
});
|
|
175
185
|
expect(compiler.run).toHaveBeenCalledTimes(2);
|
|
176
186
|
});
|
|
177
187
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
188
|
+
function itUsesConfig(params: { config: () => Record<string, any>; name: string }) {
|
|
189
|
+
test(`uses ${params.name}`, async () => {
|
|
190
|
+
const { configuration, plugins } = params.config();
|
|
191
|
+
const createOptions = {
|
|
192
|
+
buildStat: options?.buildStat,
|
|
193
|
+
name: expectPackageName(),
|
|
194
|
+
};
|
|
195
|
+
const overrides = {
|
|
196
|
+
configuration: { mode: 'production', ...configuration },
|
|
197
|
+
plugins,
|
|
198
|
+
};
|
|
189
199
|
|
|
190
|
-
|
|
191
|
-
const full = { css: 'foo', js: 'bar ' };
|
|
192
|
-
const light = { css: 'baz', js: 'qux' };
|
|
200
|
+
await subject();
|
|
193
201
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
...
|
|
197
|
-
|
|
198
|
-
bundle: {
|
|
199
|
-
full: { 'entrypoints.json': JSON.stringify(full) },
|
|
200
|
-
light: { 'entrypoints.json': JSON.stringify(light) },
|
|
201
|
-
},
|
|
202
|
-
},
|
|
202
|
+
expect(createWebpackConfig).toHaveBeenCalledWith(overrides, createOptions);
|
|
203
|
+
expect(createWebpackConfig).toHaveBeenCalledWith(overrides, {
|
|
204
|
+
...createOptions,
|
|
205
|
+
embed: true,
|
|
203
206
|
});
|
|
204
207
|
});
|
|
208
|
+
}
|
|
205
209
|
|
|
206
|
-
|
|
207
|
-
|
|
210
|
+
describe(`with ${webpackProdConfigFileName} config`, () => {
|
|
211
|
+
const FS = { ...webComponentFS(), [webpackProdConfigFileName]: '' };
|
|
208
212
|
|
|
209
|
-
|
|
210
|
-
expect.objectContaining({ entrypoints: { full, light } })
|
|
211
|
-
);
|
|
212
|
-
});
|
|
213
|
-
});
|
|
213
|
+
beforeEach(() => mockFS(FS));
|
|
214
214
|
|
|
215
|
-
|
|
216
|
-
beforeEach(() => {
|
|
217
|
-
mockFS({ ...webComponentFS(startupVersion), [webpackProdConfigFileName]: '' });
|
|
218
|
-
});
|
|
215
|
+
itUsesConfig({ name: webpackProdConfigFileName, config: () => prodConfig });
|
|
219
216
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
};
|
|
217
|
+
describe('with custom config', () => {
|
|
218
|
+
beforeEach(() => {
|
|
219
|
+
options = { config: customConfigFileName };
|
|
220
|
+
mockFS({ ...FS, [customConfigFileName]: '' });
|
|
221
|
+
});
|
|
226
222
|
|
|
227
|
-
|
|
223
|
+
itUsesConfig({ name: 'custom config', config: () => customConfig });
|
|
228
224
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
225
|
+
describe('when custom config file does not exist', () => {
|
|
226
|
+
beforeEach(() => (options!.config = 'bogus.config.js'));
|
|
227
|
+
|
|
228
|
+
itUsesConfig({ name: webpackProdConfigFileName, config: () => prodConfig });
|
|
233
229
|
});
|
|
234
230
|
});
|
|
235
231
|
});
|
|
@@ -237,22 +233,26 @@ describe('[startup] Cli Utils', () => {
|
|
|
237
233
|
});
|
|
238
234
|
|
|
239
235
|
describe(`${bundleWatch.name}`, () => {
|
|
240
|
-
const
|
|
236
|
+
const devConfig = {
|
|
241
237
|
devServer: { host: 'http://127.0.0.0', port: '9000' },
|
|
242
238
|
configuration: { foo: 'bar' },
|
|
243
239
|
plugins: { baz: 'qux' },
|
|
244
240
|
};
|
|
241
|
+
const customConfig = {
|
|
242
|
+
devServer: { port: 9009 },
|
|
243
|
+
configuration: { baz: 'qux' },
|
|
244
|
+
plugins: { foo: 'bar' },
|
|
245
|
+
};
|
|
246
|
+
const customConfigFileName = 'custom.dev.config.js';
|
|
247
|
+
let options: Parameters<typeof bundle>[0];
|
|
245
248
|
|
|
246
249
|
function stopWatching(callback?: Function) {
|
|
247
250
|
setTimeout(() => callback?.(new Error('stopped')), 0);
|
|
248
251
|
}
|
|
249
252
|
|
|
250
253
|
beforeEach(() => {
|
|
254
|
+
options = undefined;
|
|
251
255
|
mockFS(packageFS());
|
|
252
|
-
// Allows config file to be loaded with require(...)
|
|
253
|
-
jest.doMock(path.resolve(webpackDevConfigFileName), () => customDevConfig, {
|
|
254
|
-
virtual: true,
|
|
255
|
-
});
|
|
256
256
|
jest.mocked(WebpackDevServer).mockImplementation((): any => ({
|
|
257
257
|
listen: jest.fn((_0: number, _1: string, callback?: (error?: Error) => void) =>
|
|
258
258
|
stopWatching(callback)
|
|
@@ -263,10 +263,13 @@ describe('[startup] Cli Utils', () => {
|
|
|
263
263
|
stopWatching(callback);
|
|
264
264
|
return { compiler, close: compiler.close };
|
|
265
265
|
});
|
|
266
|
+
// Allows config files to be loaded with require(...)
|
|
267
|
+
jest.doMock(path.resolve(customConfigFileName), () => customConfig, { virtual: true });
|
|
268
|
+
jest.doMock(path.resolve(webpackDevConfigFileName), () => devConfig, { virtual: true });
|
|
266
269
|
});
|
|
267
270
|
|
|
268
271
|
const subject = async () => {
|
|
269
|
-
await expect(bundleWatch()).rejects.toThrowError('stopped');
|
|
272
|
+
await expect(bundleWatch(options)).rejects.toThrowError('stopped');
|
|
270
273
|
};
|
|
271
274
|
|
|
272
275
|
test('runs webpack development server', async () => {
|
|
@@ -280,45 +283,53 @@ describe('[startup] Cli Utils', () => {
|
|
|
280
283
|
expect(WebpackDevServer).toHaveBeenCalledWith(compiler, {});
|
|
281
284
|
});
|
|
282
285
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
test('uses config', async () => {
|
|
287
|
-
const { devServer, ...config } = customDevConfig;
|
|
286
|
+
function itUsesConfig(params: { name: string; config: () => Record<string, any> }) {
|
|
287
|
+
test(`uses ${params.name}`, async () => {
|
|
288
|
+
const { devServer, ...config } = params.config();
|
|
288
289
|
|
|
289
290
|
await subject();
|
|
290
291
|
|
|
291
292
|
expect(webpack).toHaveBeenCalledWith(config);
|
|
292
293
|
expect(WebpackDevServer).toHaveBeenCalledWith(compiler, devServer);
|
|
293
294
|
});
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
describe(`with ${webpackDevConfigFileName} config`, () => {
|
|
298
|
+
const FS = { ...packageFS(), [webpackDevConfigFileName]: '' };
|
|
299
|
+
|
|
300
|
+
beforeEach(() => mockFS(FS));
|
|
301
|
+
|
|
302
|
+
itUsesConfig({ name: webpackDevConfigFileName, config: () => devConfig });
|
|
303
|
+
|
|
304
|
+
describe('with custom config', () => {
|
|
305
|
+
beforeEach(() => {
|
|
306
|
+
options = { config: customConfigFileName };
|
|
307
|
+
mockFS({ ...FS, [customConfigFileName]: '' });
|
|
308
|
+
});
|
|
309
|
+
|
|
310
|
+
itUsesConfig({ name: 'custom config', config: () => customConfig });
|
|
311
|
+
|
|
312
|
+
describe('when custom config does not exist', () => {
|
|
313
|
+
beforeEach(() => (options!.config = 'bogus.config.js'));
|
|
314
|
+
|
|
315
|
+
itUsesConfig({ name: webpackDevConfigFileName, config: () => devConfig });
|
|
316
|
+
});
|
|
317
|
+
});
|
|
294
318
|
});
|
|
295
319
|
|
|
296
320
|
describe('when package is a web component', () => {
|
|
297
321
|
const source = 'src';
|
|
298
322
|
const destination = 'dist';
|
|
299
|
-
const startupVersion = '1.0.0';
|
|
300
323
|
const dependencies = { foo: '1.0.1' };
|
|
301
324
|
const sharedDependencies = { react: 'SharedDependencies.React' };
|
|
302
325
|
|
|
303
326
|
beforeEach(() => {
|
|
304
|
-
mockFS(webComponentFS(
|
|
327
|
+
mockFS(webComponentFS());
|
|
305
328
|
jest.mocked(getFolders).mockReturnValue({ source, destination });
|
|
306
329
|
jest.mocked(getPackageData).mockReturnValue({ dependencies });
|
|
307
330
|
jest.mocked(loadSharedDependencies).mockReturnValue(sharedDependencies);
|
|
308
331
|
});
|
|
309
332
|
|
|
310
|
-
test('generates package metadata', async () => {
|
|
311
|
-
await subject();
|
|
312
|
-
|
|
313
|
-
expect(generatedMetadata(destination)).toEqual({
|
|
314
|
-
name: expectPackageName(),
|
|
315
|
-
bundledWith: { '@servicetitan/startup': startupVersion },
|
|
316
|
-
dependencies,
|
|
317
|
-
sharedDependencies,
|
|
318
|
-
entrypoints: {},
|
|
319
|
-
});
|
|
320
|
-
});
|
|
321
|
-
|
|
322
333
|
test('runs webpack and webpack development server', async () => {
|
|
323
334
|
const options = { name: expectPackageName() };
|
|
324
335
|
const overrides = { configuration: { mode: 'development' } };
|
|
@@ -335,16 +346,13 @@ describe('[startup] Cli Utils', () => {
|
|
|
335
346
|
expect(WebpackDevServer).toHaveBeenCalledWith(compiler, {});
|
|
336
347
|
});
|
|
337
348
|
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
mockFS({ ...webComponentFS(startupVersion), [webpackDevConfigFileName]: '' });
|
|
341
|
-
});
|
|
342
|
-
|
|
343
|
-
test('uses config', async () => {
|
|
349
|
+
function itUsesConfig(params: { name: string; config: () => Record<string, any> }) {
|
|
350
|
+
test(`uses ${params.name}`, async () => {
|
|
344
351
|
const options = { name: expectPackageName() };
|
|
352
|
+
const { configuration, plugins } = params.config();
|
|
345
353
|
const overrides = {
|
|
346
|
-
configuration: { mode: 'development', ...
|
|
347
|
-
plugins
|
|
354
|
+
configuration: { mode: 'development', ...configuration },
|
|
355
|
+
plugins,
|
|
348
356
|
};
|
|
349
357
|
|
|
350
358
|
await subject();
|
|
@@ -355,6 +363,29 @@ describe('[startup] Cli Utils', () => {
|
|
|
355
363
|
embed: true,
|
|
356
364
|
});
|
|
357
365
|
});
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
describe(`with ${webpackDevConfigFileName} config`, () => {
|
|
369
|
+
const FS = { ...webComponentFS(), [webpackDevConfigFileName]: '' };
|
|
370
|
+
|
|
371
|
+
beforeEach(() => mockFS(FS));
|
|
372
|
+
|
|
373
|
+
itUsesConfig({ name: webpackDevConfigFileName, config: () => devConfig });
|
|
374
|
+
|
|
375
|
+
describe('with custom config', () => {
|
|
376
|
+
beforeEach(() => {
|
|
377
|
+
options = { config: customConfigFileName };
|
|
378
|
+
mockFS({ ...FS, [customConfigFileName]: '' });
|
|
379
|
+
});
|
|
380
|
+
|
|
381
|
+
itUsesConfig({ name: 'custom config', config: () => customConfig });
|
|
382
|
+
|
|
383
|
+
describe('when custom config does not exist', () => {
|
|
384
|
+
beforeEach(() => (options!.config = 'bogus.config.js'));
|
|
385
|
+
|
|
386
|
+
itUsesConfig({ name: webpackDevConfigFileName, config: () => devConfig });
|
|
387
|
+
});
|
|
388
|
+
});
|
|
358
389
|
});
|
|
359
390
|
});
|
|
360
391
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import os from 'os';
|
|
2
|
-
import {
|
|
2
|
+
import { getConfigurationSafe } from '../../../utils';
|
|
3
3
|
import { CommandName } from '../../../utils/get-configuration';
|
|
4
4
|
|
|
5
5
|
import { setNodeOptions } from '../set-node-options';
|
|
@@ -9,7 +9,7 @@ jest.mock('os', () => ({
|
|
|
9
9
|
}));
|
|
10
10
|
|
|
11
11
|
jest.mock('../../../utils', () => ({
|
|
12
|
-
|
|
12
|
+
getConfigurationSafe: jest.fn(() => ({})),
|
|
13
13
|
}));
|
|
14
14
|
|
|
15
15
|
describe(`[startup] utils:${setNodeOptions.name}`, () => {
|
|
@@ -76,7 +76,7 @@ describe(`[startup] utils:${setNodeOptions.name}`, () => {
|
|
|
76
76
|
|
|
77
77
|
beforeEach(() => {
|
|
78
78
|
options = ['--no-warning', '--test'];
|
|
79
|
-
(
|
|
79
|
+
(getConfigurationSafe as jest.Mock).mockImplementation(() => ({
|
|
80
80
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
81
81
|
NODE_OPTIONS: options,
|
|
82
82
|
}));
|
|
@@ -117,7 +117,7 @@ describe(`[startup] utils:${setNodeOptions.name}`, () => {
|
|
|
117
117
|
const options = ['--no-warning', '--test'];
|
|
118
118
|
|
|
119
119
|
beforeEach(() =>
|
|
120
|
-
(
|
|
120
|
+
(getConfigurationSafe as jest.Mock).mockReturnValue({
|
|
121
121
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
122
122
|
[command]: { NODE_OPTIONS: options },
|
|
123
123
|
})
|
package/src/cli/utils/bundle.ts
CHANGED
|
@@ -6,18 +6,14 @@ import { getPortPromise } from 'portfinder';
|
|
|
6
6
|
import webpack, { Configuration } from 'webpack';
|
|
7
7
|
import WebpackDevServer from 'webpack-dev-server';
|
|
8
8
|
|
|
9
|
-
import {
|
|
10
|
-
getFolders,
|
|
11
|
-
getPackageName,
|
|
12
|
-
getPackageData,
|
|
13
|
-
isWebComponent,
|
|
14
|
-
loadSharedDependencies,
|
|
15
|
-
readJson,
|
|
16
|
-
log,
|
|
17
|
-
readJsonSafe,
|
|
18
|
-
} from '../../utils';
|
|
9
|
+
import { getPackageName, isWebComponent, log } from '../../utils';
|
|
19
10
|
import { Overrides, createWebpackConfig } from '../../webpack';
|
|
20
11
|
|
|
12
|
+
interface Options {
|
|
13
|
+
buildStat?: boolean;
|
|
14
|
+
config?: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
21
17
|
function getName() {
|
|
22
18
|
const packageName = getPackageName()
|
|
23
19
|
.replace(/\//g, '-')
|
|
@@ -30,48 +26,15 @@ function getName() {
|
|
|
30
26
|
export const webpackDevConfigFileName = 'webpack.dev.config.js';
|
|
31
27
|
export const webpackProdConfigFileName = 'webpack.prod.config.js';
|
|
32
28
|
|
|
33
|
-
function
|
|
34
|
-
const { destination } = getFolders();
|
|
35
|
-
const packageData = getPackageData();
|
|
36
|
-
|
|
37
|
-
const sharedDependencies = loadSharedDependencies(
|
|
38
|
-
packageData.dependencies,
|
|
39
|
-
packageData.sharedDependencies
|
|
40
|
-
);
|
|
41
|
-
|
|
42
|
-
if (!fs.existsSync(`./${destination}`)) {
|
|
43
|
-
fs.mkdirSync(`./${destination}`, { recursive: true });
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const entryPointsFull = readJsonSafe(path.join('dist', 'bundle', 'full', 'entrypoints.json'));
|
|
47
|
-
const entryPointsLight = readJsonSafe(path.join('dist', 'bundle', 'light', 'entrypoints.json'));
|
|
48
|
-
|
|
49
|
-
fs.writeFileSync(
|
|
50
|
-
`./${destination}/metadata.json`,
|
|
51
|
-
JSON.stringify({
|
|
52
|
-
name,
|
|
53
|
-
bundledWith: {
|
|
54
|
-
'@servicetitan/startup': readJson(
|
|
55
|
-
path.join(
|
|
56
|
-
path.dirname(require.resolve('@servicetitan/startup')),
|
|
57
|
-
'../package.json'
|
|
58
|
-
)
|
|
59
|
-
).version,
|
|
60
|
-
},
|
|
61
|
-
sharedDependencies,
|
|
62
|
-
dependencies: packageData.dependencies,
|
|
63
|
-
entrypoints: {
|
|
64
|
-
...(entryPointsFull ? { full: entryPointsFull } : {}),
|
|
65
|
-
...(entryPointsLight ? { light: entryPointsLight } : {}),
|
|
66
|
-
},
|
|
67
|
-
}),
|
|
68
|
-
'utf8'
|
|
69
|
-
);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export async function bundle(buildStat: boolean) {
|
|
29
|
+
export async function bundle(options: Options = {}) {
|
|
73
30
|
log.info('Bundling the package...');
|
|
74
31
|
|
|
32
|
+
const name = getName();
|
|
33
|
+
const mode = 'production';
|
|
34
|
+
const fallback = `./${webpackProdConfigFileName}`;
|
|
35
|
+
const config = readWebpackConfig({ ...options, fallback });
|
|
36
|
+
const { buildStat } = options;
|
|
37
|
+
|
|
75
38
|
const run = async (config: Configuration) => {
|
|
76
39
|
const compiler = webpack(config);
|
|
77
40
|
|
|
@@ -92,54 +55,28 @@ export async function bundle(buildStat: boolean) {
|
|
|
92
55
|
process.stdout.write(stats.toString(config.stats) + '\n');
|
|
93
56
|
};
|
|
94
57
|
|
|
95
|
-
const name = getName();
|
|
96
|
-
const configRelativePath = `./${webpackProdConfigFileName}`;
|
|
97
|
-
|
|
98
58
|
if (isWebComponent()) {
|
|
99
|
-
|
|
100
|
-
configuration: { mode
|
|
59
|
+
const webpackConfig: Overrides = {
|
|
60
|
+
configuration: { ...config?.configuration, mode },
|
|
61
|
+
plugins: config?.plugins,
|
|
101
62
|
};
|
|
102
63
|
|
|
103
|
-
if (fs.existsSync(configRelativePath)) {
|
|
104
|
-
const { configuration, plugins } = require(path.resolve(configRelativePath));
|
|
105
|
-
|
|
106
|
-
webpackConfig = {
|
|
107
|
-
configuration: {
|
|
108
|
-
...configuration,
|
|
109
|
-
...webpackConfig.configuration,
|
|
110
|
-
},
|
|
111
|
-
plugins: {
|
|
112
|
-
...plugins,
|
|
113
|
-
...webpackConfig.plugins,
|
|
114
|
-
},
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
|
|
118
64
|
return Promise.all([
|
|
119
65
|
run(createWebpackConfig(webpackConfig, { embed: true, name, buildStat })),
|
|
120
66
|
run(createWebpackConfig(webpackConfig, { name, buildStat })),
|
|
121
|
-
])
|
|
122
|
-
generateWebComponentMetadata(name);
|
|
123
|
-
|
|
124
|
-
return result;
|
|
125
|
-
});
|
|
67
|
+
]);
|
|
126
68
|
}
|
|
127
69
|
|
|
128
|
-
return run(
|
|
129
|
-
fs.existsSync(configRelativePath)
|
|
130
|
-
? require(path.resolve(configRelativePath))
|
|
131
|
-
: createWebpackConfig(
|
|
132
|
-
{
|
|
133
|
-
configuration: { mode: 'production' },
|
|
134
|
-
},
|
|
135
|
-
{ buildStat, name }
|
|
136
|
-
)
|
|
137
|
-
);
|
|
70
|
+
return run(config ?? createWebpackConfig({ configuration: { mode } }, { buildStat, name }));
|
|
138
71
|
}
|
|
139
72
|
|
|
140
|
-
export async function bundleWatch() {
|
|
73
|
+
export async function bundleWatch(options: Options = {}) {
|
|
141
74
|
log.info('Bundling the package...');
|
|
142
75
|
|
|
76
|
+
const name = getName();
|
|
77
|
+
const mode = 'development';
|
|
78
|
+
const config = readWebpackConfig({ ...options, fallback: `./${webpackDevConfigFileName}` });
|
|
79
|
+
|
|
143
80
|
const runServe = async ({ devServer = {}, ...config }: Configuration) => {
|
|
144
81
|
const compiler = webpack(config);
|
|
145
82
|
const host = devServer.host ?? 'localhost';
|
|
@@ -174,45 +111,27 @@ export async function bundleWatch() {
|
|
|
174
111
|
});
|
|
175
112
|
};
|
|
176
113
|
|
|
177
|
-
const name = getName();
|
|
178
|
-
const configRelativePath = `./${webpackDevConfigFileName}`;
|
|
179
|
-
|
|
180
114
|
if (isWebComponent()) {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
configuration: { mode: 'development' },
|
|
115
|
+
const webpackConfig: Overrides = {
|
|
116
|
+
configuration: { ...config?.configuration, mode },
|
|
117
|
+
plugins: config?.plugins,
|
|
185
118
|
};
|
|
186
119
|
|
|
187
|
-
if (fs.existsSync(configRelativePath)) {
|
|
188
|
-
const { configuration, plugins } = require(path.resolve(configRelativePath));
|
|
189
|
-
|
|
190
|
-
webpackConfig = {
|
|
191
|
-
configuration: {
|
|
192
|
-
...configuration,
|
|
193
|
-
...webpackConfig.configuration,
|
|
194
|
-
},
|
|
195
|
-
plugins: {
|
|
196
|
-
...plugins,
|
|
197
|
-
...webpackConfig.plugins,
|
|
198
|
-
},
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
|
|
202
120
|
return Promise.all([
|
|
203
121
|
run(createWebpackConfig(webpackConfig, { embed: true, name })),
|
|
204
122
|
runServe(createWebpackConfig(webpackConfig, { name })),
|
|
205
123
|
]);
|
|
206
124
|
}
|
|
207
125
|
|
|
208
|
-
return runServe(
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
126
|
+
return runServe(config ?? createWebpackConfig({ configuration: { mode } }, { name }));
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
function readWebpackConfig({ config, fallback }: Options & { fallback: string }) {
|
|
130
|
+
return readConfig(config) ?? readConfig(fallback);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function readConfig(relativePath?: string): Record<string, any> | undefined {
|
|
134
|
+
if (relativePath && fs.existsSync(relativePath)) {
|
|
135
|
+
return require(path.resolve(relativePath));
|
|
136
|
+
}
|
|
218
137
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import os from 'os';
|
|
2
|
-
import { CommandName, NodeConfiguration,
|
|
2
|
+
import { CommandName, NodeConfiguration, getConfigurationSafe } from '../../utils';
|
|
3
3
|
|
|
4
4
|
const MAX_OLD_SPACE_SIZE_OPTION = 'max_old_space_size';
|
|
5
5
|
const DEFAULT_MAX_OLD_SPACE_SIZE_MB = 8192;
|
|
@@ -11,7 +11,7 @@ const MIN_REMAINING_MEMORY_MB = 512;
|
|
|
11
11
|
* @returns whether process's NODE_OPTIONS were changed
|
|
12
12
|
*/
|
|
13
13
|
export function setNodeOptions(command: CommandName) {
|
|
14
|
-
const cliConfig =
|
|
14
|
+
const cliConfig = getConfigurationSafe();
|
|
15
15
|
const cmdConfig: NodeConfiguration = cliConfig[command];
|
|
16
16
|
|
|
17
17
|
const cmdNodeOptions = cmdConfig?.NODE_OPTIONS?.join(' ') ?? '';
|