@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.
- package/config/webpack.config.ts +0 -14
- package/dist/config/webpack.config.d.ts +0 -1
- package/dist/config/webpack.config.js +1 -40
- package/dist/config/webpack.config.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +22 -1
- package/dist/index.js.map +1 -1
- package/dist/transformers/get-exposed-rules.d.ts +3 -0
- package/dist/transformers/get-exposed-rules.js +74 -0
- package/dist/transformers/get-exposed-rules.js.map +1 -0
- package/dist/transformers/get-externals.d.ts +1 -0
- package/dist/transformers/get-externals.js +42 -0
- package/dist/transformers/get-externals.js.map +1 -0
- package/dist/transformers/index.d.ts +1 -0
- package/dist/transformers/index.js +28 -0
- package/dist/transformers/index.js.map +1 -1
- package/dist/transformers/resolve-peer.d.ts +14 -0
- package/dist/transformers/resolve-peer.js +110 -0
- package/dist/transformers/resolve-peer.js.map +1 -0
- package/dist/transformers/transformers.d.ts +16 -0
- package/dist/transformers/transformers.js +91 -0
- package/dist/transformers/transformers.js.map +1 -0
- package/dist/webpack.main.runtime.d.ts +3 -2
- package/dist/webpack.main.runtime.js +43 -5
- package/dist/webpack.main.runtime.js.map +1 -1
- package/package-tar/teambit-webpack-0.0.741.tgz +0 -0
- package/package.json +16 -11
- package/{preview-1653227849497.js → preview-1653494536947.js} +2 -2
- package/transformers/get-exposed-rules.ts +19 -0
- package/transformers/get-externals.ts +8 -0
- package/transformers/index.ts +5 -0
- package/transformers/resolve-peer.ts +63 -0
- package/transformers/transformers.ts +52 -0
- package/package-tar/teambit-webpack-0.0.738.tgz +0 -0
package/config/webpack.config.ts
CHANGED
|
@@ -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
|
-
}
|
|
@@ -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$
|
|
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","
|
|
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 {
|
|
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,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"}
|
|
@@ -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":"
|
|
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:
|
|
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
|
|
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
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AASA;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;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAKA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAsBO,MAAMA,WAAN,CAAkB;EACvBC,WAAW;EACT;AACJ;AACA;EACWC,MAJE;EAMT;AACJ;AACA;EACYC,SATC;EAWT;AACJ;AACA;EACYC,OAdC;EAgBT;AACJ;AACA;EACWC,MAnBE,EAoBT;IAAA,KAhBOH,MAgBP,GAhBOA,MAgBP;IAAA,KAXQC,SAWR,GAXQA,SAWR;IAAA,KANQC,OAMR,GANQA,OAMR;IAAA,KADOC,MACP,GADOA,MACP;EAAE;EAEJ;AACF;AACA;;;EACEC,eAAe,CAACC,OAAD,EAA4BC,YAAwC,GAAG,EAAvE,EAAsF;IACnG,MAAMC,MAAM,GAAG,KAAKC,qBAAL,CACbH,OAAO,CAACI,KADK,EAEb,KAAKR,SAAL,CAAeS,IAFF,EAGbL,OAAO,CAACM,EAHK,EAIbN,OAAO,CAACO,QAJK,EAKbP,OAAO,CAACQ,UALK,EAMbR,OAAO,CAACS,KANK,CAAf;IAQA,MAAMC,aAAa,GAAG,KAAIC,sCAAJ,EAAyBT,MAAzB,CAAtB;IACA,MAAMU,kBAA0D,GAAGC,MAAM,CAACC,MAAP,CAAcd,OAAd,EAAuB;MAAEe,IAAI,EAAE;IAAR,CAAvB,CAAnE;IACA,MAAMC,oBAAoB,GAAG,KAAKC,oBAAL,CAA0BC,SAA1B,EAAqCN,kBAArC,CAA7B;IAEA,MAAMO,aAAa,GAAGC,0BAA0B,CAC9CV,aAAa,CAACW,KAAd,EAD8C,EAE9C,CAAC,GAAGL,oBAAJ,EAA0B,GAAGf,YAA7B,CAF8C,EAG9CW,kBAH8C,CAAhD,CAbmG,CAkBnG;;IACA,OAAO,KAAIU,4BAAJ,EAAqBH,aAAa,CAACI,GAAnC,EAAwCC,kBAAxC,EAAiDC,2BAAjD,CAAP;EACD;;EAEDC,WAAW,CAACC,MAAD,EAAcC,MAAd,EAAgC;IACzC,OAAO,IAAAC,qBAAA,EAAMF,MAAN,EAAcC,MAAd,CAAP;EACD;;EAEDE,aAAa,CACX9B,OADW,EAEXC,YAAwC,GAAG,EAFhC,EAGX8B,cAHW,EAIXC,eAJW,EAKX;IACA,MAAMpB,kBAAuD,GAAG;MAAEG,IAAI,EAAE;IAAR,CAAhE,CADA,CAEA;;IACA,MAAMkB,OAAO,GACXF,cAAc,IACd,KAAKG,aAAL,CAAmBlC,OAAO,CAACmC,OAA3B,EAAoCC,yBAApC,EAAuDnC,YAAvD,EAAqEW,kBAArE,EAAyFZ,OAAzF,CAFF;IAGA,OAAO,KAAIqC,0BAAJ,EAAmBrC,OAAO,CAACmC,OAA3B,EAAoCF,OAApC,EAA6C,KAAKnC,MAAlD,EAA0DkC,eAAe,IAAIR,kBAA7E,EAAsFxB,OAAO,CAACsC,QAA9F,CAAP;EACD;;EAEOJ,aAAa,CACnBC,OADmB,EAEnBI,OAFmB,EAGnBtC,YAAwC,GAAG,EAHxB,EAInBW,kBAJmB,EAKnB4B,cALmB,EAMnB;IACA,OAAOL,OAAO,CAACM,GAAR,CAAad,MAAD,IAAY;MAC7B,MAAMe,UAAU,GAAGH,OAAO,CAACZ,MAAD,EAASa,cAAT,CAA1B;MACA,MAAM9B,aAAa,GAAG,KAAIC,sCAAJ,EAAyB+B,UAAzB,CAAtB;MACA,MAAM1C,OAAO,GAAGa,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBF,kBAAlB,EAAsC;QAAEe;MAAF,CAAtC,CAAhB;MACA,MAAMX,oBAAoB,GAAG,KAAKC,oBAAL,CAA0BjB,OAA1B,EAAmCkB,SAAnC,EAA8CS,MAA9C,CAA7B;MACA,MAAMR,aAAa,GAAGC,0BAA0B,CAC9CV,aAAa,CAACW,KAAd,EAD8C,EAE9C,CAAC,GAAGL,oBAAJ,EAA0B,GAAGf,YAA7B,CAF8C,EAG9CD,OAH8C,CAAhD;MAKA,OAAOmB,aAAa,CAACI,GAArB;IACD,CAXM,CAAP;EAYD;;EAEON,oBAAoB,CAC1B0B,eAD0B,EAE1BC,gBAF0B,EAG1BjB,MAH0B,EAIO;IACjC,MAAM1B,YAAwC,GAAG,EAAjD,CADiC,CAEjC;;IACA,MAAM4C,QAAQ,GAAG,CAAAlB,MAAM,SAAN,IAAAA,MAAM,WAAN,YAAAA,MAAM,CAAEmB,gBAAR,MAA4BF,gBAA5B,aAA4BA,gBAA5B,uBAA4BA,gBAAgB,CAAEE,gBAA9C,CAAjB;;IACA,IAAID,QAAJ,EAAc;MACZ,IAAIlB,MAAM,SAAN,IAAAA,MAAM,WAAN,IAAAA,MAAM,CAAEoB,qBAAR,IAAiCH,gBAAjC,aAAiCA,gBAAjC,eAAiCA,gBAAgB,CAAEG,qBAAvD,EAA8E;QAC5E,MAAMC,sBAAsB,GAAG,IAAAC,sDAAA,EAAuCJ,QAAvC,EAAiD,KAAK/C,MAAtD,CAA/B;QACAG,YAAY,CAACiD,IAAb,CAAkBF,sBAAlB;MACD;;MACD,IAAIrB,MAAM,SAAN,IAAAA,MAAM,WAAN,IAAAA,MAAM,CAAEwB,sBAAR,IAAkCP,gBAAlC,aAAkCA,gBAAlC,eAAkCA,gBAAgB,CAAEO,sBAAxD,EAAgF;QAC9E,MAAMC,sBAAsB,GAAG,IAAAC,8CAAA,EAA+BR,QAA/B,EAAyC,KAAK/C,MAA9C,CAA/B;QACAG,YAAY,CAACiD,IAAb,CAAkBE,sBAAlB;MACD;;MACD,IAAIzB,MAAM,SAAN,IAAAA,MAAM,WAAN,IAAAA,MAAM,CAAE2B,2BAAR,IAAuCV,gBAAvC,aAAuCA,gBAAvC,eAAuCA,gBAAgB,CAAEU,2BAA7D,EAA0F;QACxF,MAAMC,oBAAoB,GAAG,IAAAC,4CAAA,EAA6BX,QAA7B,CAA7B;QACA5C,YAAY,CAACiD,IAAb,CAAkBK,oBAAlB;MACD;IACF;;IACD,OAAOtD,YAAP;EACD;;EAEOE,qBAAqB,CAC3BC,KAD2B,EAE3BG,QAF2B,EAG3BkD,WAH2B,EAI3BC,UAJ2B,EAK3BlD,UAL2B,EAM3BC,KAN2B,EAO3B;IACA,OAAO,IAAAkD,2BAAA,EAAuBF,WAAvB,EAAoClD,QAApC,EAA8CH,KAA9C,EAAqDsD,UAArD,EAAiElD,UAAjE,EAA6E,KAAKb,MAAlF,EAA0Fc,KAA1F,CAAP;EACD;;EAOoB,aAARmD,QAAQ,CAAC,CAACjE,MAAD,EAASC,SAAT,EAAoBC,OAApB,EAA6BC,MAA7B,CAAD,EAAyF;IAC5G,MAAM+D,YAAY,GAAG/D,MAAM,CAACgE,YAAP,CAAoBC,yBAAA,CAAczD,EAAlC,CAArB;IACA,OAAO,IAAIb,WAAJ,CAAgBE,MAAhB,EAAwBC,SAAxB,EAAmCC,OAAnC,EAA4CgE,YAA5C,CAAP;EACD;;AAnIsB;;;gCAAZpE,W,WA2HI,E;gCA3HJA,W,aA6HMuE,kB;gCA7HNvE,W,kBA8HW,CAACwE,iBAAD,EAAeC,4BAAf,EAAgCC,wBAAhC,EAA+CC,sBAA/C,C;;AAQxBL,yBAAA,CAAcM,UAAd,CAAyB5E,WAAzB;;AAEO,SAAS2B,0BAAT,CACLlB,MADK,EAELD,YAAiF,GAAG,EAF/E,EAGL;AACAD,OAJK,EAKiB;EACtB,IAAI,CAACsE,KAAK,CAACC,OAAN,CAActE,YAAd,CAAL,EAAkC,OAAOC,MAAP;EAClC,MAAMsE,SAAS,GAAGvE,YAAY,CAACwE,MAAb,CAAoB,CAACC,GAAD,EAAMC,WAAN,KAAsB;IAC1D;IACA,OAAOA,WAAW,CAACD,GAAD,EAAM1E,OAAN,CAAlB;EACD,CAHiB,EAGfE,MAHe,CAAlB;EAIA,OAAOsE,SAAP;AACD"}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/webpack",
|
|
3
|
-
"version": "0.0.
|
|
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.
|
|
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.
|
|
49
|
+
"@teambit/webpack.modules.config-mutator": "0.0.139",
|
|
47
50
|
"@teambit/bit-error": "0.0.394",
|
|
48
|
-
"@teambit/bundler": "0.0.
|
|
49
|
-
"@teambit/logger": "0.0.
|
|
50
|
-
"@teambit/cli": "0.0.
|
|
51
|
-
"@teambit/pubsub": "0.0.
|
|
52
|
-
"@teambit/workspace": "0.0.
|
|
53
|
-
"@teambit/webpack.modules.generate-
|
|
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.
|
|
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.
|
|
2
|
-
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.webpack_webpack@0.0.
|
|
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
|
+
}
|
package/transformers/index.ts
CHANGED
|
@@ -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
|
+
}
|
|
Binary file
|