@teambit/webpack 0.0.738 → 0.0.741

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.
Files changed (34) hide show
  1. package/config/webpack.config.ts +0 -14
  2. package/dist/config/webpack.config.d.ts +0 -1
  3. package/dist/config/webpack.config.js +1 -40
  4. package/dist/config/webpack.config.js.map +1 -1
  5. package/dist/index.d.ts +1 -1
  6. package/dist/index.js +22 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/transformers/get-exposed-rules.d.ts +3 -0
  9. package/dist/transformers/get-exposed-rules.js +74 -0
  10. package/dist/transformers/get-exposed-rules.js.map +1 -0
  11. package/dist/transformers/get-externals.d.ts +1 -0
  12. package/dist/transformers/get-externals.js +42 -0
  13. package/dist/transformers/get-externals.js.map +1 -0
  14. package/dist/transformers/index.d.ts +1 -0
  15. package/dist/transformers/index.js +28 -0
  16. package/dist/transformers/index.js.map +1 -1
  17. package/dist/transformers/resolve-peer.d.ts +14 -0
  18. package/dist/transformers/resolve-peer.js +110 -0
  19. package/dist/transformers/resolve-peer.js.map +1 -0
  20. package/dist/transformers/transformers.d.ts +16 -0
  21. package/dist/transformers/transformers.js +91 -0
  22. package/dist/transformers/transformers.js.map +1 -0
  23. package/dist/webpack.main.runtime.d.ts +3 -2
  24. package/dist/webpack.main.runtime.js +43 -5
  25. package/dist/webpack.main.runtime.js.map +1 -1
  26. package/package-tar/teambit-webpack-0.0.741.tgz +0 -0
  27. package/package.json +16 -11
  28. package/{preview-1653227849497.js → preview-1653494536947.js} +2 -2
  29. package/transformers/get-exposed-rules.ts +19 -0
  30. package/transformers/get-externals.ts +8 -0
  31. package/transformers/index.ts +5 -0
  32. package/transformers/resolve-peer.ts +63 -0
  33. package/transformers/transformers.ts +52 -0
  34. package/package-tar/teambit-webpack-0.0.738.tgz +0 -0
@@ -1,7 +1,5 @@
1
1
  /* eslint-disable complexity */
2
- import camelcase from 'camelcase';
3
2
  import webpack, { Configuration } from 'webpack';
4
- import { generateExternals } from '@teambit/webpack.modules.generate-externals';
5
3
  import { isUndefined, omitBy } from 'lodash';
6
4
  import CompressionPlugin from 'compression-webpack-plugin';
7
5
  import { sep } from 'path';
@@ -23,9 +21,6 @@ export function configFactory(target: Target, context: BundlerContext): Configur
23
21
  const htmlConfig = target.html ?? context.html;
24
22
  const compress = target.compress ?? context.compress;
25
23
  const htmlPlugins = htmlConfig ? generateHtmlPlugins(htmlConfig) : undefined;
26
- const shouldExternalizePeers =
27
- (target.externalizePeer ?? context.externalizePeer) && target.peers && target.peers.length;
28
- const externals = shouldExternalizePeers ? (getExternals(target.peers || []) as any) : undefined;
29
24
  const splitChunks = target.chunking?.splitChunks;
30
25
 
31
26
  const config: Configuration = {
@@ -95,9 +90,6 @@ export function configFactory(target: Target, context: BundlerContext): Configur
95
90
  }
96
91
  config.plugins = config.plugins.concat(new CompressionPlugin());
97
92
  }
98
- if (externals) {
99
- config.externals = externals;
100
- }
101
93
  return config;
102
94
  }
103
95
 
@@ -130,9 +122,3 @@ function generateHtmlPlugin(config: BundlerHtmlConfig) {
130
122
  const filteredConfig = omitBy(baseConfig, isUndefined);
131
123
  return new HtmlWebpackPlugin(filteredConfig);
132
124
  }
133
-
134
- export function getExternals(deps: string[]) {
135
- return generateExternals(deps, {
136
- transformName: (depName) => camelcase(depName.replace('@', '').replace('/', '-'), { pascalCase: true }),
137
- });
138
- }
@@ -1,4 +1,3 @@
1
1
  import { Configuration } from 'webpack';
2
2
  import type { BundlerContext, Target } from '@teambit/bundler';
3
3
  export declare function configFactory(target: Target, context: BundlerContext): Configuration;
4
- export declare function getExternals(deps: string[]): Object;
@@ -4,25 +4,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
 
5
5
  require("core-js/modules/es.array.iterator.js");
6
6
 
7
- require("core-js/modules/es.regexp.exec.js");
8
-
9
- require("core-js/modules/es.string.replace.js");
10
-
11
7
  Object.defineProperty(exports, "__esModule", {
12
8
  value: true
13
9
  });
14
10
  exports.configFactory = configFactory;
15
- exports.getExternals = getExternals;
16
-
17
- function _camelcase() {
18
- const data = _interopRequireDefault(require("camelcase"));
19
-
20
- _camelcase = function () {
21
- return data;
22
- };
23
-
24
- return data;
25
- }
26
11
 
27
12
  function _webpack() {
28
13
  const data = _interopRequireDefault(require("webpack"));
@@ -34,16 +19,6 @@ function _webpack() {
34
19
  return data;
35
20
  }
36
21
 
37
- function _webpackModules() {
38
- const data = require("@teambit/webpack.modules.generate-externals");
39
-
40
- _webpackModules = function () {
41
- return data;
42
- };
43
-
44
- return data;
45
- }
46
-
47
22
  function _lodash() {
48
23
  const data = require("lodash");
49
24
 
@@ -126,7 +101,7 @@ function _webpackFallbacksAliases() {
126
101
 
127
102
  /* eslint-disable complexity */
128
103
  function configFactory(target, context) {
129
- var _target$html, _target$compress, _target$externalizePe, _target$chunking;
104
+ var _target$html, _target$compress, _target$chunking;
130
105
 
131
106
  let truthyEntries = Array.isArray(target.entries) && target.entries.length ? target.entries.filter(Boolean) : target.entries || {};
132
107
 
@@ -138,8 +113,6 @@ function configFactory(target, context) {
138
113
  const htmlConfig = (_target$html = target.html) !== null && _target$html !== void 0 ? _target$html : context.html;
139
114
  const compress = (_target$compress = target.compress) !== null && _target$compress !== void 0 ? _target$compress : context.compress;
140
115
  const htmlPlugins = htmlConfig ? generateHtmlPlugins(htmlConfig) : undefined;
141
- const shouldExternalizePeers = ((_target$externalizePe = target.externalizePeer) !== null && _target$externalizePe !== void 0 ? _target$externalizePe : context.externalizePeer) && target.peers && target.peers.length;
142
- const externals = shouldExternalizePeers ? getExternals(target.peers || []) : undefined;
143
116
  const splitChunks = (_target$chunking = target.chunking) === null || _target$chunking === void 0 ? void 0 : _target$chunking.splitChunks;
144
117
  const config = {
145
118
  mode: dev ? 'development' : 'production',
@@ -207,10 +180,6 @@ function configFactory(target, context) {
207
180
  config.plugins = config.plugins.concat(new (_compressionWebpackPlugin().default)());
208
181
  }
209
182
 
210
- if (externals) {
211
- config.externals = externals;
212
- }
213
-
214
183
  return config;
215
184
  }
216
185
 
@@ -248,12 +217,4 @@ function generateHtmlPlugin(config) {
248
217
  return new (_htmlWebpackPlugin().default)(filteredConfig);
249
218
  }
250
219
 
251
- function getExternals(deps) {
252
- return (0, _webpackModules().generateExternals)(deps, {
253
- transformName: depName => (0, _camelcase().default)(depName.replace('@', '').replace('/', '-'), {
254
- pascalCase: true
255
- })
256
- });
257
- }
258
-
259
220
  //# sourceMappingURL=webpack.config.js.map
@@ -1 +1 @@
1
- {"version":3,"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","sep","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","favicon","filteredConfig","omitBy","isUndefined","HtmlWebpackPlugin","deps","generateExternals","transformName","depName","camelcase","replace","pascalCase"],"sources":["webpack.config.ts"],"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 { sep } from 'path';\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\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}${sep}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}\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 favicon: config.favicon,\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"],"mappings":"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"}
1
+ {"version":3,"names":["configFactory","target","context","truthyEntries","Array","isArray","entries","length","filter","Boolean","dev","development","htmlConfig","html","compress","htmlPlugins","generateHtmlPlugins","undefined","splitChunks","chunking","config","mode","bail","entry","infrastructureLogging","level","output","path","outputPath","sep","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","favicon","filteredConfig","omitBy","isUndefined","HtmlWebpackPlugin"],"sources":["webpack.config.ts"],"sourcesContent":["/* eslint-disable complexity */\nimport webpack, { Configuration } from 'webpack';\nimport { isUndefined, omitBy } from 'lodash';\nimport CompressionPlugin from 'compression-webpack-plugin';\nimport { sep } from 'path';\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\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 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}${sep}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 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}\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 favicon: config.favicon,\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"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -11,4 +11,4 @@ export { WebpackBitReporterPlugin } from './plugins/webpack-bit-reporter-plugin'
11
11
  export { fallbacks } from './config/webpack-fallbacks';
12
12
  export { fallbacksAliases } from './config/webpack-fallbacks-aliases';
13
13
  export { fallbacksProvidePluginConfig } from './config/webpack-fallbacks-provide-plugin-config';
14
- export { GenerateBodyInjectionTransformer, BodyInjectionOptions } from './transformers';
14
+ export { GenerateBodyInjectionTransformer, BodyInjectionOptions, generateAddAliasesFromPeersTransformer, generateExposePeersTransformer, generateExternalsTransformer, } from './transformers';
package/dist/index.js CHANGED
@@ -15,7 +15,10 @@ var _exportNames = {
15
15
  fallbacksAliases: true,
16
16
  fallbacksProvidePluginConfig: true,
17
17
  GenerateBodyInjectionTransformer: true,
18
- BodyInjectionOptions: true
18
+ BodyInjectionOptions: true,
19
+ generateAddAliasesFromPeersTransformer: true,
20
+ generateExposePeersTransformer: true,
21
+ generateExternalsTransformer: true
19
22
  };
20
23
  Object.defineProperty(exports, "BodyInjectionOptions", {
21
24
  enumerable: true,
@@ -83,6 +86,24 @@ Object.defineProperty(exports, "fallbacksProvidePluginConfig", {
83
86
  return _webpackFallbacksProvidePluginConfig().fallbacksProvidePluginConfig;
84
87
  }
85
88
  });
89
+ Object.defineProperty(exports, "generateAddAliasesFromPeersTransformer", {
90
+ enumerable: true,
91
+ get: function () {
92
+ return _transformers().generateAddAliasesFromPeersTransformer;
93
+ }
94
+ });
95
+ Object.defineProperty(exports, "generateExposePeersTransformer", {
96
+ enumerable: true,
97
+ get: function () {
98
+ return _transformers().generateExposePeersTransformer;
99
+ }
100
+ });
101
+ Object.defineProperty(exports, "generateExternalsTransformer", {
102
+ enumerable: true,
103
+ get: function () {
104
+ return _transformers().generateExternalsTransformer;
105
+ }
106
+ });
86
107
  Object.defineProperty(exports, "runTransformersWithContext", {
87
108
  enumerable: true,
88
109
  get: function () {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export type {\n WebpackMain,\n WebpackConfigTransformer,\n WebpackConfigTransformContext,\n WebpackConfigDevServerTransformContext,\n GlobalWebpackConfigTransformContext,\n WebpackConfigDevServerTransformer,\n} from './webpack.main.runtime';\nexport { runTransformersWithContext } from './webpack.main.runtime';\nexport { WebpackAspect } from './webpack.aspect';\nexport { WebpackDevServer } from './webpack.dev-server';\nexport { WebpackBundler } from './webpack.bundler';\nexport type { WebpackConfigWithDevServer } from './webpack.dev-server';\nexport * from './events';\nexport { Configuration } from 'webpack';\nexport { WebpackConfigMutator } from '@teambit/webpack.modules.config-mutator';\nexport { WebpackBitReporterPlugin } from './plugins/webpack-bit-reporter-plugin';\nexport { fallbacks } from './config/webpack-fallbacks';\nexport { fallbacksAliases } from './config/webpack-fallbacks-aliases';\nexport { fallbacksProvidePluginConfig } from './config/webpack-fallbacks-provide-plugin-config';\nexport { GenerateBodyInjectionTransformer, BodyInjectionOptions } from './transformers';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA"}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export type {\n WebpackMain,\n WebpackConfigTransformer,\n WebpackConfigTransformContext,\n WebpackConfigDevServerTransformContext,\n GlobalWebpackConfigTransformContext,\n WebpackConfigDevServerTransformer,\n} from './webpack.main.runtime';\nexport { runTransformersWithContext } from './webpack.main.runtime';\nexport { WebpackAspect } from './webpack.aspect';\nexport { WebpackDevServer } from './webpack.dev-server';\nexport { WebpackBundler } from './webpack.bundler';\nexport type { WebpackConfigWithDevServer } from './webpack.dev-server';\nexport * from './events';\nexport { Configuration } from 'webpack';\nexport { WebpackConfigMutator } from '@teambit/webpack.modules.config-mutator';\nexport { WebpackBitReporterPlugin } from './plugins/webpack-bit-reporter-plugin';\nexport { fallbacks } from './config/webpack-fallbacks';\nexport { fallbacksAliases } from './config/webpack-fallbacks-aliases';\nexport { fallbacksProvidePluginConfig } from './config/webpack-fallbacks-provide-plugin-config';\nexport {\n GenerateBodyInjectionTransformer,\n BodyInjectionOptions,\n generateAddAliasesFromPeersTransformer,\n generateExposePeersTransformer,\n generateExternalsTransformer,\n} from './transformers';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA"}
@@ -0,0 +1,3 @@
1
+ import 'expose-loader';
2
+ import { Logger } from '@teambit/logger';
3
+ export declare function getExposedRules(peers: string[], logger: Logger, hostRootDir?: string): Object[];
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ require("core-js/modules/es.regexp.exec.js");
6
+
7
+ require("core-js/modules/es.string.replace.js");
8
+
9
+ Object.defineProperty(exports, "__esModule", {
10
+ value: true
11
+ });
12
+ exports.getExposedRules = getExposedRules;
13
+
14
+ function _camelcase() {
15
+ const data = _interopRequireDefault(require("camelcase"));
16
+
17
+ _camelcase = function () {
18
+ return data;
19
+ };
20
+
21
+ return data;
22
+ }
23
+
24
+ require("expose-loader");
25
+
26
+ function _webpackModules() {
27
+ const data = require("@teambit/webpack.modules.generate-expose-loaders");
28
+
29
+ _webpackModules = function () {
30
+ return data;
31
+ };
32
+
33
+ return data;
34
+ }
35
+
36
+ function _lodash() {
37
+ const data = require("lodash");
38
+
39
+ _lodash = function () {
40
+ return data;
41
+ };
42
+
43
+ return data;
44
+ }
45
+
46
+ function _resolvePeer() {
47
+ const data = require("./resolve-peer");
48
+
49
+ _resolvePeer = function () {
50
+ return data;
51
+ };
52
+
53
+ return data;
54
+ }
55
+
56
+ function getExposedRules(peers, logger, hostRootDir) {
57
+ const loaderPath = require.resolve('expose-loader');
58
+
59
+ const depsEntries = peers.map(peer => {
60
+ const resolvedPath = (0, _resolvePeer().resolvePeerToFile)(peer, logger, hostRootDir);
61
+ if (!resolvedPath) return undefined;
62
+ return {
63
+ path: resolvedPath,
64
+ globalName: (0, _camelcase().default)(peer.replace('@', '').replace('/', '-'), {
65
+ pascalCase: true
66
+ })
67
+ };
68
+ });
69
+ return (0, _webpackModules().generateExposeLoaders)((0, _lodash().compact)(depsEntries), {
70
+ loaderPath
71
+ });
72
+ }
73
+
74
+ //# sourceMappingURL=get-exposed-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getExposedRules","peers","logger","hostRootDir","loaderPath","require","resolve","depsEntries","map","peer","resolvedPath","resolvePeerToFile","undefined","path","globalName","camelcase","replace","pascalCase","generateExposeLoaders","compact"],"sources":["get-exposed-rules.ts"],"sourcesContent":["import camelcase from 'camelcase';\nimport 'expose-loader';\nimport { Logger } from '@teambit/logger';\nimport { generateExposeLoaders } from '@teambit/webpack.modules.generate-expose-loaders';\nimport { compact } from 'lodash';\nimport { resolvePeerToFile } from './resolve-peer';\n\nexport function getExposedRules(peers: string[], logger: Logger, hostRootDir?: string) {\n const loaderPath = require.resolve('expose-loader');\n const depsEntries = peers.map((peer) => {\n const resolvedPath = resolvePeerToFile(peer, logger, hostRootDir);\n if (!resolvedPath) return undefined;\n return {\n path: resolvedPath,\n globalName: camelcase(peer.replace('@', '').replace('/', '-'), { pascalCase: true }),\n };\n });\n return generateExposeLoaders(compact(depsEntries), { loaderPath });\n}\n"],"mappings":";;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,SAASA,eAAT,CAAyBC,KAAzB,EAA0CC,MAA1C,EAA0DC,WAA1D,EAAgF;EACrF,MAAMC,UAAU,GAAGC,OAAO,CAACC,OAAR,CAAgB,eAAhB,CAAnB;;EACA,MAAMC,WAAW,GAAGN,KAAK,CAACO,GAAN,CAAWC,IAAD,IAAU;IACtC,MAAMC,YAAY,GAAG,IAAAC,gCAAA,EAAkBF,IAAlB,EAAwBP,MAAxB,EAAgCC,WAAhC,CAArB;IACA,IAAI,CAACO,YAAL,EAAmB,OAAOE,SAAP;IACnB,OAAO;MACLC,IAAI,EAAEH,YADD;MAELI,UAAU,EAAE,IAAAC,oBAAA,EAAUN,IAAI,CAACO,OAAL,CAAa,GAAb,EAAkB,EAAlB,EAAsBA,OAAtB,CAA8B,GAA9B,EAAmC,GAAnC,CAAV,EAAmD;QAAEC,UAAU,EAAE;MAAd,CAAnD;IAFP,CAAP;EAID,CAPmB,CAApB;EAQA,OAAO,IAAAC,uCAAA,EAAsB,IAAAC,iBAAA,EAAQZ,WAAR,CAAtB,EAA4C;IAAEH;EAAF,CAA5C,CAAP;AACD"}
@@ -0,0 +1 @@
1
+ export declare function getExternals(deps: string[]): Record<string, string>;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ require("core-js/modules/es.regexp.exec.js");
6
+
7
+ require("core-js/modules/es.string.replace.js");
8
+
9
+ Object.defineProperty(exports, "__esModule", {
10
+ value: true
11
+ });
12
+ exports.getExternals = getExternals;
13
+
14
+ function _camelcase() {
15
+ const data = _interopRequireDefault(require("camelcase"));
16
+
17
+ _camelcase = function () {
18
+ return data;
19
+ };
20
+
21
+ return data;
22
+ }
23
+
24
+ function _webpackModules() {
25
+ const data = require("@teambit/webpack.modules.generate-externals");
26
+
27
+ _webpackModules = function () {
28
+ return data;
29
+ };
30
+
31
+ return data;
32
+ }
33
+
34
+ function getExternals(deps) {
35
+ return (0, _webpackModules().generateExternals)(deps, {
36
+ transformName: depName => (0, _camelcase().default)(depName.replace('@', '').replace('/', '-'), {
37
+ pascalCase: true
38
+ })
39
+ });
40
+ }
41
+
42
+ //# sourceMappingURL=get-externals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getExternals","deps","generateExternals","transformName","depName","camelcase","replace","pascalCase"],"sources":["get-externals.ts"],"sourcesContent":["import camelcase from 'camelcase';\nimport { generateExternals } from '@teambit/webpack.modules.generate-externals';\n\nexport function getExternals(deps: string[]) {\n return generateExternals(deps, {\n transformName: (depName) => camelcase(depName.replace('@', '').replace('/', '-'), { pascalCase: true }),\n });\n}\n"],"mappings":";;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,SAASA,YAAT,CAAsBC,IAAtB,EAAsC;EAC3C,OAAO,IAAAC,mCAAA,EAAkBD,IAAlB,EAAwB;IAC7BE,aAAa,EAAGC,OAAD,IAAa,IAAAC,oBAAA,EAAUD,OAAO,CAACE,OAAR,CAAgB,GAAhB,EAAqB,EAArB,EAAyBA,OAAzB,CAAiC,GAAjC,EAAsC,GAAtC,CAAV,EAAsD;MAAEC,UAAU,EAAE;IAAd,CAAtD;EADC,CAAxB,CAAP;AAGD"}
@@ -1 +1,2 @@
1
1
  export { GenerateBodyInjectionTransformer, BodyInjectionOptions } from './inject-body';
2
+ export { generateAddAliasesFromPeersTransformer, generateExposePeersTransformer, generateExternalsTransformer, } from './transformers';
@@ -15,6 +15,24 @@ Object.defineProperty(exports, "GenerateBodyInjectionTransformer", {
15
15
  return _injectBody().GenerateBodyInjectionTransformer;
16
16
  }
17
17
  });
18
+ Object.defineProperty(exports, "generateAddAliasesFromPeersTransformer", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _transformers().generateAddAliasesFromPeersTransformer;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "generateExposePeersTransformer", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _transformers().generateExposePeersTransformer;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "generateExternalsTransformer", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _transformers().generateExternalsTransformer;
34
+ }
35
+ });
18
36
 
19
37
  function _injectBody() {
20
38
  const data = require("./inject-body");
@@ -26,4 +44,14 @@ function _injectBody() {
26
44
  return data;
27
45
  }
28
46
 
47
+ function _transformers() {
48
+ const data = require("./transformers");
49
+
50
+ _transformers = function () {
51
+ return data;
52
+ };
53
+
54
+ return data;
55
+ }
56
+
29
57
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { GenerateBodyInjectionTransformer, BodyInjectionOptions } from './inject-body';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA"}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { GenerateBodyInjectionTransformer, BodyInjectionOptions } from './inject-body';\nexport {\n generateAddAliasesFromPeersTransformer,\n generateExposePeersTransformer,\n generateExternalsTransformer,\n} from './transformers';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA"}
@@ -0,0 +1,14 @@
1
+ import { Logger } from '@teambit/logger';
2
+ /**
3
+ * Get the package folder, and in case it's not found get the resolved file path
4
+ * @param peerName
5
+ * @returns
6
+ */
7
+ export declare function resolvePeerToDirOrFile(peerName: string, logger: Logger, hostRootDir?: string): string | undefined;
8
+ /**
9
+ * Make sure to resolve the peer path correctly
10
+ * we first resolve it to its dir (to be aligned with the aliases transformer)
11
+ * Then we resolve it to specific file, using enhanced resolve to make sure we resolve it using the correct main fields order
12
+ * @param peer
13
+ */
14
+ export declare function resolvePeerToFile(peer: string, logger: Logger, hostRootDir?: string): string | undefined;
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.resolvePeerToDirOrFile = resolvePeerToDirOrFile;
9
+ exports.resolvePeerToFile = resolvePeerToFile;
10
+
11
+ function _fs() {
12
+ const data = _interopRequireWildcard(require("fs"));
13
+
14
+ _fs = function () {
15
+ return data;
16
+ };
17
+
18
+ return data;
19
+ }
20
+
21
+ function _enhancedResolve() {
22
+ const data = require("enhanced-resolve");
23
+
24
+ _enhancedResolve = function () {
25
+ return data;
26
+ };
27
+
28
+ return data;
29
+ }
30
+
31
+ function _findRoot() {
32
+ const data = _interopRequireDefault(require("find-root"));
33
+
34
+ _findRoot = function () {
35
+ return data;
36
+ };
37
+
38
+ return data;
39
+ }
40
+
41
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
42
+
43
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
44
+
45
+ /**
46
+ * Get the package folder, and in case it's not found get the resolved file path
47
+ * @param peerName
48
+ * @returns
49
+ */
50
+ function resolvePeerToDirOrFile(peerName, logger, hostRootDir) {
51
+ let resolved;
52
+
53
+ try {
54
+ const options = {
55
+ // resolve the host root dir to its real location, as require.resolve is preserve symlink, so we get wrong result otherwise
56
+ paths: [process.cwd(), __dirname]
57
+ };
58
+
59
+ if (hostRootDir) {
60
+ // resolve the host root dir to its real location, as require.resolve is preserve symlink, so we get wrong result otherwise
61
+ options.paths.unshift((0, _fs().realpathSync)(hostRootDir));
62
+ }
63
+
64
+ resolved = require.resolve(peerName, options);
65
+ const folder = (0, _findRoot().default)(resolved);
66
+ return folder;
67
+ } catch (e) {
68
+ if (resolved) {
69
+ logger.warn(`Couldn't find root dir for "${peerName}" from path "${resolved}" to add it as webpack alias`);
70
+ } else {
71
+ logger.warn(`Couldn't resolve "${peerName}" to add it as webpack alias`);
72
+ }
73
+
74
+ return resolved;
75
+ }
76
+ }
77
+ /**
78
+ * Make sure to resolve the peer path correctly
79
+ * we first resolve it to its dir (to be aligned with the aliases transformer)
80
+ * Then we resolve it to specific file, using enhanced resolve to make sure we resolve it using the correct main fields order
81
+ * @param peer
82
+ */
83
+
84
+
85
+ function resolvePeerToFile(peer, logger, hostRootDir) {
86
+ const dirOrFile = resolvePeerToDirOrFile(peer, logger, hostRootDir);
87
+ if (!dirOrFile) return undefined;
88
+ const resolver = createResolver();
89
+ const resolvedFile = resolver.resolveSync({}, '', dirOrFile);
90
+ return resolvedFile;
91
+ }
92
+ /**
93
+ * Generate a resolver that will read first the module field then the main field
94
+ * to make it compatible with webpack behavior
95
+ * @returns
96
+ */
97
+
98
+
99
+ function createResolver() {
100
+ // create a resolver
101
+ const myResolver = _enhancedResolve().ResolverFactory.createResolver({
102
+ fileSystem: new (_enhancedResolve().CachedInputFileSystem)(_fs().default, 4000),
103
+ useSyncFileSystemCalls: true,
104
+ mainFields: ['module', 'main']
105
+ });
106
+
107
+ return myResolver;
108
+ }
109
+
110
+ //# sourceMappingURL=resolve-peer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["resolvePeerToDirOrFile","peerName","logger","hostRootDir","resolved","options","paths","process","cwd","__dirname","unshift","realpathSync","require","resolve","folder","findRoot","e","warn","resolvePeerToFile","peer","dirOrFile","undefined","resolver","createResolver","resolvedFile","resolveSync","myResolver","ResolverFactory","fileSystem","CachedInputFileSystem","fs","useSyncFileSystemCalls","mainFields"],"sources":["resolve-peer.ts"],"sourcesContent":["import fs, { realpathSync } from 'fs';\nimport { ResolverFactory, CachedInputFileSystem } from 'enhanced-resolve';\nimport findRoot from 'find-root';\nimport { Logger } from '@teambit/logger';\n\n/**\n * Get the package folder, and in case it's not found get the resolved file path\n * @param peerName\n * @returns\n */\nexport function resolvePeerToDirOrFile(peerName: string, logger: Logger, hostRootDir?: string): string | undefined {\n let resolved;\n try {\n const options = {\n // resolve the host root dir to its real location, as require.resolve is preserve symlink, so we get wrong result otherwise\n paths: [process.cwd(), __dirname],\n };\n if (hostRootDir) {\n // resolve the host root dir to its real location, as require.resolve is preserve symlink, so we get wrong result otherwise\n options.paths.unshift(realpathSync(hostRootDir));\n }\n\n resolved = require.resolve(peerName, options);\n const folder = findRoot(resolved);\n return folder;\n } catch (e) {\n if (resolved) {\n logger.warn(`Couldn't find root dir for \"${peerName}\" from path \"${resolved}\" to add it as webpack alias`);\n } else {\n logger.warn(`Couldn't resolve \"${peerName}\" to add it as webpack alias`);\n }\n return resolved;\n }\n}\n\n/**\n * Make sure to resolve the peer path correctly\n * we first resolve it to its dir (to be aligned with the aliases transformer)\n * Then we resolve it to specific file, using enhanced resolve to make sure we resolve it using the correct main fields order\n * @param peer\n */\nexport function resolvePeerToFile(peer: string, logger: Logger, hostRootDir?: string): string | undefined {\n const dirOrFile = resolvePeerToDirOrFile(peer, logger, hostRootDir);\n if (!dirOrFile) return undefined;\n const resolver = createResolver();\n const resolvedFile = resolver.resolveSync({}, '', dirOrFile);\n return resolvedFile;\n}\n\n/**\n * Generate a resolver that will read first the module field then the main field\n * to make it compatible with webpack behavior\n * @returns\n */\nfunction createResolver() {\n // create a resolver\n const myResolver = ResolverFactory.createResolver({\n fileSystem: new CachedInputFileSystem(fs, 4000),\n useSyncFileSystemCalls: true,\n mainFields: ['module', 'main'],\n });\n return myResolver;\n}\n"],"mappings":";;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;;;;;AAGA;AACA;AACA;AACA;AACA;AACO,SAASA,sBAAT,CAAgCC,QAAhC,EAAkDC,MAAlD,EAAkEC,WAAlE,EAA4G;EACjH,IAAIC,QAAJ;;EACA,IAAI;IACF,MAAMC,OAAO,GAAG;MACd;MACAC,KAAK,EAAE,CAACC,OAAO,CAACC,GAAR,EAAD,EAAgBC,SAAhB;IAFO,CAAhB;;IAIA,IAAIN,WAAJ,EAAiB;MACf;MACAE,OAAO,CAACC,KAAR,CAAcI,OAAd,CAAsB,IAAAC,kBAAA,EAAaR,WAAb,CAAtB;IACD;;IAEDC,QAAQ,GAAGQ,OAAO,CAACC,OAAR,CAAgBZ,QAAhB,EAA0BI,OAA1B,CAAX;IACA,MAAMS,MAAM,GAAG,IAAAC,mBAAA,EAASX,QAAT,CAAf;IACA,OAAOU,MAAP;EACD,CAbD,CAaE,OAAOE,CAAP,EAAU;IACV,IAAIZ,QAAJ,EAAc;MACZF,MAAM,CAACe,IAAP,CAAa,+BAA8BhB,QAAS,gBAAeG,QAAS,8BAA5E;IACD,CAFD,MAEO;MACLF,MAAM,CAACe,IAAP,CAAa,qBAAoBhB,QAAS,8BAA1C;IACD;;IACD,OAAOG,QAAP;EACD;AACF;AAED;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASc,iBAAT,CAA2BC,IAA3B,EAAyCjB,MAAzC,EAAyDC,WAAzD,EAAmG;EACxG,MAAMiB,SAAS,GAAGpB,sBAAsB,CAACmB,IAAD,EAAOjB,MAAP,EAAeC,WAAf,CAAxC;EACA,IAAI,CAACiB,SAAL,EAAgB,OAAOC,SAAP;EAChB,MAAMC,QAAQ,GAAGC,cAAc,EAA/B;EACA,MAAMC,YAAY,GAAGF,QAAQ,CAACG,WAAT,CAAqB,EAArB,EAAyB,EAAzB,EAA6BL,SAA7B,CAArB;EACA,OAAOI,YAAP;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASD,cAAT,GAA0B;EACxB;EACA,MAAMG,UAAU,GAAGC,kCAAA,CAAgBJ,cAAhB,CAA+B;IAChDK,UAAU,EAAE,KAAIC,wCAAJ,EAA0BC,aAA1B,EAA8B,IAA9B,CADoC;IAEhDC,sBAAsB,EAAE,IAFwB;IAGhDC,UAAU,EAAE,CAAC,QAAD,EAAW,MAAX;EAHoC,CAA/B,CAAnB;;EAKA,OAAON,UAAP;AACD"}
@@ -0,0 +1,16 @@
1
+ import { WebpackConfigTransformContext } from '@teambit/webpack';
2
+ import { WebpackConfigMutator } from '@teambit/webpack.modules.config-mutator';
3
+ import { Logger } from '@teambit/logger';
4
+ export declare function generateAddAliasesFromPeersTransformer(peers: string[], logger: Logger): (config: WebpackConfigMutator, context: WebpackConfigTransformContext) => WebpackConfigMutator;
5
+ /**
6
+ * Generate a transformer that expose all the peers as global via the expose loader
7
+ * @param peers
8
+ * @returns
9
+ */
10
+ export declare function generateExposePeersTransformer(peers: string[], logger: Logger): (config: WebpackConfigMutator, context: WebpackConfigTransformContext) => WebpackConfigMutator;
11
+ /**
12
+ * Generate a transformer that expose all the peers as global via the expose loader
13
+ * @param peers
14
+ * @returns
15
+ */
16
+ export declare function generateExternalsTransformer(depes: string[]): (config: WebpackConfigMutator) => WebpackConfigMutator;
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.generateAddAliasesFromPeersTransformer = generateAddAliasesFromPeersTransformer;
7
+ exports.generateExposePeersTransformer = generateExposePeersTransformer;
8
+ exports.generateExternalsTransformer = generateExternalsTransformer;
9
+
10
+ function _getExposedRules() {
11
+ const data = require("./get-exposed-rules");
12
+
13
+ _getExposedRules = function () {
14
+ return data;
15
+ };
16
+
17
+ return data;
18
+ }
19
+
20
+ function _resolvePeer() {
21
+ const data = require("./resolve-peer");
22
+
23
+ _resolvePeer = function () {
24
+ return data;
25
+ };
26
+
27
+ return data;
28
+ }
29
+
30
+ function _getExternals() {
31
+ const data = require("./get-externals");
32
+
33
+ _getExternals = function () {
34
+ return data;
35
+ };
36
+
37
+ return data;
38
+ }
39
+
40
+ function generateAddAliasesFromPeersTransformer(peers, logger) {
41
+ return (config, context) => {
42
+ const peerAliases = peers.reduce((acc, peerName) => {
43
+ var _context$target;
44
+
45
+ // gets the correct module folder of the package.
46
+ // this allows us to resolve internal files, for example:
47
+ // node_modules/react-dom/test-utils
48
+ //
49
+ // we can't use require.resolve() because it resolves to a specific file.
50
+ // for example, if we used "react-dom": require.resolve("react-dom"),
51
+ // it would try to resolve "react-dom/test-utils" as:
52
+ // node_modules/react-dom/index.js/test-utils
53
+ acc[peerName] = (0, _resolvePeer().resolvePeerToDirOrFile)(peerName, logger, (_context$target = context.target) === null || _context$target === void 0 ? void 0 : _context$target.hostRootDir);
54
+ return acc;
55
+ }, {});
56
+ config.addAliases(peerAliases);
57
+ return config;
58
+ };
59
+ }
60
+ /**
61
+ * Generate a transformer that expose all the peers as global via the expose loader
62
+ * @param peers
63
+ * @returns
64
+ */
65
+
66
+
67
+ function generateExposePeersTransformer(peers, logger) {
68
+ return (config, context) => {
69
+ var _context$target2;
70
+
71
+ const exposedRules = (0, _getExposedRules().getExposedRules)(peers, logger, (_context$target2 = context.target) === null || _context$target2 === void 0 ? void 0 : _context$target2.hostRootDir);
72
+ config.addModuleRules(exposedRules);
73
+ return config;
74
+ };
75
+ }
76
+ /**
77
+ * Generate a transformer that expose all the peers as global via the expose loader
78
+ * @param peers
79
+ * @returns
80
+ */
81
+
82
+
83
+ function generateExternalsTransformer(depes) {
84
+ return config => {
85
+ const externals = (0, _getExternals().getExternals)(depes);
86
+ config.addExternals(externals);
87
+ return config;
88
+ };
89
+ }
90
+
91
+ //# sourceMappingURL=transformers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["generateAddAliasesFromPeersTransformer","peers","logger","config","context","peerAliases","reduce","acc","peerName","resolvePeerToDirOrFile","target","hostRootDir","addAliases","generateExposePeersTransformer","exposedRules","getExposedRules","addModuleRules","generateExternalsTransformer","depes","externals","getExternals","addExternals"],"sources":["transformers.ts"],"sourcesContent":["import { WebpackConfigTransformContext } from '@teambit/webpack';\nimport { WebpackConfigMutator } from '@teambit/webpack.modules.config-mutator';\nimport { Logger } from '@teambit/logger';\nimport { getExposedRules } from './get-exposed-rules';\nimport { resolvePeerToDirOrFile } from './resolve-peer';\nimport { getExternals } from './get-externals';\n\nexport function generateAddAliasesFromPeersTransformer(peers: string[], logger: Logger) {\n return (config: WebpackConfigMutator, context: WebpackConfigTransformContext): WebpackConfigMutator => {\n const peerAliases = peers.reduce((acc, peerName) => {\n // gets the correct module folder of the package.\n // this allows us to resolve internal files, for example:\n // node_modules/react-dom/test-utils\n //\n // we can't use require.resolve() because it resolves to a specific file.\n // for example, if we used \"react-dom\": require.resolve(\"react-dom\"),\n // it would try to resolve \"react-dom/test-utils\" as:\n // node_modules/react-dom/index.js/test-utils\n acc[peerName] = resolvePeerToDirOrFile(peerName, logger, context.target?.hostRootDir);\n return acc;\n }, {});\n\n config.addAliases(peerAliases);\n return config;\n };\n}\n\n/**\n * Generate a transformer that expose all the peers as global via the expose loader\n * @param peers\n * @returns\n */\nexport function generateExposePeersTransformer(peers: string[], logger: Logger) {\n return (config: WebpackConfigMutator, context: WebpackConfigTransformContext): WebpackConfigMutator => {\n const exposedRules = getExposedRules(peers, logger, context.target?.hostRootDir);\n config.addModuleRules(exposedRules);\n return config;\n };\n}\n\n/**\n * Generate a transformer that expose all the peers as global via the expose loader\n * @param peers\n * @returns\n */\nexport function generateExternalsTransformer(depes: string[]) {\n return (config: WebpackConfigMutator): WebpackConfigMutator => {\n const externals = getExternals(depes);\n config.addExternals(externals);\n return config;\n };\n}\n"],"mappings":";;;;;;;;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEO,SAASA,sCAAT,CAAgDC,KAAhD,EAAiEC,MAAjE,EAAiF;EACtF,OAAO,CAACC,MAAD,EAA+BC,OAA/B,KAAgG;IACrG,MAAMC,WAAW,GAAGJ,KAAK,CAACK,MAAN,CAAa,CAACC,GAAD,EAAMC,QAAN,KAAmB;MAAA;;MAClD;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACAD,GAAG,CAACC,QAAD,CAAH,GAAgB,IAAAC,qCAAA,EAAuBD,QAAvB,EAAiCN,MAAjC,qBAAyCE,OAAO,CAACM,MAAjD,oDAAyC,gBAAgBC,WAAzD,CAAhB;MACA,OAAOJ,GAAP;IACD,CAXmB,EAWjB,EAXiB,CAApB;IAaAJ,MAAM,CAACS,UAAP,CAAkBP,WAAlB;IACA,OAAOF,MAAP;EACD,CAhBD;AAiBD;AAED;AACA;AACA;AACA;AACA;;;AACO,SAASU,8BAAT,CAAwCZ,KAAxC,EAAyDC,MAAzD,EAAyE;EAC9E,OAAO,CAACC,MAAD,EAA+BC,OAA/B,KAAgG;IAAA;;IACrG,MAAMU,YAAY,GAAG,IAAAC,kCAAA,EAAgBd,KAAhB,EAAuBC,MAAvB,sBAA+BE,OAAO,CAACM,MAAvC,qDAA+B,iBAAgBC,WAA/C,CAArB;IACAR,MAAM,CAACa,cAAP,CAAsBF,YAAtB;IACA,OAAOX,MAAP;EACD,CAJD;AAKD;AAED;AACA;AACA;AACA;AACA;;;AACO,SAASc,4BAAT,CAAsCC,KAAtC,EAAuD;EAC5D,OAAQf,MAAD,IAAwD;IAC7D,MAAMgB,SAAS,GAAG,IAAAC,4BAAA,EAAaF,KAAb,CAAlB;IACAf,MAAM,CAACkB,YAAP,CAAoBF,SAApB;IACA,OAAOhB,MAAP;EACD,CAJD;AAKD"}
@@ -8,7 +8,7 @@ import { WebpackBundler } from './webpack.bundler';
8
8
  export declare type WebpackConfigTransformContext = GlobalWebpackConfigTransformContext & {
9
9
  target: Target;
10
10
  };
11
- export declare type WebpackConfigDevServerTransformContext = GlobalWebpackConfigTransformContext;
11
+ export declare type WebpackConfigDevServerTransformContext = GlobalWebpackConfigTransformContext & DevServerContext;
12
12
  export declare type GlobalWebpackConfigTransformContext = {
13
13
  mode: BundlerMode;
14
14
  };
@@ -55,10 +55,11 @@ export declare class WebpackMain {
55
55
  mergeConfig(target: any, source: any): any;
56
56
  createBundler(context: BundlerContext, transformers?: WebpackConfigTransformer[], initialConfigs?: webpack.Configuration[], webpackInstance?: any): WebpackBundler;
57
57
  private createConfigs;
58
+ private generateTransformers;
58
59
  private createDevServerConfig;
59
60
  static slots: never[];
60
61
  static runtime: import("@teambit/harmony").RuntimeDefinition;
61
62
  static dependencies: import("@teambit/harmony").Aspect[];
62
63
  static provider([pubsub, workspace, bundler, logger]: [PubsubMain, Workspace, BundlerMain, LoggerMain]): Promise<WebpackMain>;
63
64
  }
64
- export declare function runTransformersWithContext(config: WebpackConfigMutator, transformers: (WebpackConfigTransformer | WebpackConfigDevServerTransformer)[] | undefined, context: WebpackConfigTransformContext | WebpackConfigDevServerTransformContext): WebpackConfigMutator;
65
+ export declare function runTransformersWithContext(config: WebpackConfigMutator, transformers: (WebpackConfigTransformer | WebpackConfigDevServerTransformer)[] | undefined, context: any): WebpackConfigMutator;
@@ -112,6 +112,16 @@ function _webpackModules() {
112
112
  return data;
113
113
  }
114
114
 
115
+ function _transformers() {
116
+ const data = require("./transformers");
117
+
118
+ _transformers = function () {
119
+ return data;
120
+ };
121
+
122
+ return data;
123
+ }
124
+
115
125
  function _webpackDev() {
116
126
  const data = require("./config/webpack.dev.config");
117
127
 
@@ -193,10 +203,11 @@ class WebpackMain {
193
203
  createDevServer(context, transformers = []) {
194
204
  const config = this.createDevServerConfig(context.entry, this.workspace.path, context.id, context.rootPath, context.publicPath, context.title);
195
205
  const configMutator = new (_webpackModules().WebpackConfigMutator)(config);
196
- const transformerContext = {
206
+ const transformerContext = Object.assign(context, {
197
207
  mode: 'dev'
198
- };
199
- const afterMutation = runTransformersWithContext(configMutator.clone(), transformers, transformerContext); // @ts-ignore - fix this
208
+ });
209
+ const internalTransformers = this.generateTransformers(undefined, transformerContext);
210
+ const afterMutation = runTransformersWithContext(configMutator.clone(), [...internalTransformers, ...transformers], transformerContext); // @ts-ignore - fix this
200
211
 
201
212
  return new (_webpack5().WebpackDevServer)(afterMutation.raw, _webpack().default, _webpackDevServer().default);
202
213
  }
@@ -221,11 +232,37 @@ class WebpackMain {
221
232
  const context = Object.assign({}, transformerContext, {
222
233
  target
223
234
  });
224
- const afterMutation = runTransformersWithContext(configMutator.clone(), transformers, context);
235
+ const internalTransformers = this.generateTransformers(context, undefined, target);
236
+ const afterMutation = runTransformersWithContext(configMutator.clone(), [...internalTransformers, ...transformers], context);
225
237
  return afterMutation.raw;
226
238
  });
227
239
  }
228
240
 
241
+ generateTransformers(_bundlerContext, devServerContext, target) {
242
+ const transformers = []; // TODO: handle dev server
243
+
244
+ const hostDeps = (target === null || target === void 0 ? void 0 : target.hostDependencies) || (devServerContext === null || devServerContext === void 0 ? void 0 : devServerContext.hostDependencies);
245
+
246
+ if (hostDeps) {
247
+ if (target !== null && target !== void 0 && target.aliasHostDependencies || devServerContext !== null && devServerContext !== void 0 && devServerContext.aliasHostDependencies) {
248
+ const peerAliasesTransformer = (0, _transformers().generateAddAliasesFromPeersTransformer)(hostDeps, this.logger);
249
+ transformers.push(peerAliasesTransformer);
250
+ }
251
+
252
+ if (target !== null && target !== void 0 && target.exposeHostDependencies || devServerContext !== null && devServerContext !== void 0 && devServerContext.exposeHostDependencies) {
253
+ const exposePeersTransformer = (0, _transformers().generateExposePeersTransformer)(hostDeps, this.logger);
254
+ transformers.push(exposePeersTransformer);
255
+ }
256
+
257
+ if (target !== null && target !== void 0 && target.externalizeHostDependencies || devServerContext !== null && devServerContext !== void 0 && devServerContext.externalizeHostDependencies) {
258
+ const externalsTransformer = (0, _transformers().generateExternalsTransformer)(hostDeps);
259
+ transformers.push(externalsTransformer);
260
+ }
261
+ }
262
+
263
+ return transformers;
264
+ }
265
+
229
266
  createDevServerConfig(entry, rootPath, devServerID, publicRoot, publicPath, title) {
230
267
  return (0, _webpackDev().configFactory)(devServerID, rootPath, entry, publicRoot, publicPath, this.pubsub, title);
231
268
  }
@@ -244,7 +281,8 @@ exports.WebpackMain = WebpackMain;
244
281
 
245
282
  _webpack3().WebpackAspect.addRuntime(WebpackMain);
246
283
 
247
- function runTransformersWithContext(config, transformers = [], context) {
284
+ function runTransformersWithContext(config, transformers = [], // context: WebpackConfigTransformContext | WebpackConfigDevServerTransformContext
285
+ context) {
248
286
  if (!Array.isArray(transformers)) return config;
249
287
  const newConfig = transformers.reduce((acc, transformer) => {
250
288
  // @ts-ignore
@@ -1 +1 @@
1
- {"version":3,"names":["WebpackMain","constructor","pubsub","workspace","bundler","logger","createDevServer","context","transformers","config","createDevServerConfig","entry","path","id","rootPath","publicPath","title","configMutator","WebpackConfigMutator","transformerContext","mode","afterMutation","runTransformersWithContext","clone","WebpackDevServer","raw","webpack","WsDevServer","mergeConfig","target","source","merge","createBundler","initialConfigs","webpackInstance","configs","createConfigs","targets","baseConfigFactory","WebpackBundler","metaData","factory","bundlerContext","map","baseConfig","Object","assign","devServerID","publicRoot","devServerConfigFactory","provider","logPublisher","createLogger","WebpackAspect","MainRuntime","PubsubAspect","WorkspaceAspect","BundlerAspect","LoggerAspect","addRuntime","Array","isArray","newConfig","reduce","acc","transformer"],"sources":["webpack.main.runtime.ts"],"sourcesContent":["import webpack, { Configuration } from 'webpack';\nimport PubsubAspect, { PubsubMain } from '@teambit/pubsub';\nimport {\n BundlerAspect,\n BundlerContext,\n BundlerMain,\n DevServer,\n DevServerContext,\n BundlerMode,\n Target,\n} from '@teambit/bundler';\nimport { MainRuntime } from '@teambit/cli';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { Workspace, WorkspaceAspect } from '@teambit/workspace';\nimport { merge } from 'webpack-merge';\nimport WsDevServer from 'webpack-dev-server';\nimport { WebpackConfigMutator } from '@teambit/webpack.modules.config-mutator';\n\nimport { configFactory as devServerConfigFactory } from './config/webpack.dev.config';\nimport { configFactory as baseConfigFactory } from './config/webpack.config';\n\nimport { WebpackAspect } from './webpack.aspect';\nimport { WebpackBundler } from './webpack.bundler';\nimport { WebpackDevServer } from './webpack.dev-server';\n\nexport type WebpackConfigTransformContext = GlobalWebpackConfigTransformContext & {\n target: Target;\n};\n\nexport type WebpackConfigDevServerTransformContext = GlobalWebpackConfigTransformContext;\n\nexport type GlobalWebpackConfigTransformContext = {\n mode: BundlerMode;\n};\n\nexport type WebpackConfigTransformer = (\n config: WebpackConfigMutator,\n context: WebpackConfigTransformContext\n) => WebpackConfigMutator;\n\nexport type WebpackConfigDevServerTransformer = (\n config: WebpackConfigMutator,\n context: WebpackConfigDevServerTransformContext\n) => WebpackConfigMutator;\n\nexport class WebpackMain {\n constructor(\n /**\n * Pubsub extension.\n */\n public pubsub: PubsubMain,\n\n /**\n * workspace extension.\n */\n private workspace: Workspace,\n\n /**\n * bundler extension.\n */\n private bundler: BundlerMain,\n\n /**\n * Logger extension\n */\n public logger: Logger\n ) {}\n\n /**\n * create an instance of bit-compliant webpack dev server for a set of components\n */\n createDevServer(context: DevServerContext, transformers: WebpackConfigTransformer[] = []): DevServer {\n const config = this.createDevServerConfig(\n context.entry,\n this.workspace.path,\n context.id,\n context.rootPath,\n context.publicPath,\n context.title\n ) as any;\n const configMutator = new WebpackConfigMutator(config);\n const transformerContext: GlobalWebpackConfigTransformContext = { mode: 'dev' };\n const afterMutation = runTransformersWithContext(configMutator.clone(), transformers, transformerContext);\n // @ts-ignore - fix this\n return new WebpackDevServer(afterMutation.raw, webpack, WsDevServer);\n }\n\n mergeConfig(target: any, source: any): any {\n return merge(target, source);\n }\n\n createBundler(\n context: BundlerContext,\n transformers: WebpackConfigTransformer[] = [],\n initialConfigs?: webpack.Configuration[],\n webpackInstance?: any\n ) {\n const transformerContext: GlobalWebpackConfigTransformContext = { mode: 'prod' };\n // eslint-disable-next-line max-len\n const configs =\n initialConfigs ||\n this.createConfigs(context.targets, baseConfigFactory, transformers, transformerContext, context);\n return new WebpackBundler(context.targets, configs, this.logger, webpackInstance || webpack, context.metaData);\n }\n\n private createConfigs(\n targets: Target[],\n factory: (target: Target, context: BundlerContext) => Configuration,\n transformers: WebpackConfigTransformer[] = [],\n transformerContext: GlobalWebpackConfigTransformContext,\n bundlerContext: BundlerContext\n ) {\n return targets.map((target) => {\n const baseConfig = factory(target, bundlerContext);\n const configMutator = new WebpackConfigMutator(baseConfig);\n const context = Object.assign({}, transformerContext, { target });\n const afterMutation = runTransformersWithContext(configMutator.clone(), transformers, context);\n return afterMutation.raw;\n });\n }\n\n private createDevServerConfig(\n entry: string[],\n rootPath: string,\n devServerID: string,\n publicRoot: string,\n publicPath: string,\n title?: string\n ) {\n return devServerConfigFactory(devServerID, rootPath, entry, publicRoot, publicPath, this.pubsub, title);\n }\n\n static slots = [];\n\n static runtime = MainRuntime;\n static dependencies = [PubsubAspect, WorkspaceAspect, BundlerAspect, LoggerAspect];\n\n static async provider([pubsub, workspace, bundler, logger]: [PubsubMain, Workspace, BundlerMain, LoggerMain]) {\n const logPublisher = logger.createLogger(WebpackAspect.id);\n return new WebpackMain(pubsub, workspace, bundler, logPublisher);\n }\n}\n\nWebpackAspect.addRuntime(WebpackMain);\n\nexport function runTransformersWithContext(\n config: WebpackConfigMutator,\n transformers: Array<WebpackConfigTransformer | WebpackConfigDevServerTransformer> = [],\n context: WebpackConfigTransformContext | WebpackConfigDevServerTransformContext\n): WebpackConfigMutator {\n if (!Array.isArray(transformers)) return config;\n const newConfig = transformers.reduce((acc, transformer) => {\n // @ts-ignore\n return transformer(acc, context);\n }, config);\n return newConfig;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["WebpackMain","constructor","pubsub","workspace","bundler","logger","createDevServer","context","transformers","config","createDevServerConfig","entry","path","id","rootPath","publicPath","title","configMutator","WebpackConfigMutator","transformerContext","Object","assign","mode","internalTransformers","generateTransformers","undefined","afterMutation","runTransformersWithContext","clone","WebpackDevServer","raw","webpack","WsDevServer","mergeConfig","target","source","merge","createBundler","initialConfigs","webpackInstance","configs","createConfigs","targets","baseConfigFactory","WebpackBundler","metaData","factory","bundlerContext","map","baseConfig","_bundlerContext","devServerContext","hostDeps","hostDependencies","aliasHostDependencies","peerAliasesTransformer","generateAddAliasesFromPeersTransformer","push","exposeHostDependencies","exposePeersTransformer","generateExposePeersTransformer","externalizeHostDependencies","externalsTransformer","generateExternalsTransformer","devServerID","publicRoot","devServerConfigFactory","provider","logPublisher","createLogger","WebpackAspect","MainRuntime","PubsubAspect","WorkspaceAspect","BundlerAspect","LoggerAspect","addRuntime","Array","isArray","newConfig","reduce","acc","transformer"],"sources":["webpack.main.runtime.ts"],"sourcesContent":["import webpack, { Configuration } from 'webpack';\nimport PubsubAspect, { PubsubMain } from '@teambit/pubsub';\nimport {\n BundlerAspect,\n BundlerContext,\n BundlerMain,\n DevServer,\n DevServerContext,\n BundlerMode,\n Target,\n} from '@teambit/bundler';\nimport { MainRuntime } from '@teambit/cli';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport { Workspace, WorkspaceAspect } from '@teambit/workspace';\nimport { merge } from 'webpack-merge';\nimport WsDevServer from 'webpack-dev-server';\nimport { WebpackConfigMutator } from '@teambit/webpack.modules.config-mutator';\n\nimport {\n generateAddAliasesFromPeersTransformer,\n generateExposePeersTransformer,\n generateExternalsTransformer,\n} from './transformers';\nimport { configFactory as devServerConfigFactory } from './config/webpack.dev.config';\nimport { configFactory as baseConfigFactory } from './config/webpack.config';\n\nimport { WebpackAspect } from './webpack.aspect';\nimport { WebpackBundler } from './webpack.bundler';\nimport { WebpackDevServer } from './webpack.dev-server';\n\nexport type WebpackConfigTransformContext = GlobalWebpackConfigTransformContext & {\n target: Target;\n};\n\nexport type WebpackConfigDevServerTransformContext = GlobalWebpackConfigTransformContext & DevServerContext;\n\nexport type GlobalWebpackConfigTransformContext = {\n mode: BundlerMode;\n};\n\nexport type WebpackConfigTransformer = (\n config: WebpackConfigMutator,\n context: WebpackConfigTransformContext\n) => WebpackConfigMutator;\n\nexport type WebpackConfigDevServerTransformer = (\n config: WebpackConfigMutator,\n context: WebpackConfigDevServerTransformContext\n) => WebpackConfigMutator;\n\nexport class WebpackMain {\n constructor(\n /**\n * Pubsub extension.\n */\n public pubsub: PubsubMain,\n\n /**\n * workspace extension.\n */\n private workspace: Workspace,\n\n /**\n * bundler extension.\n */\n private bundler: BundlerMain,\n\n /**\n * Logger extension\n */\n public logger: Logger\n ) {}\n\n /**\n * create an instance of bit-compliant webpack dev server for a set of components\n */\n createDevServer(context: DevServerContext, transformers: WebpackConfigTransformer[] = []): DevServer {\n const config = this.createDevServerConfig(\n context.entry,\n this.workspace.path,\n context.id,\n context.rootPath,\n context.publicPath,\n context.title\n ) as any;\n const configMutator = new WebpackConfigMutator(config);\n const transformerContext: WebpackConfigDevServerTransformContext = Object.assign(context, { mode: 'dev' as const });\n const internalTransformers = this.generateTransformers(undefined, transformerContext);\n\n const afterMutation = runTransformersWithContext(\n configMutator.clone(),\n [...internalTransformers, ...transformers],\n transformerContext\n );\n // @ts-ignore - fix this\n return new WebpackDevServer(afterMutation.raw, webpack, WsDevServer);\n }\n\n mergeConfig(target: any, source: any): any {\n return merge(target, source);\n }\n\n createBundler(\n context: BundlerContext,\n transformers: WebpackConfigTransformer[] = [],\n initialConfigs?: webpack.Configuration[],\n webpackInstance?: any\n ) {\n const transformerContext: GlobalWebpackConfigTransformContext = { mode: 'prod' };\n // eslint-disable-next-line max-len\n const configs =\n initialConfigs ||\n this.createConfigs(context.targets, baseConfigFactory, transformers, transformerContext, context);\n return new WebpackBundler(context.targets, configs, this.logger, webpackInstance || webpack, context.metaData);\n }\n\n private createConfigs(\n targets: Target[],\n factory: (target: Target, context: BundlerContext) => Configuration,\n transformers: WebpackConfigTransformer[] = [],\n transformerContext: GlobalWebpackConfigTransformContext,\n bundlerContext: BundlerContext\n ) {\n return targets.map((target) => {\n const baseConfig = factory(target, bundlerContext);\n const configMutator = new WebpackConfigMutator(baseConfig);\n const context = Object.assign({}, transformerContext, { target });\n const internalTransformers = this.generateTransformers(context, undefined, target);\n const afterMutation = runTransformersWithContext(\n configMutator.clone(),\n [...internalTransformers, ...transformers],\n context\n );\n return afterMutation.raw;\n });\n }\n\n private generateTransformers(\n _bundlerContext?: WebpackConfigTransformContext,\n devServerContext?: WebpackConfigDevServerTransformContext,\n target?: Target\n ): Array<WebpackConfigTransformer> {\n const transformers: WebpackConfigTransformer[] = [];\n // TODO: handle dev server\n const hostDeps = target?.hostDependencies || devServerContext?.hostDependencies;\n if (hostDeps) {\n if (target?.aliasHostDependencies || devServerContext?.aliasHostDependencies) {\n const peerAliasesTransformer = generateAddAliasesFromPeersTransformer(hostDeps, this.logger);\n transformers.push(peerAliasesTransformer);\n }\n if (target?.exposeHostDependencies || devServerContext?.exposeHostDependencies) {\n const exposePeersTransformer = generateExposePeersTransformer(hostDeps, this.logger);\n transformers.push(exposePeersTransformer);\n }\n if (target?.externalizeHostDependencies || devServerContext?.externalizeHostDependencies) {\n const externalsTransformer = generateExternalsTransformer(hostDeps);\n transformers.push(externalsTransformer);\n }\n }\n return transformers;\n }\n\n private createDevServerConfig(\n entry: string[],\n rootPath: string,\n devServerID: string,\n publicRoot: string,\n publicPath: string,\n title?: string\n ) {\n return devServerConfigFactory(devServerID, rootPath, entry, publicRoot, publicPath, this.pubsub, title);\n }\n\n static slots = [];\n\n static runtime = MainRuntime;\n static dependencies = [PubsubAspect, WorkspaceAspect, BundlerAspect, LoggerAspect];\n\n static async provider([pubsub, workspace, bundler, logger]: [PubsubMain, Workspace, BundlerMain, LoggerMain]) {\n const logPublisher = logger.createLogger(WebpackAspect.id);\n return new WebpackMain(pubsub, workspace, bundler, logPublisher);\n }\n}\n\nWebpackAspect.addRuntime(WebpackMain);\n\nexport function runTransformersWithContext(\n config: WebpackConfigMutator,\n transformers: Array<WebpackConfigTransformer | WebpackConfigDevServerTransformer> = [],\n // context: WebpackConfigTransformContext | WebpackConfigDevServerTransformContext\n context: any\n): WebpackConfigMutator {\n if (!Array.isArray(transformers)) return config;\n const newConfig = transformers.reduce((acc, transformer) => {\n // @ts-ignore\n return transformer(acc, context);\n }, config);\n return newConfig;\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/webpack",
3
- "version": "0.0.738",
3
+ "version": "0.0.741",
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.738"
9
+ "version": "0.0.741"
10
10
  },
11
11
  "dependencies": {
12
12
  "webpack": "5.51.1",
@@ -14,12 +14,15 @@
14
14
  "p-map-series": "2.1.0",
15
15
  "webpack-dev-server": "4.1.0",
16
16
  "webpack-merge": "5.8.0",
17
- "camelcase": "6.2.0",
18
17
  "compression-webpack-plugin": "9.2.0",
19
18
  "html-webpack-plugin": "5.3.2",
20
19
  "webpack-assets-manifest": "5.1.0",
21
20
  "react-dev-utils": "11.0.4",
21
+ "camelcase": "6.2.0",
22
+ "expose-loader": "3.1.0",
22
23
  "inject-body-webpack-plugin": "1.3.0",
24
+ "enhanced-resolve": "4.5.0",
25
+ "find-root": "1.1.0",
23
26
  "vm-browserify": "1.1.2",
24
27
  "util": "0.12.3",
25
28
  "url": "0.11.0",
@@ -43,14 +46,15 @@
43
46
  "@babel/runtime": "7.12.18",
44
47
  "core-js": "^3.0.0",
45
48
  "@teambit/harmony": "0.3.3",
46
- "@teambit/webpack.modules.config-mutator": "0.0.138",
49
+ "@teambit/webpack.modules.config-mutator": "0.0.139",
47
50
  "@teambit/bit-error": "0.0.394",
48
- "@teambit/bundler": "0.0.738",
49
- "@teambit/logger": "0.0.583",
50
- "@teambit/cli": "0.0.491",
51
- "@teambit/pubsub": "0.0.738",
52
- "@teambit/workspace": "0.0.738",
53
- "@teambit/webpack.modules.generate-externals": "0.0.3"
51
+ "@teambit/bundler": "0.0.741",
52
+ "@teambit/logger": "0.0.584",
53
+ "@teambit/cli": "0.0.492",
54
+ "@teambit/pubsub": "0.0.741",
55
+ "@teambit/workspace": "0.0.741",
56
+ "@teambit/webpack.modules.generate-expose-loaders": "0.0.3",
57
+ "@teambit/webpack.modules.generate-externals": "0.0.4"
54
58
  },
55
59
  "devDependencies": {
56
60
  "@types/webpack": "5.28.0",
@@ -58,13 +62,14 @@
58
62
  "@types/react": "^17.0.8",
59
63
  "@types/webpack-dev-server": "4.0.3",
60
64
  "@types/react-dev-utils": "9.0.10",
65
+ "@types/find-root": "1.1.2",
61
66
  "@types/testing-library__jest-dom": "5.9.5",
62
67
  "@types/jest": "^26.0.0",
63
68
  "@types/react-dom": "^17.0.5",
64
69
  "@types/node": "12.20.4"
65
70
  },
66
71
  "peerDependencies": {
67
- "@teambit/legacy": "1.0.271",
72
+ "@teambit/legacy": "1.0.272",
68
73
  "react-dom": "^16.8.0 || ^17.0.0",
69
74
  "react": "^16.8.0 || ^17.0.0"
70
75
  },
@@ -1,2 +1,2 @@
1
- export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.webpack_webpack@0.0.738/dist/webpack.composition.js')]
2
- export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.webpack_webpack@0.0.738/dist/webpack.docs.mdx')]
1
+ export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.webpack_webpack@0.0.741/dist/webpack.composition.js')]
2
+ export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.webpack_webpack@0.0.741/dist/webpack.docs.mdx')]
@@ -0,0 +1,19 @@
1
+ import camelcase from 'camelcase';
2
+ import 'expose-loader';
3
+ import { Logger } from '@teambit/logger';
4
+ import { generateExposeLoaders } from '@teambit/webpack.modules.generate-expose-loaders';
5
+ import { compact } from 'lodash';
6
+ import { resolvePeerToFile } from './resolve-peer';
7
+
8
+ export function getExposedRules(peers: string[], logger: Logger, hostRootDir?: string) {
9
+ const loaderPath = require.resolve('expose-loader');
10
+ const depsEntries = peers.map((peer) => {
11
+ const resolvedPath = resolvePeerToFile(peer, logger, hostRootDir);
12
+ if (!resolvedPath) return undefined;
13
+ return {
14
+ path: resolvedPath,
15
+ globalName: camelcase(peer.replace('@', '').replace('/', '-'), { pascalCase: true }),
16
+ };
17
+ });
18
+ return generateExposeLoaders(compact(depsEntries), { loaderPath });
19
+ }
@@ -0,0 +1,8 @@
1
+ import camelcase from 'camelcase';
2
+ import { generateExternals } from '@teambit/webpack.modules.generate-externals';
3
+
4
+ export function getExternals(deps: string[]) {
5
+ return generateExternals(deps, {
6
+ transformName: (depName) => camelcase(depName.replace('@', '').replace('/', '-'), { pascalCase: true }),
7
+ });
8
+ }
@@ -1 +1,6 @@
1
1
  export { GenerateBodyInjectionTransformer, BodyInjectionOptions } from './inject-body';
2
+ export {
3
+ generateAddAliasesFromPeersTransformer,
4
+ generateExposePeersTransformer,
5
+ generateExternalsTransformer,
6
+ } from './transformers';
@@ -0,0 +1,63 @@
1
+ import fs, { realpathSync } from 'fs';
2
+ import { ResolverFactory, CachedInputFileSystem } from 'enhanced-resolve';
3
+ import findRoot from 'find-root';
4
+ import { Logger } from '@teambit/logger';
5
+
6
+ /**
7
+ * Get the package folder, and in case it's not found get the resolved file path
8
+ * @param peerName
9
+ * @returns
10
+ */
11
+ export function resolvePeerToDirOrFile(peerName: string, logger: Logger, hostRootDir?: string): string | undefined {
12
+ let resolved;
13
+ try {
14
+ const options = {
15
+ // resolve the host root dir to its real location, as require.resolve is preserve symlink, so we get wrong result otherwise
16
+ paths: [process.cwd(), __dirname],
17
+ };
18
+ if (hostRootDir) {
19
+ // resolve the host root dir to its real location, as require.resolve is preserve symlink, so we get wrong result otherwise
20
+ options.paths.unshift(realpathSync(hostRootDir));
21
+ }
22
+
23
+ resolved = require.resolve(peerName, options);
24
+ const folder = findRoot(resolved);
25
+ return folder;
26
+ } catch (e) {
27
+ if (resolved) {
28
+ logger.warn(`Couldn't find root dir for "${peerName}" from path "${resolved}" to add it as webpack alias`);
29
+ } else {
30
+ logger.warn(`Couldn't resolve "${peerName}" to add it as webpack alias`);
31
+ }
32
+ return resolved;
33
+ }
34
+ }
35
+
36
+ /**
37
+ * Make sure to resolve the peer path correctly
38
+ * we first resolve it to its dir (to be aligned with the aliases transformer)
39
+ * Then we resolve it to specific file, using enhanced resolve to make sure we resolve it using the correct main fields order
40
+ * @param peer
41
+ */
42
+ export function resolvePeerToFile(peer: string, logger: Logger, hostRootDir?: string): string | undefined {
43
+ const dirOrFile = resolvePeerToDirOrFile(peer, logger, hostRootDir);
44
+ if (!dirOrFile) return undefined;
45
+ const resolver = createResolver();
46
+ const resolvedFile = resolver.resolveSync({}, '', dirOrFile);
47
+ return resolvedFile;
48
+ }
49
+
50
+ /**
51
+ * Generate a resolver that will read first the module field then the main field
52
+ * to make it compatible with webpack behavior
53
+ * @returns
54
+ */
55
+ function createResolver() {
56
+ // create a resolver
57
+ const myResolver = ResolverFactory.createResolver({
58
+ fileSystem: new CachedInputFileSystem(fs, 4000),
59
+ useSyncFileSystemCalls: true,
60
+ mainFields: ['module', 'main'],
61
+ });
62
+ return myResolver;
63
+ }
@@ -0,0 +1,52 @@
1
+ import { WebpackConfigTransformContext } from '@teambit/webpack';
2
+ import { WebpackConfigMutator } from '@teambit/webpack.modules.config-mutator';
3
+ import { Logger } from '@teambit/logger';
4
+ import { getExposedRules } from './get-exposed-rules';
5
+ import { resolvePeerToDirOrFile } from './resolve-peer';
6
+ import { getExternals } from './get-externals';
7
+
8
+ export function generateAddAliasesFromPeersTransformer(peers: string[], logger: Logger) {
9
+ return (config: WebpackConfigMutator, context: WebpackConfigTransformContext): WebpackConfigMutator => {
10
+ const peerAliases = peers.reduce((acc, peerName) => {
11
+ // gets the correct module folder of the package.
12
+ // this allows us to resolve internal files, for example:
13
+ // node_modules/react-dom/test-utils
14
+ //
15
+ // we can't use require.resolve() because it resolves to a specific file.
16
+ // for example, if we used "react-dom": require.resolve("react-dom"),
17
+ // it would try to resolve "react-dom/test-utils" as:
18
+ // node_modules/react-dom/index.js/test-utils
19
+ acc[peerName] = resolvePeerToDirOrFile(peerName, logger, context.target?.hostRootDir);
20
+ return acc;
21
+ }, {});
22
+
23
+ config.addAliases(peerAliases);
24
+ return config;
25
+ };
26
+ }
27
+
28
+ /**
29
+ * Generate a transformer that expose all the peers as global via the expose loader
30
+ * @param peers
31
+ * @returns
32
+ */
33
+ export function generateExposePeersTransformer(peers: string[], logger: Logger) {
34
+ return (config: WebpackConfigMutator, context: WebpackConfigTransformContext): WebpackConfigMutator => {
35
+ const exposedRules = getExposedRules(peers, logger, context.target?.hostRootDir);
36
+ config.addModuleRules(exposedRules);
37
+ return config;
38
+ };
39
+ }
40
+
41
+ /**
42
+ * Generate a transformer that expose all the peers as global via the expose loader
43
+ * @param peers
44
+ * @returns
45
+ */
46
+ export function generateExternalsTransformer(depes: string[]) {
47
+ return (config: WebpackConfigMutator): WebpackConfigMutator => {
48
+ const externals = getExternals(depes);
49
+ config.addExternals(externals);
50
+ return config;
51
+ };
52
+ }