@teambit/dependency-resolver 1.0.107 → 1.0.109
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/artifacts/__bit_junit.xml +55 -0
- package/artifacts/preview/teambit_dependencies_dependency_resolver-preview.js +1 -0
- package/dist/apply-updates.js +2 -4
- package/dist/apply-updates.js.map +1 -1
- package/dist/dependencies/base-dependency.d.ts +7 -7
- package/dist/dependencies/base-dependency.js +1 -2
- package/dist/dependencies/base-dependency.js.map +1 -1
- package/dist/dependencies/component-dependency/component-dependency.js +1 -2
- package/dist/dependencies/component-dependency/component-dependency.js.map +1 -1
- package/dist/dependencies/dependency-list-factory.js +2 -4
- package/dist/dependencies/dependency-list-factory.js.map +1 -1
- package/dist/dependencies/dependency-list.d.ts +2 -2
- package/dist/dependencies/dependency-list.js +1 -4
- package/dist/dependencies/dependency-list.js.map +1 -1
- package/dist/dependencies/dependency.d.ts +5 -5
- package/dist/dependencies.service.d.ts +4 -4
- package/dist/dependencies.service.js +3 -3
- package/dist/dependencies.service.js.map +1 -1
- package/dist/dependency-installer.d.ts +10 -9
- package/dist/dependency-installer.js +5 -8
- package/dist/dependency-installer.js.map +1 -1
- package/dist/dependency-linker.d.ts +10 -9
- package/dist/dependency-linker.js +7 -11
- package/dist/dependency-linker.js.map +1 -1
- package/dist/dependency-resolver.composition.d.ts +2 -2
- package/dist/dependency-resolver.main.runtime.d.ts +15 -15
- package/dist/dependency-resolver.main.runtime.js +33 -39
- package/dist/dependency-resolver.main.runtime.js.map +1 -1
- package/dist/dependency-version-resolver.d.ts +2 -1
- package/dist/get-all-policy-pkgs.d.ts +4 -4
- package/dist/manifest/deduping/dedupe-dependencies.d.ts +4 -4
- package/dist/manifest/deduping/dedupe-dependencies.js +1 -1
- package/dist/manifest/deduping/dedupe-dependencies.js.map +1 -1
- package/dist/manifest/deduping/hoist-dependencies.js +2 -3
- package/dist/manifest/deduping/hoist-dependencies.js.map +1 -1
- package/dist/manifest/deduping/hoist-dependencies.spec.js +6 -8
- package/dist/manifest/deduping/hoist-dependencies.spec.js.map +1 -1
- package/dist/manifest/deduping/index-by-dep-id.d.ts +4 -4
- package/dist/manifest/deduping/index-by-dep-id.js +1 -2
- package/dist/manifest/deduping/index-by-dep-id.js.map +1 -1
- package/dist/manifest/manifest.d.ts +4 -4
- package/dist/manifest/update-dependency-version.js +2 -2
- package/dist/manifest/update-dependency-version.js.map +1 -1
- package/dist/manifest/workspace-manifest-factory.d.ts +3 -3
- package/dist/manifest/workspace-manifest-factory.js +3 -5
- package/dist/manifest/workspace-manifest-factory.js.map +1 -1
- package/dist/manifest/workspace-manifest.js +1 -2
- package/dist/manifest/workspace-manifest.js.map +1 -1
- package/dist/package-manager-legacy.d.ts +1 -1
- package/dist/package-manager.d.ts +5 -5
- package/dist/policy/env-policy/env-policy.d.ts +7 -7
- package/dist/policy/policy.d.ts +9 -9
- package/dist/policy/variant-policy/variant-policy.d.ts +9 -9
- package/dist/policy/workspace-policy/workspace-policy.d.ts +11 -11
- package/dist/{preview-1703590665075.js → preview-1703698405864.js} +2 -2
- package/dist/registry/registry.d.ts +6 -6
- package/dist/show-fragments/serialize-by-lifecycle.js +1 -2
- package/dist/show-fragments/serialize-by-lifecycle.js.map +1 -1
- package/dist/types.d.ts +8 -8
- package/package.json +26 -33
- package/tsconfig.json +16 -21
- package/types/asset.d.ts +15 -3
|
@@ -2,20 +2,21 @@ import { AspectLoaderMain } from '@teambit/aspect-loader';
|
|
|
2
2
|
import { ComponentMap } from '@teambit/component';
|
|
3
3
|
import { DependencyResolverMain } from '@teambit/dependency-resolver';
|
|
4
4
|
import { Logger } from '@teambit/logger';
|
|
5
|
+
import { PathAbsolute } from '@teambit/legacy/dist/utils/path';
|
|
5
6
|
import { PeerDependencyRules, ProjectManifest } from '@pnpm/types';
|
|
6
7
|
import { PackageManager, PackageManagerInstallOptions, PackageImportMethod } from './package-manager';
|
|
7
8
|
import { WorkspacePolicy } from './policy';
|
|
8
|
-
export
|
|
9
|
+
export type DepInstallerContext = {
|
|
9
10
|
inCapsule?: boolean;
|
|
10
11
|
};
|
|
11
|
-
export
|
|
12
|
+
export type InstallArgs = {
|
|
12
13
|
rootDir: string | undefined;
|
|
13
14
|
rootPolicy: WorkspacePolicy;
|
|
14
15
|
componentDirectoryMap: ComponentMap<string>;
|
|
15
16
|
options: InstallOptions;
|
|
16
17
|
packageManagerOptions: PackageManagerInstallOptions;
|
|
17
18
|
};
|
|
18
|
-
export
|
|
19
|
+
export type InstallOptions = {
|
|
19
20
|
installTeambitBit: boolean;
|
|
20
21
|
packageManagerConfigRootDir?: string;
|
|
21
22
|
resolveVersionsFromDependenciesOnly?: boolean;
|
|
@@ -24,7 +25,7 @@ export declare type InstallOptions = {
|
|
|
24
25
|
excludeExtensionsDependencies?: boolean;
|
|
25
26
|
dedupeInjectedDeps?: boolean;
|
|
26
27
|
};
|
|
27
|
-
export
|
|
28
|
+
export type GetComponentManifestsOptions = {
|
|
28
29
|
componentDirectoryMap: ComponentMap<string>;
|
|
29
30
|
rootPolicy: WorkspacePolicy;
|
|
30
31
|
rootDir: string;
|
|
@@ -33,10 +34,10 @@ export declare type GetComponentManifestsOptions = {
|
|
|
33
34
|
hasRootComponents?: boolean;
|
|
34
35
|
excludeExtensionsDependencies?: boolean;
|
|
35
36
|
} & Pick<PackageManagerInstallOptions, 'dedupe' | 'dependencyFilterFn' | 'copyPeerToRuntimeOnComponents' | 'copyPeerToRuntimeOnRoot' | 'installPeersFromEnvs'>;
|
|
36
|
-
export
|
|
37
|
-
export
|
|
38
|
-
export
|
|
39
|
-
export
|
|
37
|
+
export type PreInstallSubscriber = (installer: DependencyInstaller, installArgs: InstallArgs) => Promise<void>;
|
|
38
|
+
export type PreInstallSubscriberList = Array<PreInstallSubscriber>;
|
|
39
|
+
export type PostInstallSubscriber = (installer: DependencyInstaller, installArgs: InstallArgs) => Promise<void>;
|
|
40
|
+
export type PostInstallSubscriberList = Array<PostInstallSubscriber>;
|
|
40
41
|
export declare class DependencyInstaller {
|
|
41
42
|
/**
|
|
42
43
|
* package manager instance.
|
|
@@ -62,7 +63,7 @@ export declare class DependencyInstaller {
|
|
|
62
63
|
/**
|
|
63
64
|
* package manager instance.
|
|
64
65
|
*/
|
|
65
|
-
packageManager: PackageManager, aspectLoader: AspectLoaderMain, logger: Logger, dependencyResolver: DependencyResolverMain, rootDir?: string |
|
|
66
|
+
packageManager: PackageManager, aspectLoader: AspectLoaderMain, logger: Logger, dependencyResolver: DependencyResolverMain, rootDir?: string | PathAbsolute, cacheRootDir?: string | PathAbsolute, preInstallSubscriberList?: PreInstallSubscriberList, postInstallSubscriberList?: PostInstallSubscriberList, nodeLinker?: 'hoisted' | 'isolated', packageImportMethod?: PackageImportMethod, sideEffectsCache?: boolean, nodeVersion?: string, engineStrict?: boolean, peerDependencyRules?: PeerDependencyRules, neverBuiltDependencies?: string[], preferOffline?: boolean, installingContext?: DepInstallerContext);
|
|
66
67
|
install(rootDir: string | undefined, rootPolicy: WorkspacePolicy, componentDirectoryMap: ComponentMap<string>, options?: InstallOptions, packageManagerOptions?: PackageManagerInstallOptions): Promise<{
|
|
67
68
|
dependenciesChanged: boolean;
|
|
68
69
|
}>;
|
|
@@ -88,7 +88,6 @@ class DependencyInstaller {
|
|
|
88
88
|
return this.installComponents(finalRootDir, manifests, rootPolicy, componentDirectoryMap, options, packageManagerOptions);
|
|
89
89
|
}
|
|
90
90
|
async installComponents(rootDir, manifests, rootPolicy, componentDirectoryMap, options = DEFAULT_INSTALL_OPTIONS, packageManagerOptions = DEFAULT_PM_INSTALL_OPTIONS) {
|
|
91
|
-
var _this$installingConte;
|
|
92
91
|
const args = {
|
|
93
92
|
componentDirectoryMap,
|
|
94
93
|
options,
|
|
@@ -106,7 +105,6 @@ class DependencyInstaller {
|
|
|
106
105
|
manifests = JSON.parse(JSON.stringify(manifests));
|
|
107
106
|
const linkedDependencies = JSON.parse(JSON.stringify(options.linkedDependencies));
|
|
108
107
|
if (linkedDependencies[finalRootDir]) {
|
|
109
|
-
var _manifests$finalRootD;
|
|
110
108
|
const directDeps = new Set();
|
|
111
109
|
Object.values(manifests).forEach(manifest => {
|
|
112
110
|
for (const depName of Object.keys(_objectSpread(_objectSpread({}, manifest.dependencies), manifest.devDependencies))) {
|
|
@@ -118,7 +116,7 @@ class DependencyInstaller {
|
|
|
118
116
|
delete linkedDependencies[finalRootDir][manifest.name];
|
|
119
117
|
}
|
|
120
118
|
}
|
|
121
|
-
if (options.forceTeambitHarmonyLink &&
|
|
119
|
+
if (options.forceTeambitHarmonyLink && manifests[finalRootDir].dependencies?.['@teambit/harmony']) {
|
|
122
120
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
123
121
|
delete manifests[finalRootDir].dependencies['@teambit/harmony'];
|
|
124
122
|
}
|
|
@@ -170,7 +168,7 @@ class DependencyInstaller {
|
|
|
170
168
|
}
|
|
171
169
|
const messagePrefix = 'running package installation';
|
|
172
170
|
const messageSuffix = `using ${this.packageManager.name}`;
|
|
173
|
-
const message =
|
|
171
|
+
const message = this.installingContext?.inCapsule ? `(capsule) ${messagePrefix} in root dir ${this.rootDir} ${messageSuffix}` : `${messagePrefix} ${messageSuffix}`;
|
|
174
172
|
if (!hidePackageManagerOutput) {
|
|
175
173
|
this.logger.setStatusLine(message);
|
|
176
174
|
}
|
|
@@ -250,15 +248,14 @@ class DependencyInstaller {
|
|
|
250
248
|
return Promise.all(promises);
|
|
251
249
|
}
|
|
252
250
|
async runPrePostSubscribers(subscribers = [], type, args) {
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
if (!((_this$installingConte3 = this.installingContext) !== null && _this$installingConte3 !== void 0 && _this$installingConte3.inCapsule)) {
|
|
251
|
+
const message = this.installingContext?.inCapsule ? `(capsule) running ${type} install subscribers in root dir ${this.rootDir}` : `running ${type} install subscribers`;
|
|
252
|
+
if (!this.installingContext?.inCapsule) {
|
|
256
253
|
this.logger.setStatusLine(message);
|
|
257
254
|
}
|
|
258
255
|
await (0, _pMapSeries().default)(subscribers, async subscriber => {
|
|
259
256
|
return subscriber(this, args);
|
|
260
257
|
});
|
|
261
|
-
if (!
|
|
258
|
+
if (!this.installingContext?.inCapsule) {
|
|
262
259
|
this.logger.consoleSuccess(message);
|
|
263
260
|
}
|
|
264
261
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_pMapSeries","data","_interopRequireDefault","require","_path","_fsExtra","_exceptions","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","String","Symbol","toPrimitive","call","TypeError","Number","DEFAULT_PM_INSTALL_OPTIONS","dedupe","copyPeerToRuntimeOnRoot","copyPeerToRuntimeOnComponents","installPeersFromEnvs","DEFAULT_INSTALL_OPTIONS","installTeambitBit","excludeExtensionsDependencies","DependencyInstaller","constructor","packageManager","aspectLoader","logger","dependencyResolver","rootDir","cacheRootDir","preInstallSubscriberList","postInstallSubscriberList","nodeLinker","packageImportMethod","sideEffectsCache","nodeVersion","engineStrict","peerDependencyRules","neverBuiltDependencies","preferOffline","installingContext","install","rootPolicy","componentDirectoryMap","options","packageManagerOptions","finalRootDir","RootDirNotDefined","manifests","getComponentManifests","resolveVersionsFromDependenciesOnly","referenceLocalPackages","rootComponentsForCapsules","installComponents","_this$installingConte","args","runPrePostSubscribers","mainAspect","linkedDependencies","JSON","parse","stringify","_manifests$finalRootD","directDeps","Set","values","manifest","depName","dependencies","devDependencies","add","name","has","forceTeambitHarmonyLink","entries","dir","linkedDeps","hidePackageManagerOutput","inCapsule","process","env","VERBOSE_PM_OUTPUT","calculatedPmOpts","packageManagerConfigRootDir","dedupeInjectedDeps","version","packageName","MainAspectNotInstallable","dependencyId","lifecycleType","rootComponents","keepExistingModulesDir","cleanCompsNodeModules","messagePrefix","messageSuffix","message","setStatusLine","startTime","hrtime","installResult","consoleSuccess","pruneModules","dependencyFilterFn","hasRootComponents","filterComponentsFromManifests","createManifestForComponentsWithoutDependencies","workspaceManifest","getWorkspaceManifest","undefined","components","toArray","reduce","acc","component","getPackageName","componentsManifestsMap","get","toJson","copyPeerToRuntime","promises","map","nmDir","path","join","fs","remove","Promise","all","subscribers","type","_this$installingConte2","_this$installingConte3","_this$installingConte4","mapSeries","subscriber","exports"],"sources":["dependency-installer.ts"],"sourcesContent":["import mapSeries from 'p-map-series';\nimport path from 'path';\nimport fs from 'fs-extra';\nimport { MainAspect, AspectLoaderMain } from '@teambit/aspect-loader';\nimport { ComponentMap } from '@teambit/component';\nimport { CreateFromComponentsOptions, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { Logger } from '@teambit/logger';\nimport { PathAbsolute } from '@teambit/legacy/dist/utils/path';\nimport { PeerDependencyRules, ProjectManifest } from '@pnpm/types';\nimport { MainAspectNotInstallable, RootDirNotDefined } from './exceptions';\nimport { PackageManager, PackageManagerInstallOptions, PackageImportMethod } from './package-manager';\nimport { WorkspacePolicy } from './policy';\n\nconst DEFAULT_PM_INSTALL_OPTIONS: PackageManagerInstallOptions = {\n dedupe: true,\n copyPeerToRuntimeOnRoot: true,\n copyPeerToRuntimeOnComponents: false,\n installPeersFromEnvs: false,\n};\n\nconst DEFAULT_INSTALL_OPTIONS: InstallOptions = {\n installTeambitBit: false,\n excludeExtensionsDependencies: false,\n};\n\nexport type DepInstallerContext = {\n inCapsule?: boolean;\n};\n\nexport type InstallArgs = {\n rootDir: string | undefined;\n rootPolicy: WorkspacePolicy;\n componentDirectoryMap: ComponentMap<string>;\n options: InstallOptions;\n packageManagerOptions: PackageManagerInstallOptions;\n};\n\nexport type InstallOptions = {\n installTeambitBit: boolean;\n packageManagerConfigRootDir?: string;\n resolveVersionsFromDependenciesOnly?: boolean;\n linkedDependencies?: Record<string, Record<string, string>>;\n forceTeambitHarmonyLink?: boolean;\n excludeExtensionsDependencies?: boolean;\n dedupeInjectedDeps?: boolean;\n};\n\nexport type GetComponentManifestsOptions = {\n componentDirectoryMap: ComponentMap<string>;\n rootPolicy: WorkspacePolicy;\n rootDir: string;\n resolveVersionsFromDependenciesOnly?: boolean;\n referenceLocalPackages?: boolean;\n hasRootComponents?: boolean;\n excludeExtensionsDependencies?: boolean;\n} & Pick<\n PackageManagerInstallOptions,\n 'dedupe' | 'dependencyFilterFn' | 'copyPeerToRuntimeOnComponents' | 'copyPeerToRuntimeOnRoot' | 'installPeersFromEnvs'\n>;\n\nexport type PreInstallSubscriber = (installer: DependencyInstaller, installArgs: InstallArgs) => Promise<void>;\nexport type PreInstallSubscriberList = Array<PreInstallSubscriber>;\n\nexport type PostInstallSubscriber = (installer: DependencyInstaller, installArgs: InstallArgs) => Promise<void>;\nexport type PostInstallSubscriberList = Array<PostInstallSubscriber>;\n\nexport class DependencyInstaller {\n constructor(\n /**\n * package manager instance.\n */\n private packageManager: PackageManager,\n\n private aspectLoader: AspectLoaderMain,\n\n private logger: Logger,\n\n private dependencyResolver: DependencyResolverMain,\n\n private rootDir?: string | PathAbsolute,\n\n private cacheRootDir?: string | PathAbsolute,\n\n private preInstallSubscriberList?: PreInstallSubscriberList,\n\n private postInstallSubscriberList?: PostInstallSubscriberList,\n\n private nodeLinker?: 'hoisted' | 'isolated',\n\n private packageImportMethod?: PackageImportMethod,\n\n private sideEffectsCache?: boolean,\n\n private nodeVersion?: string,\n\n private engineStrict?: boolean,\n\n private peerDependencyRules?: PeerDependencyRules,\n\n private neverBuiltDependencies?: string[],\n\n private preferOffline?: boolean,\n\n private installingContext: DepInstallerContext = {}\n ) {}\n\n async install(\n rootDir: string | undefined,\n rootPolicy: WorkspacePolicy,\n componentDirectoryMap: ComponentMap<string>,\n options: InstallOptions = DEFAULT_INSTALL_OPTIONS,\n packageManagerOptions: PackageManagerInstallOptions = DEFAULT_PM_INSTALL_OPTIONS\n ) {\n const finalRootDir = rootDir ?? this.rootDir;\n if (!finalRootDir) {\n throw new RootDirNotDefined();\n }\n const manifests = await this.getComponentManifests({\n ...packageManagerOptions,\n componentDirectoryMap,\n rootPolicy,\n rootDir: finalRootDir,\n resolveVersionsFromDependenciesOnly: options.resolveVersionsFromDependenciesOnly,\n referenceLocalPackages: packageManagerOptions.rootComponentsForCapsules,\n excludeExtensionsDependencies: options.excludeExtensionsDependencies,\n });\n return this.installComponents(\n finalRootDir,\n manifests,\n rootPolicy,\n componentDirectoryMap,\n options,\n packageManagerOptions\n );\n }\n\n async installComponents(\n rootDir: string | undefined,\n manifests: Record<string, ProjectManifest>,\n rootPolicy: WorkspacePolicy,\n componentDirectoryMap: ComponentMap<string>,\n options: InstallOptions = DEFAULT_INSTALL_OPTIONS,\n packageManagerOptions: PackageManagerInstallOptions = DEFAULT_PM_INSTALL_OPTIONS\n ): Promise<{ dependenciesChanged: boolean }> {\n const args = {\n componentDirectoryMap,\n options,\n packageManagerOptions,\n rootDir,\n rootPolicy,\n };\n await this.runPrePostSubscribers(this.preInstallSubscriberList, 'pre', args);\n const mainAspect: MainAspect = this.aspectLoader.mainAspect;\n const finalRootDir = rootDir || this.rootDir;\n if (!finalRootDir) {\n throw new RootDirNotDefined();\n }\n if (options.linkedDependencies) {\n manifests = JSON.parse(JSON.stringify(manifests));\n const linkedDependencies = JSON.parse(\n JSON.stringify(options.linkedDependencies)\n ) as typeof options.linkedDependencies;\n if (linkedDependencies[finalRootDir]) {\n const directDeps = new Set<string>();\n Object.values(manifests).forEach((manifest) => {\n for (const depName of Object.keys({ ...manifest.dependencies, ...manifest.devDependencies })) {\n directDeps.add(depName);\n }\n });\n for (const manifest of Object.values(manifests)) {\n if (manifest.name && directDeps.has(manifest.name)) {\n delete linkedDependencies[finalRootDir][manifest.name];\n }\n }\n if (options.forceTeambitHarmonyLink && manifests[finalRootDir].dependencies?.['@teambit/harmony']) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n delete manifests[finalRootDir].dependencies!['@teambit/harmony'];\n }\n }\n Object.entries(linkedDependencies).forEach(([dir, linkedDeps]) => {\n if (!manifests[dir]) {\n manifests[dir] = {};\n }\n manifests[dir].dependencies = {\n ...linkedDeps,\n ...manifests[dir].dependencies,\n };\n });\n }\n const hidePackageManagerOutput = !!(this.installingContext.inCapsule && process.env.VERBOSE_PM_OUTPUT !== 'true');\n\n // Make sure to take other default if passed options with only one option\n const calculatedPmOpts = {\n ...DEFAULT_PM_INSTALL_OPTIONS,\n cacheRootDir: this.cacheRootDir,\n nodeLinker: this.nodeLinker,\n packageImportMethod: this.packageImportMethod,\n sideEffectsCache: this.sideEffectsCache,\n nodeVersion: this.nodeVersion,\n engineStrict: this.engineStrict,\n packageManagerConfigRootDir: options.packageManagerConfigRootDir,\n peerDependencyRules: this.peerDependencyRules,\n hidePackageManagerOutput,\n neverBuiltDependencies: ['core-js', ...(this.neverBuiltDependencies ?? [])],\n preferOffline: this.preferOffline,\n dedupeInjectedDeps: options.dedupeInjectedDeps,\n ...packageManagerOptions,\n };\n if (options.installTeambitBit) {\n if (!mainAspect.version || !mainAspect.packageName) {\n throw new MainAspectNotInstallable();\n }\n const version = mainAspect.version;\n rootPolicy.add({\n dependencyId: mainAspect.packageName,\n lifecycleType: 'runtime',\n value: {\n version,\n },\n });\n }\n\n if (!packageManagerOptions.rootComponents && !packageManagerOptions.keepExistingModulesDir) {\n // Remove node modules dir for all components dirs, since it might contain left overs from previous install.\n //\n // This is not needed when \"rootComponents\" are used, as in that case the package manager handles the node_modules\n // and it never leaves node_modules in a broken state.\n // Removing node_modules in that case would delete useful state information that is used by Yarn or pnpm.\n await this.cleanCompsNodeModules(componentDirectoryMap);\n }\n\n const messagePrefix = 'running package installation';\n const messageSuffix = `using ${this.packageManager.name}`;\n const message = this.installingContext?.inCapsule\n ? `(capsule) ${messagePrefix} in root dir ${this.rootDir} ${messageSuffix}`\n : `${messagePrefix} ${messageSuffix}`;\n if (!hidePackageManagerOutput) {\n this.logger.setStatusLine(message);\n }\n const startTime = process.hrtime();\n\n // TODO: the cache should be probably passed to the package manager constructor not to the install function\n const installResult = await this.packageManager.install(\n {\n rootDir: finalRootDir,\n manifests,\n componentDirectoryMap,\n },\n calculatedPmOpts\n );\n if (!hidePackageManagerOutput) {\n this.logger.consoleSuccess(`done ${message}`, startTime);\n }\n await this.runPrePostSubscribers(this.postInstallSubscriberList, 'post', args);\n return installResult;\n }\n\n public async pruneModules(rootDir: string): Promise<void> {\n if (!this.packageManager.pruneModules) {\n return;\n }\n await this.packageManager.pruneModules(rootDir);\n }\n\n /**\n * Compute all the component manifests (a.k.a. package.json files) that should be passed to the package manager\n * in order to install the dependencies.\n */\n public async getComponentManifests({\n componentDirectoryMap,\n rootPolicy,\n rootDir,\n dedupe,\n dependencyFilterFn,\n copyPeerToRuntimeOnComponents,\n copyPeerToRuntimeOnRoot,\n installPeersFromEnvs,\n resolveVersionsFromDependenciesOnly,\n referenceLocalPackages,\n hasRootComponents,\n excludeExtensionsDependencies,\n }: GetComponentManifestsOptions) {\n const options: CreateFromComponentsOptions = {\n filterComponentsFromManifests: true,\n createManifestForComponentsWithoutDependencies: true,\n dedupe,\n dependencyFilterFn,\n resolveVersionsFromDependenciesOnly,\n referenceLocalPackages,\n hasRootComponents,\n excludeExtensionsDependencies,\n };\n const workspaceManifest = await this.dependencyResolver.getWorkspaceManifest(\n undefined,\n undefined,\n rootPolicy,\n rootDir,\n componentDirectoryMap.components,\n options,\n this.installingContext\n );\n const manifests: Record<string, ProjectManifest> = componentDirectoryMap\n .toArray()\n .reduce((acc, [component, dir]) => {\n const packageName = this.dependencyResolver.getPackageName(component);\n const manifest = workspaceManifest.componentsManifestsMap.get(packageName);\n if (manifest) {\n acc[dir] = manifest.toJson({ copyPeerToRuntime: copyPeerToRuntimeOnComponents });\n }\n return acc;\n }, {});\n if (!manifests[rootDir]) {\n manifests[rootDir] = workspaceManifest.toJson({\n copyPeerToRuntime: copyPeerToRuntimeOnRoot,\n installPeersFromEnvs,\n });\n }\n return manifests;\n }\n\n private async cleanCompsNodeModules(componentDirectoryMap: ComponentMap<string>) {\n const promises = componentDirectoryMap.toArray().map(([, dir]) => {\n const nmDir = path.join(dir, 'node_modules');\n return fs.remove(nmDir);\n });\n return Promise.all(promises);\n }\n\n private async runPrePostSubscribers(\n subscribers: PreInstallSubscriberList | PostInstallSubscriberList = [],\n type: 'pre' | 'post',\n args: InstallArgs\n ): Promise<void> {\n const message = this.installingContext?.inCapsule\n ? `(capsule) running ${type} install subscribers in root dir ${this.rootDir}`\n : `running ${type} install subscribers`;\n if (!this.installingContext?.inCapsule) {\n this.logger.setStatusLine(message);\n }\n await mapSeries(subscribers, async (subscriber) => {\n return subscriber(this, args);\n });\n if (!this.installingContext?.inCapsule) {\n this.logger.consoleSuccess(message);\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_pMapSeries","data","_interopRequireDefault","require","_path","_fsExtra","_exceptions","obj","__esModule","default","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","key","value","_toPropertyKey","configurable","writable","i","_toPrimitive","String","Symbol","toPrimitive","call","TypeError","Number","DEFAULT_PM_INSTALL_OPTIONS","dedupe","copyPeerToRuntimeOnRoot","copyPeerToRuntimeOnComponents","installPeersFromEnvs","DEFAULT_INSTALL_OPTIONS","installTeambitBit","excludeExtensionsDependencies","DependencyInstaller","constructor","packageManager","aspectLoader","logger","dependencyResolver","rootDir","cacheRootDir","preInstallSubscriberList","postInstallSubscriberList","nodeLinker","packageImportMethod","sideEffectsCache","nodeVersion","engineStrict","peerDependencyRules","neverBuiltDependencies","preferOffline","installingContext","install","rootPolicy","componentDirectoryMap","options","packageManagerOptions","finalRootDir","RootDirNotDefined","manifests","getComponentManifests","resolveVersionsFromDependenciesOnly","referenceLocalPackages","rootComponentsForCapsules","installComponents","args","runPrePostSubscribers","mainAspect","linkedDependencies","JSON","parse","stringify","directDeps","Set","values","manifest","depName","dependencies","devDependencies","add","name","has","forceTeambitHarmonyLink","entries","dir","linkedDeps","hidePackageManagerOutput","inCapsule","process","env","VERBOSE_PM_OUTPUT","calculatedPmOpts","packageManagerConfigRootDir","dedupeInjectedDeps","version","packageName","MainAspectNotInstallable","dependencyId","lifecycleType","rootComponents","keepExistingModulesDir","cleanCompsNodeModules","messagePrefix","messageSuffix","message","setStatusLine","startTime","hrtime","installResult","consoleSuccess","pruneModules","dependencyFilterFn","hasRootComponents","filterComponentsFromManifests","createManifestForComponentsWithoutDependencies","workspaceManifest","getWorkspaceManifest","undefined","components","toArray","reduce","acc","component","getPackageName","componentsManifestsMap","get","toJson","copyPeerToRuntime","promises","map","nmDir","path","join","fs","remove","Promise","all","subscribers","type","mapSeries","subscriber","exports"],"sources":["dependency-installer.ts"],"sourcesContent":["import mapSeries from 'p-map-series';\nimport path from 'path';\nimport fs from 'fs-extra';\nimport { MainAspect, AspectLoaderMain } from '@teambit/aspect-loader';\nimport { ComponentMap } from '@teambit/component';\nimport { CreateFromComponentsOptions, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { Logger } from '@teambit/logger';\nimport { PathAbsolute } from '@teambit/legacy/dist/utils/path';\nimport { PeerDependencyRules, ProjectManifest } from '@pnpm/types';\nimport { MainAspectNotInstallable, RootDirNotDefined } from './exceptions';\nimport { PackageManager, PackageManagerInstallOptions, PackageImportMethod } from './package-manager';\nimport { WorkspacePolicy } from './policy';\n\nconst DEFAULT_PM_INSTALL_OPTIONS: PackageManagerInstallOptions = {\n dedupe: true,\n copyPeerToRuntimeOnRoot: true,\n copyPeerToRuntimeOnComponents: false,\n installPeersFromEnvs: false,\n};\n\nconst DEFAULT_INSTALL_OPTIONS: InstallOptions = {\n installTeambitBit: false,\n excludeExtensionsDependencies: false,\n};\n\nexport type DepInstallerContext = {\n inCapsule?: boolean;\n};\n\nexport type InstallArgs = {\n rootDir: string | undefined;\n rootPolicy: WorkspacePolicy;\n componentDirectoryMap: ComponentMap<string>;\n options: InstallOptions;\n packageManagerOptions: PackageManagerInstallOptions;\n};\n\nexport type InstallOptions = {\n installTeambitBit: boolean;\n packageManagerConfigRootDir?: string;\n resolveVersionsFromDependenciesOnly?: boolean;\n linkedDependencies?: Record<string, Record<string, string>>;\n forceTeambitHarmonyLink?: boolean;\n excludeExtensionsDependencies?: boolean;\n dedupeInjectedDeps?: boolean;\n};\n\nexport type GetComponentManifestsOptions = {\n componentDirectoryMap: ComponentMap<string>;\n rootPolicy: WorkspacePolicy;\n rootDir: string;\n resolveVersionsFromDependenciesOnly?: boolean;\n referenceLocalPackages?: boolean;\n hasRootComponents?: boolean;\n excludeExtensionsDependencies?: boolean;\n} & Pick<\n PackageManagerInstallOptions,\n 'dedupe' | 'dependencyFilterFn' | 'copyPeerToRuntimeOnComponents' | 'copyPeerToRuntimeOnRoot' | 'installPeersFromEnvs'\n>;\n\nexport type PreInstallSubscriber = (installer: DependencyInstaller, installArgs: InstallArgs) => Promise<void>;\nexport type PreInstallSubscriberList = Array<PreInstallSubscriber>;\n\nexport type PostInstallSubscriber = (installer: DependencyInstaller, installArgs: InstallArgs) => Promise<void>;\nexport type PostInstallSubscriberList = Array<PostInstallSubscriber>;\n\nexport class DependencyInstaller {\n constructor(\n /**\n * package manager instance.\n */\n private packageManager: PackageManager,\n\n private aspectLoader: AspectLoaderMain,\n\n private logger: Logger,\n\n private dependencyResolver: DependencyResolverMain,\n\n private rootDir?: string | PathAbsolute,\n\n private cacheRootDir?: string | PathAbsolute,\n\n private preInstallSubscriberList?: PreInstallSubscriberList,\n\n private postInstallSubscriberList?: PostInstallSubscriberList,\n\n private nodeLinker?: 'hoisted' | 'isolated',\n\n private packageImportMethod?: PackageImportMethod,\n\n private sideEffectsCache?: boolean,\n\n private nodeVersion?: string,\n\n private engineStrict?: boolean,\n\n private peerDependencyRules?: PeerDependencyRules,\n\n private neverBuiltDependencies?: string[],\n\n private preferOffline?: boolean,\n\n private installingContext: DepInstallerContext = {}\n ) {}\n\n async install(\n rootDir: string | undefined,\n rootPolicy: WorkspacePolicy,\n componentDirectoryMap: ComponentMap<string>,\n options: InstallOptions = DEFAULT_INSTALL_OPTIONS,\n packageManagerOptions: PackageManagerInstallOptions = DEFAULT_PM_INSTALL_OPTIONS\n ) {\n const finalRootDir = rootDir ?? this.rootDir;\n if (!finalRootDir) {\n throw new RootDirNotDefined();\n }\n const manifests = await this.getComponentManifests({\n ...packageManagerOptions,\n componentDirectoryMap,\n rootPolicy,\n rootDir: finalRootDir,\n resolveVersionsFromDependenciesOnly: options.resolveVersionsFromDependenciesOnly,\n referenceLocalPackages: packageManagerOptions.rootComponentsForCapsules,\n excludeExtensionsDependencies: options.excludeExtensionsDependencies,\n });\n return this.installComponents(\n finalRootDir,\n manifests,\n rootPolicy,\n componentDirectoryMap,\n options,\n packageManagerOptions\n );\n }\n\n async installComponents(\n rootDir: string | undefined,\n manifests: Record<string, ProjectManifest>,\n rootPolicy: WorkspacePolicy,\n componentDirectoryMap: ComponentMap<string>,\n options: InstallOptions = DEFAULT_INSTALL_OPTIONS,\n packageManagerOptions: PackageManagerInstallOptions = DEFAULT_PM_INSTALL_OPTIONS\n ): Promise<{ dependenciesChanged: boolean }> {\n const args = {\n componentDirectoryMap,\n options,\n packageManagerOptions,\n rootDir,\n rootPolicy,\n };\n await this.runPrePostSubscribers(this.preInstallSubscriberList, 'pre', args);\n const mainAspect: MainAspect = this.aspectLoader.mainAspect;\n const finalRootDir = rootDir || this.rootDir;\n if (!finalRootDir) {\n throw new RootDirNotDefined();\n }\n if (options.linkedDependencies) {\n manifests = JSON.parse(JSON.stringify(manifests));\n const linkedDependencies = JSON.parse(\n JSON.stringify(options.linkedDependencies)\n ) as typeof options.linkedDependencies;\n if (linkedDependencies[finalRootDir]) {\n const directDeps = new Set<string>();\n Object.values(manifests).forEach((manifest) => {\n for (const depName of Object.keys({ ...manifest.dependencies, ...manifest.devDependencies })) {\n directDeps.add(depName);\n }\n });\n for (const manifest of Object.values(manifests)) {\n if (manifest.name && directDeps.has(manifest.name)) {\n delete linkedDependencies[finalRootDir][manifest.name];\n }\n }\n if (options.forceTeambitHarmonyLink && manifests[finalRootDir].dependencies?.['@teambit/harmony']) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n delete manifests[finalRootDir].dependencies!['@teambit/harmony'];\n }\n }\n Object.entries(linkedDependencies).forEach(([dir, linkedDeps]) => {\n if (!manifests[dir]) {\n manifests[dir] = {};\n }\n manifests[dir].dependencies = {\n ...linkedDeps,\n ...manifests[dir].dependencies,\n };\n });\n }\n const hidePackageManagerOutput = !!(this.installingContext.inCapsule && process.env.VERBOSE_PM_OUTPUT !== 'true');\n\n // Make sure to take other default if passed options with only one option\n const calculatedPmOpts = {\n ...DEFAULT_PM_INSTALL_OPTIONS,\n cacheRootDir: this.cacheRootDir,\n nodeLinker: this.nodeLinker,\n packageImportMethod: this.packageImportMethod,\n sideEffectsCache: this.sideEffectsCache,\n nodeVersion: this.nodeVersion,\n engineStrict: this.engineStrict,\n packageManagerConfigRootDir: options.packageManagerConfigRootDir,\n peerDependencyRules: this.peerDependencyRules,\n hidePackageManagerOutput,\n neverBuiltDependencies: ['core-js', ...(this.neverBuiltDependencies ?? [])],\n preferOffline: this.preferOffline,\n dedupeInjectedDeps: options.dedupeInjectedDeps,\n ...packageManagerOptions,\n };\n if (options.installTeambitBit) {\n if (!mainAspect.version || !mainAspect.packageName) {\n throw new MainAspectNotInstallable();\n }\n const version = mainAspect.version;\n rootPolicy.add({\n dependencyId: mainAspect.packageName,\n lifecycleType: 'runtime',\n value: {\n version,\n },\n });\n }\n\n if (!packageManagerOptions.rootComponents && !packageManagerOptions.keepExistingModulesDir) {\n // Remove node modules dir for all components dirs, since it might contain left overs from previous install.\n //\n // This is not needed when \"rootComponents\" are used, as in that case the package manager handles the node_modules\n // and it never leaves node_modules in a broken state.\n // Removing node_modules in that case would delete useful state information that is used by Yarn or pnpm.\n await this.cleanCompsNodeModules(componentDirectoryMap);\n }\n\n const messagePrefix = 'running package installation';\n const messageSuffix = `using ${this.packageManager.name}`;\n const message = this.installingContext?.inCapsule\n ? `(capsule) ${messagePrefix} in root dir ${this.rootDir} ${messageSuffix}`\n : `${messagePrefix} ${messageSuffix}`;\n if (!hidePackageManagerOutput) {\n this.logger.setStatusLine(message);\n }\n const startTime = process.hrtime();\n\n // TODO: the cache should be probably passed to the package manager constructor not to the install function\n const installResult = await this.packageManager.install(\n {\n rootDir: finalRootDir,\n manifests,\n componentDirectoryMap,\n },\n calculatedPmOpts\n );\n if (!hidePackageManagerOutput) {\n this.logger.consoleSuccess(`done ${message}`, startTime);\n }\n await this.runPrePostSubscribers(this.postInstallSubscriberList, 'post', args);\n return installResult;\n }\n\n public async pruneModules(rootDir: string): Promise<void> {\n if (!this.packageManager.pruneModules) {\n return;\n }\n await this.packageManager.pruneModules(rootDir);\n }\n\n /**\n * Compute all the component manifests (a.k.a. package.json files) that should be passed to the package manager\n * in order to install the dependencies.\n */\n public async getComponentManifests({\n componentDirectoryMap,\n rootPolicy,\n rootDir,\n dedupe,\n dependencyFilterFn,\n copyPeerToRuntimeOnComponents,\n copyPeerToRuntimeOnRoot,\n installPeersFromEnvs,\n resolveVersionsFromDependenciesOnly,\n referenceLocalPackages,\n hasRootComponents,\n excludeExtensionsDependencies,\n }: GetComponentManifestsOptions) {\n const options: CreateFromComponentsOptions = {\n filterComponentsFromManifests: true,\n createManifestForComponentsWithoutDependencies: true,\n dedupe,\n dependencyFilterFn,\n resolveVersionsFromDependenciesOnly,\n referenceLocalPackages,\n hasRootComponents,\n excludeExtensionsDependencies,\n };\n const workspaceManifest = await this.dependencyResolver.getWorkspaceManifest(\n undefined,\n undefined,\n rootPolicy,\n rootDir,\n componentDirectoryMap.components,\n options,\n this.installingContext\n );\n const manifests: Record<string, ProjectManifest> = componentDirectoryMap\n .toArray()\n .reduce((acc, [component, dir]) => {\n const packageName = this.dependencyResolver.getPackageName(component);\n const manifest = workspaceManifest.componentsManifestsMap.get(packageName);\n if (manifest) {\n acc[dir] = manifest.toJson({ copyPeerToRuntime: copyPeerToRuntimeOnComponents });\n }\n return acc;\n }, {});\n if (!manifests[rootDir]) {\n manifests[rootDir] = workspaceManifest.toJson({\n copyPeerToRuntime: copyPeerToRuntimeOnRoot,\n installPeersFromEnvs,\n });\n }\n return manifests;\n }\n\n private async cleanCompsNodeModules(componentDirectoryMap: ComponentMap<string>) {\n const promises = componentDirectoryMap.toArray().map(([, dir]) => {\n const nmDir = path.join(dir, 'node_modules');\n return fs.remove(nmDir);\n });\n return Promise.all(promises);\n }\n\n private async runPrePostSubscribers(\n subscribers: PreInstallSubscriberList | PostInstallSubscriberList = [],\n type: 'pre' | 'post',\n args: InstallArgs\n ): Promise<void> {\n const message = this.installingContext?.inCapsule\n ? `(capsule) running ${type} install subscribers in root dir ${this.rootDir}`\n : `running ${type} install subscribers`;\n if (!this.installingContext?.inCapsule) {\n this.logger.setStatusLine(message);\n }\n await mapSeries(subscribers, async (subscriber) => {\n return subscriber(this, args);\n });\n if (!this.installingContext?.inCapsule) {\n this.logger.consoleSuccess(message);\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { ComponentMap, ComponentID, ComponentMain } from '@teambit/component';
|
|
2
2
|
import { Logger } from '@teambit/logger';
|
|
3
|
+
import { PathAbsolute } from '@teambit/legacy/dist/utils/path';
|
|
3
4
|
import { EnvsMain } from '@teambit/envs';
|
|
4
5
|
import { AspectLoaderMain } from '@teambit/aspect-loader';
|
|
5
6
|
import { DependencyResolverMain } from './dependency-resolver.main.runtime';
|
|
6
7
|
/**
|
|
7
8
|
* context of the linking process.
|
|
8
9
|
*/
|
|
9
|
-
export
|
|
10
|
+
export type DepLinkerContext = {
|
|
10
11
|
inCapsule?: boolean;
|
|
11
12
|
};
|
|
12
|
-
export
|
|
13
|
+
export type LinkingOptions = {
|
|
13
14
|
rewire?: boolean;
|
|
14
15
|
/**
|
|
15
16
|
* Whether to create link to @teambit/bit in the root node modules
|
|
@@ -40,28 +41,28 @@ export declare type LinkingOptions = {
|
|
|
40
41
|
*/
|
|
41
42
|
linkDepsResolvedFromEnv?: boolean;
|
|
42
43
|
};
|
|
43
|
-
export
|
|
44
|
+
export type LinkDetail = {
|
|
44
45
|
packageName: string;
|
|
45
46
|
from: string;
|
|
46
47
|
to: string;
|
|
47
48
|
};
|
|
48
|
-
export
|
|
49
|
+
export type CoreAspectLinkResult = {
|
|
49
50
|
aspectId: string;
|
|
50
51
|
linkDetail: LinkDetail;
|
|
51
52
|
};
|
|
52
|
-
export
|
|
53
|
+
export type DepsLinkedToEnvResult = {
|
|
53
54
|
componentId: string;
|
|
54
55
|
linksDetail: LinkDetail[];
|
|
55
56
|
};
|
|
56
|
-
export
|
|
57
|
+
export type NestedNMDepsLinksResult = {
|
|
57
58
|
componentId: string;
|
|
58
59
|
linksDetail: LinkDetail[];
|
|
59
60
|
};
|
|
60
|
-
export
|
|
61
|
+
export type LinkToDirResult = {
|
|
61
62
|
componentId: string;
|
|
62
63
|
linksDetail: LinkDetail;
|
|
63
64
|
};
|
|
64
|
-
export
|
|
65
|
+
export type LinkResults = {
|
|
65
66
|
teambitBitLink?: CoreAspectLinkResult;
|
|
66
67
|
coreAspectsLinks?: CoreAspectLinkResult[];
|
|
67
68
|
harmonyLink?: LinkDetail;
|
|
@@ -80,7 +81,7 @@ export declare class DependencyLinker {
|
|
|
80
81
|
private linkingOptions?;
|
|
81
82
|
private linkingContext;
|
|
82
83
|
private _currentBitDir;
|
|
83
|
-
constructor(dependencyResolver: DependencyResolverMain, aspectLoader: AspectLoaderMain, componentAspect: ComponentMain, envs: EnvsMain, logger: Logger, rootDir?: string |
|
|
84
|
+
constructor(dependencyResolver: DependencyResolverMain, aspectLoader: AspectLoaderMain, componentAspect: ComponentMain, envs: EnvsMain, logger: Logger, rootDir?: string | PathAbsolute, linkingOptions?: LinkingOptions, linkingContext?: DepLinkerContext);
|
|
84
85
|
calculateLinkedDeps(rootDir: string | undefined, componentDirectoryMap: ComponentMap<string>, options?: LinkingOptions): Promise<{
|
|
85
86
|
linkedRootDeps: Record<string, string>;
|
|
86
87
|
linkResults: LinkResults;
|
|
@@ -142,9 +142,8 @@ class DependencyLinker {
|
|
|
142
142
|
return [linkDetail.packageName, linkDetail.from];
|
|
143
143
|
}
|
|
144
144
|
async _calculateLinks(rootDir, componentDirectoryMap, options = {}) {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
if (!((_this$linkingContext2 = this.linkingContext) !== null && _this$linkingContext2 !== void 0 && _this$linkingContext2.inCapsule)) {
|
|
145
|
+
const outputMessage = this.linkingContext?.inCapsule ? `(capsule) linking components in root dir: ${rootDir || this.rootDir}` : 'linking components';
|
|
146
|
+
if (!this.linkingContext?.inCapsule) {
|
|
148
147
|
this.logger.setStatusLine(outputMessage);
|
|
149
148
|
}
|
|
150
149
|
this.logger.debug('linking components with options', (0, _lodash().omit)(options, ['consumer']));
|
|
@@ -183,7 +182,7 @@ class DependencyLinker {
|
|
|
183
182
|
return undefined;
|
|
184
183
|
});
|
|
185
184
|
result = _objectSpread(_objectSpread({}, result), await this.linkCoreAspectsAndLegacy(finalRootDir, componentIds, linkingOpts));
|
|
186
|
-
if (!
|
|
185
|
+
if (!this.linkingContext?.inCapsule) {
|
|
187
186
|
this.logger.consoleSuccess(outputMessage, startTime);
|
|
188
187
|
}
|
|
189
188
|
return result;
|
|
@@ -211,7 +210,6 @@ class DependencyLinker {
|
|
|
211
210
|
}));
|
|
212
211
|
}
|
|
213
212
|
async linkCoreAspectsAndLegacy(rootDir, componentIds = [], options = {}) {
|
|
214
|
-
var _result$teambitBitLin;
|
|
215
213
|
const result = {};
|
|
216
214
|
const componentIdsWithoutVersions = [];
|
|
217
215
|
componentIds.map(id => {
|
|
@@ -225,7 +223,7 @@ class DependencyLinker {
|
|
|
225
223
|
const bitLink = await this.linkBitAspectIfNotExist(_path().default.join(rootDir, 'node_modules'), componentIdsWithoutVersions);
|
|
226
224
|
result.teambitBitLink = bitLink;
|
|
227
225
|
}
|
|
228
|
-
let mainAspectPath =
|
|
226
|
+
let mainAspectPath = result.teambitBitLink?.linkDetail.from;
|
|
229
227
|
if (!mainAspectPath && this.aspectLoader.mainAspect) {
|
|
230
228
|
if (!this.aspectLoader.mainAspect.packageName) {
|
|
231
229
|
throw new (_exceptions().MainAspectNotLinkable)();
|
|
@@ -329,7 +327,7 @@ class DependencyLinker {
|
|
|
329
327
|
const packagesFoldersToLink = getPackagesFoldersToLink(compDirNM);
|
|
330
328
|
_fsExtra().default.ensureDirSync(innerNMofComponentInNM);
|
|
331
329
|
const oneComponentLinks = packagesFoldersToLink.map(folderEntry => {
|
|
332
|
-
const linkTarget = _path().default.join(innerNMofComponentInNM, 'node_modules', folderEntry
|
|
330
|
+
const linkTarget = _path().default.join(innerNMofComponentInNM, 'node_modules', folderEntry?.moduleName);
|
|
333
331
|
const linkSrc = folderEntry.path;
|
|
334
332
|
// This works as well, consider using it instead
|
|
335
333
|
// const linkSrc = folderEntry.origPath || folderEntry.path;
|
|
@@ -445,9 +443,8 @@ class DependencyLinker {
|
|
|
445
443
|
async linkNonExistingCoreAspects(componentIds, opts) {
|
|
446
444
|
const coreAspectsIds = this.aspectLoader.getCoreAspectIds();
|
|
447
445
|
const filtered = coreAspectsIds.filter(aspectId => {
|
|
448
|
-
var _this$aspectLoader$ma;
|
|
449
446
|
// Remove bit aspect
|
|
450
|
-
if (aspectId ===
|
|
447
|
+
if (aspectId === this.aspectLoader.mainAspect?.id) {
|
|
451
448
|
return false;
|
|
452
449
|
}
|
|
453
450
|
// TODO: use the aspect id once default scope is resolved and the component dir map has the id with scope
|
|
@@ -465,9 +462,8 @@ class DependencyLinker {
|
|
|
465
462
|
return (0, _lodash().compact)(results);
|
|
466
463
|
}
|
|
467
464
|
isBitRepoWorkspace(dir) {
|
|
468
|
-
var _this$aspectLoader$ma2;
|
|
469
465
|
// A special condition to not link core aspects in bit workspace itself
|
|
470
|
-
if (
|
|
466
|
+
if (this.aspectLoader.mainAspect?.path.startsWith(dir)) {
|
|
471
467
|
return true;
|
|
472
468
|
}
|
|
473
469
|
return false;
|