@teambit/webpack 0.0.640 → 0.0.644

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.
@@ -1 +1 @@
1
- export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.webpack_webpack@0.0.640/dist/webpack.composition.js')]
1
+ export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.webpack_webpack@0.0.644/dist/webpack.composition.js')]
@@ -3,6 +3,7 @@ import camelcase from 'camelcase';
3
3
  import webpack, { Configuration } from 'webpack';
4
4
  import { generateExternals } from '@teambit/webpack.modules.generate-externals';
5
5
  import { isUndefined, omitBy } from 'lodash';
6
+ import CompressionPlugin from 'compression-webpack-plugin';
6
7
  import type { BundlerContext, BundlerHtmlConfig, Target } from '@teambit/bundler';
7
8
  import HtmlWebpackPlugin from 'html-webpack-plugin';
8
9
  import WebpackAssetsManifest from 'webpack-assets-manifest';
@@ -18,6 +19,7 @@ export function configFactory(target: Target, context: BundlerContext): Configur
18
19
  }
19
20
  const dev = Boolean(context.development);
20
21
  const htmlConfig = target.html ?? context.html;
22
+ const compress = target.compress ?? context.compress;
21
23
  const htmlPlugins = htmlConfig ? generateHtmlPlugins(htmlConfig) : undefined;
22
24
  const shouldExternalizePeers =
23
25
  (target.externalizePeer ?? context.externalizePeer) && target.peers && target.peers.length;
@@ -85,6 +87,12 @@ export function configFactory(target: Target, context: BundlerContext): Configur
85
87
  }
86
88
  config.plugins = config.plugins.concat(htmlPlugins);
87
89
  }
90
+ if (compress) {
91
+ if (!config.plugins) {
92
+ config.plugins = [];
93
+ }
94
+ config.plugins = config.plugins.concat(new CompressionPlugin());
95
+ }
88
96
  if (externals) {
89
97
  config.externals = externals;
90
98
  }
@@ -54,6 +54,16 @@ function _lodash() {
54
54
  return data;
55
55
  }
56
56
 
57
+ function _compressionWebpackPlugin() {
58
+ const data = _interopRequireDefault(require("compression-webpack-plugin"));
59
+
60
+ _compressionWebpackPlugin = function () {
61
+ return data;
62
+ };
63
+
64
+ return data;
65
+ }
66
+
57
67
  function _htmlWebpackPlugin() {
58
68
  const data = _interopRequireDefault(require("html-webpack-plugin"));
59
69
 
@@ -106,7 +116,7 @@ function _webpackFallbacksAliases() {
106
116
 
107
117
  /* eslint-disable complexity */
108
118
  function configFactory(target, context) {
109
- var _target$html, _target$externalizePe, _target$chunking;
119
+ var _target$html, _target$compress, _target$externalizePe, _target$chunking;
110
120
 
111
121
  let truthyEntries = Array.isArray(target.entries) && target.entries.length ? target.entries.filter(Boolean) : target.entries || {};
112
122
 
@@ -116,6 +126,7 @@ function configFactory(target, context) {
116
126
 
117
127
  const dev = Boolean(context.development);
118
128
  const htmlConfig = (_target$html = target.html) !== null && _target$html !== void 0 ? _target$html : context.html;
129
+ const compress = (_target$compress = target.compress) !== null && _target$compress !== void 0 ? _target$compress : context.compress;
119
130
  const htmlPlugins = htmlConfig ? generateHtmlPlugins(htmlConfig) : undefined;
120
131
  const shouldExternalizePeers = ((_target$externalizePe = target.externalizePeer) !== null && _target$externalizePe !== void 0 ? _target$externalizePe : context.externalizePeer) && target.peers && target.peers.length;
121
132
  const externals = shouldExternalizePeers ? getExternals(target.peers || []) : undefined;
@@ -178,6 +189,14 @@ function configFactory(target, context) {
178
189
  config.plugins = config.plugins.concat(htmlPlugins);
179
190
  }
180
191
 
192
+ if (compress) {
193
+ if (!config.plugins) {
194
+ config.plugins = [];
195
+ }
196
+
197
+ config.plugins = config.plugins.concat(new (_compressionWebpackPlugin().default)());
198
+ }
199
+
181
200
  if (externals) {
182
201
  config.externals = externals;
183
202
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack.config.ts"],"names":["configFactory","target","context","truthyEntries","Array","isArray","entries","length","filter","Boolean","dev","development","htmlConfig","html","htmlPlugins","generateHtmlPlugins","undefined","shouldExternalizePeers","externalizePeer","peers","externals","getExternals","splitChunks","chunking","config","mode","bail","entry","infrastructureLogging","level","output","path","outputPath","stats","errorDetails","resolve","alias","fallbacksAliases","fallback","fallbacks","plugins","webpack","ProvidePlugin","fallbacksProvidePluginConfig","getAssetManifestPlugin","filename","chunkFilename","runtimeChunkName","optimization","runtimeChunk","name","chunks","concat","WebpackAssetsManifest","entrypoints","configs","map","generateHtmlPlugin","baseConfig","title","templateContent","minify","cache","chunksSortMode","filteredConfig","isUndefined","HtmlWebpackPlugin","deps","transformName","depName","replace","pascalCase"],"mappings":"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","sourcesContent":["/* eslint-disable complexity */\nimport camelcase from 'camelcase';\nimport webpack, { Configuration } from 'webpack';\nimport { generateExternals } from '@teambit/webpack.modules.generate-externals';\nimport { isUndefined, omitBy } from 'lodash';\nimport type { BundlerContext, BundlerHtmlConfig, Target } from '@teambit/bundler';\nimport HtmlWebpackPlugin from 'html-webpack-plugin';\nimport WebpackAssetsManifest from 'webpack-assets-manifest';\nimport { fallbacks } from './webpack-fallbacks';\nimport { fallbacksProvidePluginConfig } from './webpack-fallbacks-provide-plugin-config';\nimport { fallbacksAliases } from './webpack-fallbacks-aliases';\n\nexport function configFactory(target: Target, context: BundlerContext): Configuration {\n let truthyEntries =\n Array.isArray(target.entries) && target.entries.length ? target.entries.filter(Boolean) : target.entries || {};\n if (Array.isArray(truthyEntries) && !truthyEntries.length) {\n truthyEntries = {};\n }\n const dev = Boolean(context.development);\n const htmlConfig = target.html ?? context.html;\n const htmlPlugins = htmlConfig ? generateHtmlPlugins(htmlConfig) : undefined;\n const shouldExternalizePeers =\n (target.externalizePeer ?? context.externalizePeer) && target.peers && target.peers.length;\n const externals = shouldExternalizePeers ? (getExternals(target.peers || []) as any) : undefined;\n const splitChunks = target.chunking?.splitChunks;\n\n const config: Configuration = {\n mode: dev ? 'development' : 'production',\n // Stop compilation early in production\n bail: true,\n // These are the \"entry points\" to our application.\n // This means they will be the \"root\" imports that are included in JS bundle.\n // @ts-ignore\n entry: truthyEntries,\n\n infrastructureLogging: {\n level: 'error',\n },\n\n output: {\n // The build folder.\n path: `${target.outputPath}/public`,\n },\n stats: {\n errorDetails: true,\n },\n\n resolve: {\n alias: fallbacksAliases,\n\n fallback: fallbacks,\n },\n\n plugins: [new webpack.ProvidePlugin(fallbacksProvidePluginConfig), getAssetManifestPlugin()],\n };\n\n if (target.filename) {\n config.output = config.output || {};\n config.output.filename = target.filename;\n }\n\n if (target.chunkFilename) {\n config.output = config.output || {};\n config.output.chunkFilename = target.chunkFilename;\n }\n\n if (target.runtimeChunkName) {\n config.optimization = config.optimization || {};\n config.optimization.runtimeChunk = {\n name: target.runtimeChunkName,\n };\n }\n\n if (splitChunks) {\n config.optimization = config.optimization || {};\n config.optimization.splitChunks = {\n chunks: 'all',\n name: false,\n };\n }\n\n if (htmlPlugins && htmlPlugins.length) {\n if (!config.plugins) {\n config.plugins = [];\n }\n config.plugins = config.plugins.concat(htmlPlugins);\n }\n if (externals) {\n config.externals = externals;\n }\n return config;\n}\n\nfunction getAssetManifestPlugin() {\n return new WebpackAssetsManifest({ entrypoints: true });\n}\n\nfunction generateHtmlPlugins(configs: BundlerHtmlConfig[]) {\n return configs.map((config) => generateHtmlPlugin(config));\n}\nfunction generateHtmlPlugin(config: BundlerHtmlConfig) {\n const baseConfig = {\n filename: config.filename,\n chunks: config.chunks,\n title: config.title,\n templateContent: config.templateContent,\n minify: config.minify,\n cache: false,\n chunksSortMode: 'auto' as const,\n };\n if (baseConfig.chunks && baseConfig.chunks.length) {\n // Make sure the order is that the preview root coming after the preview def\n // we can't make it like this on the entries using depend on because this will\n // prevent the splitting between different preview defs\n // @ts-ignore\n baseConfig.chunksSortMode = 'manual' as const;\n }\n const filteredConfig = omitBy(baseConfig, isUndefined);\n return new HtmlWebpackPlugin(filteredConfig);\n}\n\nexport function getExternals(deps: string[]) {\n return generateExternals(deps, {\n transformName: (depName) => camelcase(depName.replace('@', '').replace('/', '-'), { pascalCase: true }),\n });\n}\n"]}
1
+ {"version":3,"sources":["webpack.config.ts"],"names":["configFactory","target","context","truthyEntries","Array","isArray","entries","length","filter","Boolean","dev","development","htmlConfig","html","compress","htmlPlugins","generateHtmlPlugins","undefined","shouldExternalizePeers","externalizePeer","peers","externals","getExternals","splitChunks","chunking","config","mode","bail","entry","infrastructureLogging","level","output","path","outputPath","stats","errorDetails","resolve","alias","fallbacksAliases","fallback","fallbacks","plugins","webpack","ProvidePlugin","fallbacksProvidePluginConfig","getAssetManifestPlugin","filename","chunkFilename","runtimeChunkName","optimization","runtimeChunk","name","chunks","concat","CompressionPlugin","WebpackAssetsManifest","entrypoints","configs","map","generateHtmlPlugin","baseConfig","title","templateContent","minify","cache","chunksSortMode","filteredConfig","isUndefined","HtmlWebpackPlugin","deps","transformName","depName","replace","pascalCase"],"mappings":"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","sourcesContent":["/* eslint-disable complexity */\nimport camelcase from 'camelcase';\nimport webpack, { Configuration } from 'webpack';\nimport { generateExternals } from '@teambit/webpack.modules.generate-externals';\nimport { isUndefined, omitBy } from 'lodash';\nimport CompressionPlugin from 'compression-webpack-plugin';\nimport type { BundlerContext, BundlerHtmlConfig, Target } from '@teambit/bundler';\nimport HtmlWebpackPlugin from 'html-webpack-plugin';\nimport WebpackAssetsManifest from 'webpack-assets-manifest';\nimport { fallbacks } from './webpack-fallbacks';\nimport { fallbacksProvidePluginConfig } from './webpack-fallbacks-provide-plugin-config';\nimport { fallbacksAliases } from './webpack-fallbacks-aliases';\n\nexport function configFactory(target: Target, context: BundlerContext): Configuration {\n let truthyEntries =\n Array.isArray(target.entries) && target.entries.length ? target.entries.filter(Boolean) : target.entries || {};\n if (Array.isArray(truthyEntries) && !truthyEntries.length) {\n truthyEntries = {};\n }\n const dev = Boolean(context.development);\n const htmlConfig = target.html ?? context.html;\n const compress = target.compress ?? context.compress;\n const htmlPlugins = htmlConfig ? generateHtmlPlugins(htmlConfig) : undefined;\n const shouldExternalizePeers =\n (target.externalizePeer ?? context.externalizePeer) && target.peers && target.peers.length;\n const externals = shouldExternalizePeers ? (getExternals(target.peers || []) as any) : undefined;\n const splitChunks = target.chunking?.splitChunks;\n\n const config: Configuration = {\n mode: dev ? 'development' : 'production',\n // Stop compilation early in production\n bail: true,\n // These are the \"entry points\" to our application.\n // This means they will be the \"root\" imports that are included in JS bundle.\n // @ts-ignore\n entry: truthyEntries,\n\n infrastructureLogging: {\n level: 'error',\n },\n\n output: {\n // The build folder.\n path: `${target.outputPath}/public`,\n },\n stats: {\n errorDetails: true,\n },\n\n resolve: {\n alias: fallbacksAliases,\n\n fallback: fallbacks,\n },\n\n plugins: [new webpack.ProvidePlugin(fallbacksProvidePluginConfig), getAssetManifestPlugin()],\n };\n\n if (target.filename) {\n config.output = config.output || {};\n config.output.filename = target.filename;\n }\n\n if (target.chunkFilename) {\n config.output = config.output || {};\n config.output.chunkFilename = target.chunkFilename;\n }\n\n if (target.runtimeChunkName) {\n config.optimization = config.optimization || {};\n config.optimization.runtimeChunk = {\n name: target.runtimeChunkName,\n };\n }\n\n if (splitChunks) {\n config.optimization = config.optimization || {};\n config.optimization.splitChunks = {\n chunks: 'all',\n name: false,\n };\n }\n\n if (htmlPlugins && htmlPlugins.length) {\n if (!config.plugins) {\n config.plugins = [];\n }\n config.plugins = config.plugins.concat(htmlPlugins);\n }\n if (compress) {\n if (!config.plugins) {\n config.plugins = [];\n }\n config.plugins = config.plugins.concat(new CompressionPlugin());\n }\n if (externals) {\n config.externals = externals;\n }\n return config;\n}\n\nfunction getAssetManifestPlugin() {\n return new WebpackAssetsManifest({ entrypoints: true });\n}\n\nfunction generateHtmlPlugins(configs: BundlerHtmlConfig[]) {\n return configs.map((config) => generateHtmlPlugin(config));\n}\nfunction generateHtmlPlugin(config: BundlerHtmlConfig) {\n const baseConfig = {\n filename: config.filename,\n chunks: config.chunks,\n title: config.title,\n templateContent: config.templateContent,\n minify: config.minify,\n cache: false,\n chunksSortMode: 'auto' as const,\n };\n if (baseConfig.chunks && baseConfig.chunks.length) {\n // Make sure the order is that the preview root coming after the preview def\n // we can't make it like this on the entries using depend on because this will\n // prevent the splitting between different preview defs\n // @ts-ignore\n baseConfig.chunksSortMode = 'manual' as const;\n }\n const filteredConfig = omitBy(baseConfig, isUndefined);\n return new HtmlWebpackPlugin(filteredConfig);\n}\n\nexport function getExternals(deps: string[]) {\n return generateExternals(deps, {\n transformName: (depName) => camelcase(depName.replace('@', '').replace('/', '-'), { pascalCase: true }),\n });\n}\n"]}
@@ -23,5 +23,7 @@ export declare class WebpackBundler implements Bundler {
23
23
  configs: Configuration[], logger: Logger, webpack: any);
24
24
  run(): Promise<BundlerResult[]>;
25
25
  private getAssets;
26
+ private getEntriesAssetsMap;
27
+ private getCompressedSize;
26
28
  private getComponents;
27
29
  }
@@ -2,6 +2,8 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ require("core-js/modules/es.array.iterator.js");
6
+
5
7
  require("core-js/modules/es.promise.js");
6
8
 
7
9
  require("core-js/modules/es.regexp.exec.js");
@@ -21,6 +23,16 @@ function _bitError() {
21
23
  return data;
22
24
  }
23
25
 
26
+ function _lodash() {
27
+ const data = require("lodash");
28
+
29
+ _lodash = function () {
30
+ return data;
31
+ };
32
+
33
+ return data;
34
+ }
35
+
24
36
  function _pMapSeries() {
25
37
  const data = _interopRequireDefault(require("p-map-series"));
26
38
 
@@ -58,6 +70,7 @@ class WebpackBundler {
58
70
  // TODO: split to multiple processes to reduce time and configure concurrent builds.
59
71
  // @see https://github.com/trivago/parallel-webpack
60
72
  return compiler.run((err, stats) => {
73
+ // console.log('err webpack', err);
61
74
  if (err) {
62
75
  this.logger.error('get error from webpack compiler, full error:', err);
63
76
  return resolve({
@@ -67,11 +80,14 @@ class WebpackBundler {
67
80
  }
68
81
 
69
82
  if (!stats) throw new (_bitError().BitError)('unknown build error');
70
- const info = stats.toJson();
83
+ const info = stats.toJson(); // console.log(JSON.stringify(info, null, 2));
84
+
85
+ const assetsMap = this.getAssets(info);
86
+ const entriesAssetsMap = this.getEntriesAssetsMap(info, assetsMap);
71
87
  return resolve({
72
- assets: this.getAssets(info),
88
+ assets: Object.values(assetsMap),
73
89
  assetsByChunkName: info.assetsByChunkName,
74
- entriesAssetsMap: info.entrypoints,
90
+ entriesAssetsMap,
75
91
  errors: info.errors,
76
92
  outputPath: stats.compilation.outputOptions.path,
77
93
  components,
@@ -87,13 +103,56 @@ class WebpackBundler {
87
103
  }
88
104
 
89
105
  getAssets(stats) {
90
- if (!stats.assets) return [];
91
- return stats.assets.map(asset => {
92
- return {
106
+ if (!stats.assets) return {};
107
+ return stats.assets.reduce((acc, asset) => {
108
+ acc[asset.name] = {
93
109
  name: asset.name,
94
- size: asset.size
110
+ size: asset.size,
111
+ compressedSize: this.getCompressedSize(asset)
95
112
  };
113
+ return acc;
114
+ }, {});
115
+ }
116
+
117
+ getEntriesAssetsMap(stats, assetsMap) {
118
+ const entriesMap = stats.entrypoints;
119
+ if (!entriesMap) return {};
120
+ Object.entries(entriesMap).forEach(([, entryVal]) => {
121
+ var _entryVal$assets, _entryVal$auxiliaryAs;
122
+
123
+ let compressedAssetsSize = 0;
124
+ let compressedAuxiliaryAssetsSize = 0;
125
+ (_entryVal$assets = entryVal.assets) === null || _entryVal$assets === void 0 ? void 0 : _entryVal$assets.forEach(asset => {
126
+ const compressedSize = assetsMap[asset.name].compressedSize;
127
+
128
+ if (compressedSize) {
129
+ // @ts-ignore
130
+ asset.compressedSize = compressedSize;
131
+ compressedAssetsSize += compressedSize;
132
+ }
133
+ });
134
+ (_entryVal$auxiliaryAs = entryVal.auxiliaryAssets) === null || _entryVal$auxiliaryAs === void 0 ? void 0 : _entryVal$auxiliaryAs.forEach(asset => {
135
+ const compressedSize = assetsMap[asset.name].compressedSize;
136
+
137
+ if (compressedSize) {
138
+ // @ts-ignore
139
+ asset.compressedSize = compressedSize;
140
+ compressedAuxiliaryAssetsSize += compressedSize;
141
+ }
142
+ });
143
+ entryVal.compressedAssetsSize = compressedAssetsSize;
144
+ entryVal.compressedAuxiliaryAssetsSize = compressedAuxiliaryAssetsSize;
145
+ });
146
+ return entriesMap;
147
+ }
148
+
149
+ getCompressedSize(asset) {
150
+ if (!asset.related || (0, _lodash().isEmpty)(asset.related)) return undefined;
151
+ const gzipped = asset.related.find(relatedAsset => {
152
+ return relatedAsset.type === 'gzipped';
96
153
  });
154
+ if (!gzipped) return undefined;
155
+ return gzipped.size;
97
156
  }
98
157
 
99
158
  getComponents(outputPath) {
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack.bundler.ts"],"names":["WebpackBundler","constructor","targets","configs","logger","webpack","run","startTime","Date","now","compilers","map","config","longProcessLogger","createLongProcessLogger","length","componentOutput","compiler","components","getComponents","outputPath","logProgress","component","id","toString","join","Promise","resolve","err","stats","error","errors","stack","BitError","info","toJson","assets","getAssets","assetsByChunkName","entriesAssetsMap","entrypoints","compilation","outputOptions","path","warnings","endTime","end","asset","name","size","splitPath","split","pop","target","find","targetCandidate","Error"],"mappings":"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","sourcesContent":["import { BitError } from '@teambit/bit-error';\nimport type { Bundler, BundlerResult, Asset, Target } from '@teambit/bundler';\nimport type { Logger } from '@teambit/logger';\nimport mapSeries from 'p-map-series';\nimport type { Compiler, Configuration, StatsCompilation } from 'webpack';\n\nexport class WebpackBundler implements Bundler {\n constructor(\n /**\n * targets to bundle.\n */\n private targets: Target[],\n\n /**\n * webpack configuration.\n */\n private configs: Configuration[],\n\n private logger: Logger,\n\n private webpack\n ) {}\n\n async run(): Promise<BundlerResult[]> {\n const startTime = Date.now();\n const compilers = this.configs.map((config: any) => this.webpack(config));\n const longProcessLogger = this.logger.createLongProcessLogger('running Webpack bundler', compilers.length);\n const componentOutput = await mapSeries(compilers, (compiler: Compiler) => {\n const components = this.getComponents(compiler.outputPath);\n longProcessLogger.logProgress(components.map((component) => component.id.toString()).join(', '));\n return new Promise((resolve) => {\n // TODO: split to multiple processes to reduce time and configure concurrent builds.\n // @see https://github.com/trivago/parallel-webpack\n return compiler.run((err, stats) => {\n if (err) {\n this.logger.error('get error from webpack compiler, full error:', err);\n\n return resolve({\n errors: [`${err.toString()}\\n${err.stack}`],\n components,\n });\n }\n if (!stats) throw new BitError('unknown build error');\n const info = stats.toJson();\n\n return resolve({\n assets: this.getAssets(info),\n assetsByChunkName: info.assetsByChunkName,\n entriesAssetsMap: info.entrypoints,\n errors: info.errors,\n outputPath: stats.compilation.outputOptions.path,\n components,\n warnings: info.warnings,\n startTime,\n endTime: Date.now(),\n });\n });\n });\n });\n longProcessLogger.end();\n return componentOutput as BundlerResult[];\n }\n\n private getAssets(stats: StatsCompilation): Asset[] {\n if (!stats.assets) return [];\n return stats.assets.map((asset) => {\n return {\n name: asset.name,\n size: asset.size,\n };\n });\n }\n\n private getComponents(outputPath: string) {\n const splitPath = outputPath.split('/');\n splitPath.pop();\n const path = splitPath.join('/');\n const target = this.targets.find((targetCandidate) => {\n return path === targetCandidate.outputPath;\n });\n\n if (!target) {\n throw new Error(`Could not find component id for path \"${path}\"`);\n }\n\n return target.components;\n }\n}\n"]}
1
+ {"version":3,"sources":["webpack.bundler.ts"],"names":["WebpackBundler","constructor","targets","configs","logger","webpack","run","startTime","Date","now","compilers","map","config","longProcessLogger","createLongProcessLogger","length","componentOutput","compiler","components","getComponents","outputPath","logProgress","component","id","toString","join","Promise","resolve","err","stats","error","errors","stack","BitError","info","toJson","assetsMap","getAssets","entriesAssetsMap","getEntriesAssetsMap","assets","Object","values","assetsByChunkName","compilation","outputOptions","path","warnings","endTime","end","reduce","acc","asset","name","size","compressedSize","getCompressedSize","entriesMap","entrypoints","entries","forEach","entryVal","compressedAssetsSize","compressedAuxiliaryAssetsSize","auxiliaryAssets","related","undefined","gzipped","find","relatedAsset","type","splitPath","split","pop","target","targetCandidate","Error"],"mappings":"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","sourcesContent":["import { BitError } from '@teambit/bit-error';\nimport type { Bundler, BundlerResult, Asset, Target, EntriesAssetsMap } from '@teambit/bundler';\nimport type { Logger } from '@teambit/logger';\nimport { isEmpty } from 'lodash';\nimport mapSeries from 'p-map-series';\nimport type { Compiler, Configuration, StatsCompilation } from 'webpack';\n\ntype AssetsMap = { [assetId: string]: Asset };\nexport class WebpackBundler implements Bundler {\n constructor(\n /**\n * targets to bundle.\n */\n private targets: Target[],\n\n /**\n * webpack configuration.\n */\n private configs: Configuration[],\n\n private logger: Logger,\n\n private webpack\n ) {}\n\n async run(): Promise<BundlerResult[]> {\n const startTime = Date.now();\n const compilers = this.configs.map((config: any) => this.webpack(config));\n const longProcessLogger = this.logger.createLongProcessLogger('running Webpack bundler', compilers.length);\n const componentOutput = await mapSeries(compilers, (compiler: Compiler) => {\n const components = this.getComponents(compiler.outputPath);\n longProcessLogger.logProgress(components.map((component) => component.id.toString()).join(', '));\n return new Promise((resolve) => {\n // TODO: split to multiple processes to reduce time and configure concurrent builds.\n // @see https://github.com/trivago/parallel-webpack\n return compiler.run((err, stats) => {\n // console.log('err webpack', err);\n\n if (err) {\n this.logger.error('get error from webpack compiler, full error:', err);\n\n return resolve({\n errors: [`${err.toString()}\\n${err.stack}`],\n components,\n });\n }\n if (!stats) throw new BitError('unknown build error');\n const info = stats.toJson();\n\n // console.log(JSON.stringify(info, null, 2));\n\n const assetsMap = this.getAssets(info);\n const entriesAssetsMap = this.getEntriesAssetsMap(info, assetsMap);\n\n return resolve({\n assets: Object.values(assetsMap),\n assetsByChunkName: info.assetsByChunkName,\n entriesAssetsMap,\n errors: info.errors,\n outputPath: stats.compilation.outputOptions.path,\n components,\n warnings: info.warnings,\n startTime,\n endTime: Date.now(),\n });\n });\n });\n });\n longProcessLogger.end();\n return componentOutput as BundlerResult[];\n }\n\n private getAssets(stats: StatsCompilation): AssetsMap {\n if (!stats.assets) return {};\n return stats.assets.reduce((acc, asset) => {\n acc[asset.name] = {\n name: asset.name,\n size: asset.size,\n compressedSize: this.getCompressedSize(asset),\n };\n return acc;\n }, {});\n }\n\n private getEntriesAssetsMap(stats: StatsCompilation, assetsMap: AssetsMap): EntriesAssetsMap {\n const entriesMap = stats.entrypoints;\n if (!entriesMap) return {};\n Object.entries(entriesMap).forEach(([, entryVal]) => {\n let compressedAssetsSize = 0;\n let compressedAuxiliaryAssetsSize = 0;\n entryVal.assets?.forEach((asset) => {\n const compressedSize = assetsMap[asset.name].compressedSize;\n if (compressedSize) {\n // @ts-ignore\n asset.compressedSize = compressedSize;\n compressedAssetsSize += compressedSize;\n }\n });\n entryVal.auxiliaryAssets?.forEach((asset) => {\n const compressedSize = assetsMap[asset.name].compressedSize;\n if (compressedSize) {\n // @ts-ignore\n asset.compressedSize = compressedSize;\n compressedAuxiliaryAssetsSize += compressedSize;\n }\n });\n entryVal.compressedAssetsSize = compressedAssetsSize;\n entryVal.compressedAuxiliaryAssetsSize = compressedAuxiliaryAssetsSize;\n });\n return entriesMap as any as EntriesAssetsMap;\n }\n\n private getCompressedSize(asset): number | undefined {\n if (!asset.related || isEmpty(asset.related)) return undefined;\n const gzipped = asset.related.find((relatedAsset) => {\n return relatedAsset.type === 'gzipped';\n });\n if (!gzipped) return undefined;\n return gzipped.size;\n }\n\n private getComponents(outputPath: string) {\n const splitPath = outputPath.split('/');\n splitPath.pop();\n const path = splitPath.join('/');\n const target = this.targets.find((targetCandidate) => {\n return path === targetCandidate.outputPath;\n });\n\n if (!target) {\n throw new Error(`Could not find component id for path \"${path}\"`);\n }\n\n return target.components;\n }\n}\n"]}
package/package.json CHANGED
@@ -1,22 +1,23 @@
1
1
  {
2
2
  "name": "@teambit/webpack",
3
- "version": "0.0.640",
3
+ "version": "0.0.644",
4
4
  "homepage": "https://bit.dev/teambit/webpack/webpack",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.webpack",
8
8
  "name": "webpack",
9
- "version": "0.0.640"
9
+ "version": "0.0.644"
10
10
  },
11
11
  "dependencies": {
12
12
  "webpack": "5.51.1",
13
13
  "@teambit/harmony": "0.2.11",
14
+ "lodash": "4.17.21",
14
15
  "p-map-series": "2.1.0",
15
16
  "webpack-dev-server": "4.1.0",
16
17
  "webpack-merge": "5.8.0",
17
18
  "camelcase": "6.2.0",
19
+ "compression-webpack-plugin": "9.2.0",
18
20
  "html-webpack-plugin": "5.3.2",
19
- "lodash": "4.17.21",
20
21
  "webpack-assets-manifest": "5.1.0",
21
22
  "react-dev-utils": "11.0.4",
22
23
  "vm-browserify": "1.1.2",
@@ -43,25 +44,25 @@
43
44
  "core-js": "^3.0.0",
44
45
  "@teambit/webpack.modules.config-mutator": "0.0.136",
45
46
  "@teambit/bit-error": "0.0.394",
46
- "@teambit/bundler": "0.0.640",
47
- "@teambit/logger": "0.0.527",
48
- "@teambit/cli": "0.0.437",
49
- "@teambit/pubsub": "0.0.640",
50
- "@teambit/workspace": "0.0.640",
47
+ "@teambit/bundler": "0.0.644",
48
+ "@teambit/logger": "0.0.529",
49
+ "@teambit/cli": "0.0.439",
50
+ "@teambit/pubsub": "0.0.644",
51
+ "@teambit/workspace": "0.0.644",
51
52
  "@teambit/webpack.modules.generate-externals": "0.0.2"
52
53
  },
53
54
  "devDependencies": {
54
55
  "@types/webpack": "5.28.0",
56
+ "@types/lodash": "4.14.165",
55
57
  "@types/react": "^17.0.8",
56
58
  "@types/webpack-dev-server": "4.0.3",
57
- "@types/lodash": "4.14.165",
58
59
  "@types/testing-library__jest-dom": "5.9.5",
59
60
  "@types/jest": "^26.0.0",
60
61
  "@types/react-dom": "^17.0.5",
61
62
  "@types/node": "12.20.4"
62
63
  },
63
64
  "peerDependencies": {
64
- "@teambit/legacy": "1.0.213",
65
+ "@teambit/legacy": "1.0.217",
65
66
  "react-dom": "^16.8.0 || ^17.0.0",
66
67
  "react": "^16.8.0 || ^17.0.0"
67
68
  },