@teambit/dependency-resolver 0.0.1055 → 0.0.1057
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dependency-installer.d.ts +2 -1
- package/dist/dependency-installer.js +17 -13
- package/dist/dependency-installer.js.map +1 -1
- package/dist/dependency-linker.d.ts +8 -3
- package/dist/dependency-linker.js +57 -70
- package/dist/dependency-linker.js.map +1 -1
- package/dist/dependency-resolver.main.runtime.d.ts +1 -0
- package/dist/dependency-resolver.main.runtime.js +1 -1
- package/dist/dependency-resolver.main.runtime.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/package-manager.d.ts +1 -0
- package/dist/package-manager.js.map +1 -1
- package/dist/{preview-1683928154685.js → preview-1684208609693.js} +2 -2
- package/package-tar/teambit-dependency-resolver-0.0.1057.tgz +0 -0
- package/package.json +11 -11
- package/package-tar/teambit-dependency-resolver-0.0.1055.tgz +0 -0
|
@@ -50,12 +50,13 @@ export declare class DependencyInstaller {
|
|
|
50
50
|
private nodeVersion?;
|
|
51
51
|
private engineStrict?;
|
|
52
52
|
private peerDependencyRules?;
|
|
53
|
+
private neverBuiltDependencies?;
|
|
53
54
|
private installingContext;
|
|
54
55
|
constructor(
|
|
55
56
|
/**
|
|
56
57
|
* package manager instance.
|
|
57
58
|
*/
|
|
58
|
-
packageManager: PackageManager, aspectLoader: AspectLoaderMain, logger: Logger, dependencyResolver: DependencyResolverMain, rootDir?: string | undefined, cacheRootDir?: string | undefined, preInstallSubscriberList?: PreInstallSubscriberList | undefined, postInstallSubscriberList?: PostInstallSubscriberList | undefined, nodeLinker?: "hoisted" | "isolated" | undefined, packageImportMethod?: PackageImportMethod | undefined, sideEffectsCache?: boolean | undefined, nodeVersion?: string | undefined, engineStrict?: boolean | undefined, peerDependencyRules?: PeerDependencyRules | undefined, installingContext?: DepInstallerContext);
|
|
59
|
+
packageManager: PackageManager, aspectLoader: AspectLoaderMain, logger: Logger, dependencyResolver: DependencyResolverMain, rootDir?: string | undefined, cacheRootDir?: string | undefined, preInstallSubscriberList?: PreInstallSubscriberList | undefined, postInstallSubscriberList?: PostInstallSubscriberList | undefined, nodeLinker?: "hoisted" | "isolated" | undefined, packageImportMethod?: PackageImportMethod | undefined, sideEffectsCache?: boolean | undefined, nodeVersion?: string | undefined, engineStrict?: boolean | undefined, peerDependencyRules?: PeerDependencyRules | undefined, neverBuiltDependencies?: string[] | undefined, installingContext?: DepInstallerContext);
|
|
59
60
|
install(rootDir: string | undefined, rootPolicy: WorkspacePolicy, componentDirectoryMap: ComponentMap<string>, options?: InstallOptions, packageManagerOptions?: PackageManagerInstallOptions): Promise<{
|
|
60
61
|
dependenciesChanged: boolean;
|
|
61
62
|
}>;
|
|
@@ -65,7 +65,7 @@ class DependencyInstaller {
|
|
|
65
65
|
/**
|
|
66
66
|
* package manager instance.
|
|
67
67
|
*/
|
|
68
|
-
packageManager, aspectLoader, logger, dependencyResolver, rootDir, cacheRootDir, preInstallSubscriberList, postInstallSubscriberList, nodeLinker, packageImportMethod, sideEffectsCache, nodeVersion, engineStrict, peerDependencyRules, installingContext = {}) {
|
|
68
|
+
packageManager, aspectLoader, logger, dependencyResolver, rootDir, cacheRootDir, preInstallSubscriberList, postInstallSubscriberList, nodeLinker, packageImportMethod, sideEffectsCache, nodeVersion, engineStrict, peerDependencyRules, neverBuiltDependencies, installingContext = {}) {
|
|
69
69
|
this.packageManager = packageManager;
|
|
70
70
|
this.aspectLoader = aspectLoader;
|
|
71
71
|
this.logger = logger;
|
|
@@ -80,6 +80,7 @@ class DependencyInstaller {
|
|
|
80
80
|
this.nodeVersion = nodeVersion;
|
|
81
81
|
this.engineStrict = engineStrict;
|
|
82
82
|
this.peerDependencyRules = peerDependencyRules;
|
|
83
|
+
this.neverBuiltDependencies = neverBuiltDependencies;
|
|
83
84
|
this.installingContext = installingContext;
|
|
84
85
|
}
|
|
85
86
|
async install(rootDir, rootPolicy, componentDirectoryMap, options = DEFAULT_INSTALL_OPTIONS, packageManagerOptions = DEFAULT_PM_INSTALL_OPTIONS) {
|
|
@@ -97,7 +98,7 @@ class DependencyInstaller {
|
|
|
97
98
|
return this.installComponents(finalRootDir, manifests, rootPolicy, componentDirectoryMap, options, packageManagerOptions);
|
|
98
99
|
}
|
|
99
100
|
async installComponents(rootDir, manifests, rootPolicy, componentDirectoryMap, options = DEFAULT_INSTALL_OPTIONS, packageManagerOptions = DEFAULT_PM_INSTALL_OPTIONS) {
|
|
100
|
-
var _this$installingConte;
|
|
101
|
+
var _this$neverBuiltDepen, _this$installingConte;
|
|
101
102
|
const args = {
|
|
102
103
|
componentDirectoryMap,
|
|
103
104
|
options,
|
|
@@ -112,24 +113,26 @@ class DependencyInstaller {
|
|
|
112
113
|
throw new (_exceptions().RootDirNotDefined)();
|
|
113
114
|
}
|
|
114
115
|
if (options.linkedDependencies) {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
116
|
+
manifests = JSON.parse(JSON.stringify(manifests));
|
|
117
|
+
const linkedDependencies = JSON.parse(JSON.stringify(options.linkedDependencies));
|
|
118
|
+
if (linkedDependencies[finalRootDir]) {
|
|
119
|
+
const directDeps = new Set();
|
|
120
|
+
Object.values(manifests).forEach(manifest => {
|
|
121
|
+
for (const depName of Object.keys(_objectSpread(_objectSpread({}, manifest.dependencies), manifest.devDependencies))) {
|
|
122
|
+
directDeps.add(depName);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
122
125
|
for (const manifest of Object.values(manifests)) {
|
|
123
126
|
if (manifest.name && directDeps.has(manifest.name)) {
|
|
124
|
-
delete
|
|
127
|
+
delete linkedDependencies[finalRootDir][manifest.name];
|
|
125
128
|
}
|
|
126
129
|
}
|
|
127
130
|
}
|
|
128
|
-
Object.entries(
|
|
131
|
+
Object.entries(linkedDependencies).forEach(([dir, linkedDeps]) => {
|
|
129
132
|
if (!manifests[dir]) {
|
|
130
133
|
manifests[dir] = {};
|
|
131
134
|
}
|
|
132
|
-
manifests[dir].dependencies =
|
|
135
|
+
manifests[dir].dependencies = _objectSpread(_objectSpread({}, linkedDeps), manifests[dir].dependencies);
|
|
133
136
|
});
|
|
134
137
|
}
|
|
135
138
|
const hidePackageManagerOutput = !!(this.installingContext.inCapsule && process.env.VERBOSE_PM_OUTPUT !== 'true');
|
|
@@ -144,7 +147,8 @@ class DependencyInstaller {
|
|
|
144
147
|
engineStrict: this.engineStrict,
|
|
145
148
|
packageManagerConfigRootDir: options.packageManagerConfigRootDir,
|
|
146
149
|
peerDependencyRules: this.peerDependencyRules,
|
|
147
|
-
hidePackageManagerOutput
|
|
150
|
+
hidePackageManagerOutput,
|
|
151
|
+
neverBuiltDependencies: ['core-js', ...((_this$neverBuiltDepen = this.neverBuiltDependencies) !== null && _this$neverBuiltDepen !== void 0 ? _this$neverBuiltDepen : [])]
|
|
148
152
|
}, packageManagerOptions);
|
|
149
153
|
if (options.installTeambitBit) {
|
|
150
154
|
if (!mainAspect.version || !mainAspect.packageName) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DEFAULT_PM_INSTALL_OPTIONS","dedupe","copyPeerToRuntimeOnRoot","copyPeerToRuntimeOnComponents","installPeersFromEnvs","DEFAULT_INSTALL_OPTIONS","installTeambitBit","DependencyInstaller","constructor","packageManager","aspectLoader","logger","dependencyResolver","rootDir","cacheRootDir","preInstallSubscriberList","postInstallSubscriberList","nodeLinker","packageImportMethod","sideEffectsCache","nodeVersion","engineStrict","peerDependencyRules","installingContext","install","rootPolicy","componentDirectoryMap","options","packageManagerOptions","finalRootDir","RootDirNotDefined","manifests","getComponentManifests","resolveVersionsFromDependenciesOnly","referenceLocalPackages","rootComponentsForCapsules","installComponents","args","runPrePostSubscribers","mainAspect","linkedDependencies","directDeps","Set","Object","values","forEach","manifest","depName","keys","dependencies","devDependencies","add","name","has","entries","dir","linkedDeps","assign","hidePackageManagerOutput","inCapsule","process","env","VERBOSE_PM_OUTPUT","calculatedPmOpts","packageManagerConfigRootDir","version","packageName","MainAspectNotInstallable","dependencyId","lifecycleType","value","rootComponents","keepExistingModulesDir","cleanCompsNodeModules","messagePrefix","messageSuffix","message","setStatusLine","startTime","hrtime","installResult","consoleSuccess","pruneModules","dependencyFilterFn","filterComponentsFromManifests","createManifestForComponentsWithoutDependencies","workspaceManifest","getWorkspaceManifest","undefined","components","toArray","reduce","acc","component","getPackageName","componentsManifestsMap","get","toJson","copyPeerToRuntime","defaultPeerDependencies","fromPairs","envPolicy","selfPolicy","toNameVersionTuple","promises","map","nmDir","path","join","fs","remove","Promise","all","subscribers","type","mapSeries","subscriber"],"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 { fromPairs } from 'lodash';\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};\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};\n\nexport type GetComponentManifestsOptions = {\n componentDirectoryMap: ComponentMap<string>;\n rootPolicy: WorkspacePolicy;\n rootDir: string;\n resolveVersionsFromDependenciesOnly?: boolean;\n referenceLocalPackages?: 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 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 });\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 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 if (options.linkedDependencies[finalRootDir]) {\n for (const manifest of Object.values(manifests)) {\n if (manifest.name && directDeps.has(manifest.name)) {\n delete options.linkedDependencies[finalRootDir][manifest.name];\n }\n }\n }\n Object.entries(options.linkedDependencies).forEach(([dir, linkedDeps]) => {\n if (!manifests[dir]) {\n manifests[dir] = {};\n }\n manifests[dir].dependencies = Object.assign({}, manifests[dir].dependencies, linkedDeps);\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 ...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 }: GetComponentManifestsOptions) {\n const options: CreateFromComponentsOptions = {\n filterComponentsFromManifests: true,\n createManifestForComponentsWithoutDependencies: true,\n dedupe,\n dependencyFilterFn,\n resolveVersionsFromDependenciesOnly,\n referenceLocalPackages,\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 acc[dir].defaultPeerDependencies = fromPairs(manifest.envPolicy.selfPolicy.toNameVersionTuple());\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":["DEFAULT_PM_INSTALL_OPTIONS","dedupe","copyPeerToRuntimeOnRoot","copyPeerToRuntimeOnComponents","installPeersFromEnvs","DEFAULT_INSTALL_OPTIONS","installTeambitBit","DependencyInstaller","constructor","packageManager","aspectLoader","logger","dependencyResolver","rootDir","cacheRootDir","preInstallSubscriberList","postInstallSubscriberList","nodeLinker","packageImportMethod","sideEffectsCache","nodeVersion","engineStrict","peerDependencyRules","neverBuiltDependencies","installingContext","install","rootPolicy","componentDirectoryMap","options","packageManagerOptions","finalRootDir","RootDirNotDefined","manifests","getComponentManifests","resolveVersionsFromDependenciesOnly","referenceLocalPackages","rootComponentsForCapsules","installComponents","args","runPrePostSubscribers","mainAspect","linkedDependencies","JSON","parse","stringify","directDeps","Set","Object","values","forEach","manifest","depName","keys","dependencies","devDependencies","add","name","has","entries","dir","linkedDeps","hidePackageManagerOutput","inCapsule","process","env","VERBOSE_PM_OUTPUT","calculatedPmOpts","packageManagerConfigRootDir","version","packageName","MainAspectNotInstallable","dependencyId","lifecycleType","value","rootComponents","keepExistingModulesDir","cleanCompsNodeModules","messagePrefix","messageSuffix","message","setStatusLine","startTime","hrtime","installResult","consoleSuccess","pruneModules","dependencyFilterFn","filterComponentsFromManifests","createManifestForComponentsWithoutDependencies","workspaceManifest","getWorkspaceManifest","undefined","components","toArray","reduce","acc","component","getPackageName","componentsManifestsMap","get","toJson","copyPeerToRuntime","defaultPeerDependencies","fromPairs","envPolicy","selfPolicy","toNameVersionTuple","promises","map","nmDir","path","join","fs","remove","Promise","all","subscribers","type","mapSeries","subscriber"],"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 { fromPairs } from 'lodash';\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};\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};\n\nexport type GetComponentManifestsOptions = {\n componentDirectoryMap: ComponentMap<string>;\n rootPolicy: WorkspacePolicy;\n rootDir: string;\n resolveVersionsFromDependenciesOnly?: boolean;\n referenceLocalPackages?: 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 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 });\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 }\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 ...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 }: GetComponentManifestsOptions) {\n const options: CreateFromComponentsOptions = {\n filterComponentsFromManifests: true,\n createManifestForComponentsWithoutDependencies: true,\n dedupe,\n dependencyFilterFn,\n resolveVersionsFromDependenciesOnly,\n referenceLocalPackages,\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 acc[dir].defaultPeerDependencies = fromPairs(manifest.envPolicy.selfPolicy.toNameVersionTuple());\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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"}
|
|
@@ -2,7 +2,6 @@ import { ComponentMap, ComponentID, ComponentMain } from '@teambit/component';
|
|
|
2
2
|
import { Logger } from '@teambit/logger';
|
|
3
3
|
import { EnvsMain } from '@teambit/envs';
|
|
4
4
|
import { AspectLoaderMain } from '@teambit/aspect-loader';
|
|
5
|
-
import { WorkspacePolicy } from './policy';
|
|
6
5
|
import { DependencyResolverMain } from './dependency-resolver.main.runtime';
|
|
7
6
|
/**
|
|
8
7
|
* context of the linking process.
|
|
@@ -75,8 +74,14 @@ export declare class DependencyLinker {
|
|
|
75
74
|
private linkingOptions?;
|
|
76
75
|
private linkingContext;
|
|
77
76
|
constructor(dependencyResolver: DependencyResolverMain, aspectLoader: AspectLoaderMain, componentAspect: ComponentMain, envs: EnvsMain, logger: Logger, rootDir?: string | undefined, linkingOptions?: LinkingOptions | undefined, linkingContext?: DepLinkerContext);
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
createLinks(rootDir: string, linkedDeps: Record<string, string>): Promise<void>;
|
|
78
|
+
calculateLinkedDeps(rootDir: string | undefined, componentDirectoryMap: ComponentMap<string>, options?: LinkingOptions): Promise<{
|
|
79
|
+
linkedRootDeps: Record<string, string>;
|
|
80
|
+
linkResults: LinkResults;
|
|
81
|
+
}>;
|
|
82
|
+
private linkDetailToLocalDepEntry;
|
|
83
|
+
private _calculateLinks;
|
|
84
|
+
linkCoreAspectsAndLegacy(rootDir: string, componentIds?: ComponentID[], options?: Pick<LinkingOptions, 'linkTeambitBit' | 'linkCoreAspects'>): Promise<LinkResults>;
|
|
80
85
|
private linkToDir;
|
|
81
86
|
/**
|
|
82
87
|
* Add symlinks from the node_modules in the component's root-dir to the workspace node_modules
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
require("core-js/modules/es.array.iterator.js");
|
|
5
|
+
require("core-js/modules/es.object.from-entries.js");
|
|
5
6
|
require("core-js/modules/es.promise.js");
|
|
6
7
|
require("core-js/modules/es.regexp.exec.js");
|
|
7
8
|
Object.defineProperty(exports, "__esModule", {
|
|
@@ -71,13 +72,6 @@ function _componentIdToPackageName() {
|
|
|
71
72
|
};
|
|
72
73
|
return data;
|
|
73
74
|
}
|
|
74
|
-
function _symlink() {
|
|
75
|
-
const data = _interopRequireDefault(require("@teambit/legacy/dist/links/symlink"));
|
|
76
|
-
_symlink = function () {
|
|
77
|
-
return data;
|
|
78
|
-
};
|
|
79
|
-
return data;
|
|
80
|
-
}
|
|
81
75
|
function _aspectLoader() {
|
|
82
76
|
const data = require("@teambit/aspect-loader");
|
|
83
77
|
_aspectLoader = function () {
|
|
@@ -92,13 +86,6 @@ function _exceptions() {
|
|
|
92
86
|
};
|
|
93
87
|
return data;
|
|
94
88
|
}
|
|
95
|
-
function _policy() {
|
|
96
|
-
const data = require("./policy");
|
|
97
|
-
_policy = function () {
|
|
98
|
-
return data;
|
|
99
|
-
};
|
|
100
|
-
return data;
|
|
101
|
-
}
|
|
102
89
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
103
90
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2().default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
104
91
|
const DEFAULT_LINKING_OPTIONS = {
|
|
@@ -119,7 +106,48 @@ class DependencyLinker {
|
|
|
119
106
|
this.linkingOptions = linkingOptions;
|
|
120
107
|
this.linkingContext = linkingContext;
|
|
121
108
|
}
|
|
122
|
-
async
|
|
109
|
+
async createLinks(rootDir, linkedDeps) {
|
|
110
|
+
const modulesDir = _path().default.join(rootDir, 'node_modules');
|
|
111
|
+
await Promise.all(Object.entries(linkedDeps).map(([packageName, linkPath]) => (0, _utils().createSymlinkOrCopy)(linkPath.substring(5), _path().default.join(modulesDir, packageName))));
|
|
112
|
+
}
|
|
113
|
+
async calculateLinkedDeps(rootDir, componentDirectoryMap, options = {}) {
|
|
114
|
+
const linkResults = await this._calculateLinks(rootDir, componentDirectoryMap, options);
|
|
115
|
+
const localLinks = [];
|
|
116
|
+
if (linkResults.teambitBitLink) {
|
|
117
|
+
localLinks.push(this.linkDetailToLocalDepEntry(linkResults.teambitBitLink.linkDetail));
|
|
118
|
+
}
|
|
119
|
+
if (linkResults.coreAspectsLinks) {
|
|
120
|
+
linkResults.coreAspectsLinks.forEach(link => {
|
|
121
|
+
localLinks.push(this.linkDetailToLocalDepEntry(link.linkDetail));
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
if (linkResults.harmonyLink) {
|
|
125
|
+
localLinks.push(this.linkDetailToLocalDepEntry(linkResults.harmonyLink));
|
|
126
|
+
}
|
|
127
|
+
if (linkResults.teambitLegacyLink) {
|
|
128
|
+
localLinks.push(this.linkDetailToLocalDepEntry(linkResults.teambitLegacyLink));
|
|
129
|
+
}
|
|
130
|
+
if (linkResults.resolvedFromEnvLinks) {
|
|
131
|
+
linkResults.resolvedFromEnvLinks.forEach(link => {
|
|
132
|
+
link.linksDetail.forEach(linkDetail => {
|
|
133
|
+
localLinks.push(this.linkDetailToLocalDepEntry(linkDetail));
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
if (linkResults.linkToDirResults) {
|
|
138
|
+
linkResults.linkToDirResults.forEach(link => {
|
|
139
|
+
localLinks.push(this.linkDetailToLocalDepEntry(link.linksDetail));
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
linkedRootDeps: Object.fromEntries(localLinks.map(([key, value]) => [key, `link:${value}`])),
|
|
144
|
+
linkResults
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
linkDetailToLocalDepEntry(linkDetail) {
|
|
148
|
+
return [linkDetail.packageName, linkDetail.from];
|
|
149
|
+
}
|
|
150
|
+
async _calculateLinks(rootDir, componentDirectoryMap, options = {}) {
|
|
123
151
|
var _this$linkingContext, _this$linkingContext2, _this$linkingContext3;
|
|
124
152
|
const outputMessage = (_this$linkingContext = this.linkingContext) !== null && _this$linkingContext !== void 0 && _this$linkingContext.inCapsule ? `(capsule) linking components in root dir: ${rootDir || this.rootDir}` : 'linking components';
|
|
125
153
|
if (!((_this$linkingContext2 = this.linkingContext) !== null && _this$linkingContext2 !== void 0 && _this$linkingContext2.inCapsule)) {
|
|
@@ -154,13 +182,13 @@ class DependencyLinker {
|
|
|
154
182
|
componentIds.push(comp.id);
|
|
155
183
|
return undefined;
|
|
156
184
|
});
|
|
157
|
-
result = _objectSpread(_objectSpread({}, result), await this.linkCoreAspectsAndLegacy(
|
|
185
|
+
result = _objectSpread(_objectSpread({}, result), await this.linkCoreAspectsAndLegacy(finalRootDir, componentIds, linkingOpts));
|
|
158
186
|
if (!((_this$linkingContext3 = this.linkingContext) !== null && _this$linkingContext3 !== void 0 && _this$linkingContext3.inCapsule)) {
|
|
159
187
|
this.logger.consoleSuccess(outputMessage, startTime);
|
|
160
188
|
}
|
|
161
189
|
return result;
|
|
162
190
|
}
|
|
163
|
-
async linkCoreAspectsAndLegacy(rootDir, componentIds = [],
|
|
191
|
+
async linkCoreAspectsAndLegacy(rootDir, componentIds = [], options = {}) {
|
|
164
192
|
const result = {};
|
|
165
193
|
const componentIdsWithoutVersions = [];
|
|
166
194
|
componentIds.map(id => {
|
|
@@ -169,23 +197,19 @@ class DependencyLinker {
|
|
|
169
197
|
}));
|
|
170
198
|
return undefined;
|
|
171
199
|
});
|
|
172
|
-
const finalRootDir = rootDir || this.rootDir;
|
|
173
|
-
if (!finalRootDir) {
|
|
174
|
-
throw new (_exceptions().RootDirNotDefined)();
|
|
175
|
-
}
|
|
176
200
|
const linkingOpts = Object.assign({}, DEFAULT_LINKING_OPTIONS, this.linkingOptions || {}, options || {});
|
|
177
|
-
if (linkingOpts.linkTeambitBit && !this.isBitRepoWorkspace(
|
|
178
|
-
const bitLink = await this.linkBitAspectIfNotExist(_path().default.join(
|
|
201
|
+
if (linkingOpts.linkTeambitBit && !this.isBitRepoWorkspace(rootDir)) {
|
|
202
|
+
const bitLink = await this.linkBitAspectIfNotExist(_path().default.join(rootDir, 'node_modules'), componentIdsWithoutVersions);
|
|
179
203
|
result.teambitBitLink = bitLink;
|
|
180
204
|
}
|
|
181
|
-
if (linkingOpts.linkCoreAspects && !this.isBitRepoWorkspace(
|
|
205
|
+
if (linkingOpts.linkCoreAspects && !this.isBitRepoWorkspace(rootDir)) {
|
|
182
206
|
const hasLocalInstallation = !linkingOpts.linkTeambitBit;
|
|
183
|
-
const coreAspectsLinks = await this.linkNonExistingCoreAspects(_path().default.join(
|
|
207
|
+
const coreAspectsLinks = await this.linkNonExistingCoreAspects(_path().default.join(rootDir, 'node_modules'), componentIdsWithoutVersions, hasLocalInstallation);
|
|
184
208
|
result.coreAspectsLinks = coreAspectsLinks;
|
|
185
209
|
}
|
|
186
|
-
const teambitLegacyLink = this.linkTeambitLegacy(
|
|
210
|
+
const teambitLegacyLink = this.linkTeambitLegacy(rootDir);
|
|
187
211
|
result.teambitLegacyLink = teambitLegacyLink;
|
|
188
|
-
const harmonyLink = this.linkHarmony(
|
|
212
|
+
const harmonyLink = this.linkHarmony(rootDir);
|
|
189
213
|
result.harmonyLink = harmonyLink;
|
|
190
214
|
return result;
|
|
191
215
|
}
|
|
@@ -284,11 +308,7 @@ class DependencyLinker {
|
|
|
284
308
|
from: `${linkSrc} ${origPath}`,
|
|
285
309
|
to: linkTarget
|
|
286
310
|
};
|
|
287
|
-
const linkTargetParent = _path().default.resolve(linkTarget, '..');
|
|
288
|
-
const relativeSrc = _path().default.relative(linkTargetParent, linkSrc);
|
|
289
|
-
const symlink = new (_symlink().default)(relativeSrc, linkTarget, component.id._legacy, false);
|
|
290
311
|
this.logger.info(`linking nested dependency ${folderEntry.moduleName} for component ${component}. link src: ${linkSrc} link target: ${linkTarget}`);
|
|
291
|
-
symlink.write();
|
|
292
312
|
return linkDetail;
|
|
293
313
|
});
|
|
294
314
|
const filteredLinks = (0, _lodash().compact)(oneComponentLinks);
|
|
@@ -347,9 +367,7 @@ class DependencyLinker {
|
|
|
347
367
|
from: linkSrc,
|
|
348
368
|
to: linkTarget
|
|
349
369
|
};
|
|
350
|
-
_fsExtra().default.removeSync(linkTarget);
|
|
351
370
|
this.logger.info(`linking dependency ${depEntry.dependencyId} from env directory ${envDir}. link src: ${linkSrc} link target: ${linkTarget}`);
|
|
352
|
-
(0, _utils().createSymlinkOrCopy)(linkSrc, linkTarget);
|
|
353
371
|
return linkDetail;
|
|
354
372
|
});
|
|
355
373
|
const oneComponentLinks = await Promise.all(oneComponentLinksP);
|
|
@@ -387,7 +405,6 @@ class DependencyLinker {
|
|
|
387
405
|
if (!shouldSymlink) return undefined;
|
|
388
406
|
const src = this.aspectLoader.mainAspect.path;
|
|
389
407
|
await _fsExtra().default.ensureDir(_path().default.dirname(target));
|
|
390
|
-
(0, _utils().createSymlinkOrCopy)(src, target);
|
|
391
408
|
return {
|
|
392
409
|
packageName: this.aspectLoader.mainAspect.packageName,
|
|
393
410
|
from: src,
|
|
@@ -440,7 +457,6 @@ class DependencyLinker {
|
|
|
440
457
|
if (!isAspectDirExist) {
|
|
441
458
|
this.logger.debug(`linkCoreAspect: aspectDir ${aspectDir} does not exist, linking it to ${target}`);
|
|
442
459
|
aspectDir = (0, _aspectLoader().getAspectDir)(id);
|
|
443
|
-
(0, _utils().createSymlinkOrCopy)(aspectDir, target);
|
|
444
460
|
return {
|
|
445
461
|
aspectId: id,
|
|
446
462
|
linkDetail: {
|
|
@@ -461,7 +477,6 @@ class DependencyLinker {
|
|
|
461
477
|
return undefined;
|
|
462
478
|
}
|
|
463
479
|
this.logger.debug(`linkCoreAspect: linking aspectPath ${aspectPath} to ${target}`);
|
|
464
|
-
(0, _utils().createSymlinkOrCopy)(aspectPath, target);
|
|
465
480
|
return {
|
|
466
481
|
aspectId: id,
|
|
467
482
|
linkDetail: {
|
|
@@ -493,38 +508,22 @@ class DependencyLinker {
|
|
|
493
508
|
this.logger.debug(`removing link target, target ${targetPath} already exist. skipping it`);
|
|
494
509
|
return false;
|
|
495
510
|
}
|
|
496
|
-
// it's a symlink, remove is as it might point to an older version
|
|
497
|
-
_fsExtra().default.removeSync(targetPath);
|
|
498
511
|
return true;
|
|
499
512
|
}
|
|
500
513
|
return true;
|
|
501
514
|
}
|
|
502
|
-
linkNonAspectCorePackages(rootDir, name
|
|
515
|
+
linkNonAspectCorePackages(rootDir, name) {
|
|
503
516
|
if (!this.aspectLoader.mainAspect) return undefined;
|
|
504
517
|
if (!this.aspectLoader.mainAspect.packageName) {
|
|
505
518
|
throw new (_exceptions().MainAspectNotLinkable)();
|
|
506
519
|
}
|
|
507
520
|
const mainAspectPath = _path().default.join(rootDir, this.aspectLoader.mainAspect.packageName);
|
|
508
521
|
const distDir = _path().default.join(mainAspectPath, 'dist', name);
|
|
522
|
+
const packageName = `@teambit/${name}`;
|
|
509
523
|
const target = _path().default.join(rootDir, 'node_modules', packageName);
|
|
510
|
-
const isTargetExisting = _fsExtra().default.pathExistsSync(target);
|
|
511
|
-
if (skipExisting && isTargetExisting) {
|
|
512
|
-
return undefined;
|
|
513
|
-
}
|
|
514
|
-
let shouldSymlink;
|
|
515
|
-
// In case it's not part of the workspace policy we want to remove it anyway, as we want it to be linked to
|
|
516
|
-
// bit version
|
|
517
|
-
if (isTargetExisting && !existsInRootPolicy) {
|
|
518
|
-
_fsExtra().default.removeSync(target);
|
|
519
|
-
shouldSymlink = true;
|
|
520
|
-
} else {
|
|
521
|
-
shouldSymlink = this.removeSymlinkTarget(target);
|
|
522
|
-
}
|
|
523
|
-
if (!shouldSymlink) return undefined;
|
|
524
524
|
const isDistDirExist = _fsExtra().default.pathExistsSync(distDir);
|
|
525
525
|
if (!isDistDirExist) {
|
|
526
526
|
const newDir = getDistDirForDevEnv(packageName);
|
|
527
|
-
(0, _utils().createSymlinkOrCopy)(newDir, target);
|
|
528
527
|
return {
|
|
529
528
|
packageName,
|
|
530
529
|
from: newDir,
|
|
@@ -535,12 +534,6 @@ class DependencyLinker {
|
|
|
535
534
|
// eslint-disable-next-line global-require, import/no-dynamic-require
|
|
536
535
|
const module = require(distDir);
|
|
537
536
|
const resolvedPath = _path().default.resolve(_path().default.join(module.path, '..', '..'));
|
|
538
|
-
// in this case we want the symlinks to be relative links
|
|
539
|
-
// Using the fs module to make sure it is relative to the target
|
|
540
|
-
if (_fsExtra().default.existsSync(target)) {
|
|
541
|
-
return undefined;
|
|
542
|
-
}
|
|
543
|
-
(0, _utils().createSymlinkOrCopy)(resolvedPath, target);
|
|
544
537
|
return {
|
|
545
538
|
packageName,
|
|
546
539
|
from: resolvedPath,
|
|
@@ -550,17 +543,11 @@ class DependencyLinker {
|
|
|
550
543
|
throw new (_exceptions().NonAspectCorePackageLinkError)(err, packageName);
|
|
551
544
|
}
|
|
552
545
|
}
|
|
553
|
-
linkHarmony(rootDir
|
|
554
|
-
|
|
555
|
-
const packageName = `@teambit/${name}`;
|
|
556
|
-
const existsInRootPolicy = Boolean(rootPolicy === null || rootPolicy === void 0 ? void 0 : rootPolicy.find(packageName));
|
|
557
|
-
return this.linkNonAspectCorePackages(rootDir, name, packageName, undefined, existsInRootPolicy);
|
|
546
|
+
linkHarmony(rootDir) {
|
|
547
|
+
return this.linkNonAspectCorePackages(rootDir, 'harmony');
|
|
558
548
|
}
|
|
559
|
-
linkTeambitLegacy(rootDir
|
|
560
|
-
|
|
561
|
-
const packageName = `@teambit/${name}`;
|
|
562
|
-
const existsInRootPolicy = rootPolicy ? !!rootPolicy.find(packageName) : false;
|
|
563
|
-
return this.linkNonAspectCorePackages(rootDir, name, packageName, undefined, existsInRootPolicy);
|
|
549
|
+
linkTeambitLegacy(rootDir) {
|
|
550
|
+
return this.linkNonAspectCorePackages(rootDir, 'legacy');
|
|
564
551
|
}
|
|
565
552
|
}
|
|
566
553
|
|