@teambit/install 0.0.0-b8b56471c39d2799b789ae9fd36aff886329af83 → 0.0.0-ba9b498641717cfd503202244d170c041a85e980
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/install.cmd.d.ts +5 -5
- package/dist/install.cmd.js +22 -6
- package/dist/install.cmd.js.map +1 -1
- package/dist/install.main.runtime.d.ts +21 -18
- package/dist/install.main.runtime.js +22 -19
- package/dist/install.main.runtime.js.map +1 -1
- package/dist/link/component-list-links.d.ts +2 -2
- package/dist/link/component-list-links.js.map +1 -1
- package/dist/link/core-aspects-links.d.ts +1 -1
- package/dist/link/core-aspects-links.js.map +1 -1
- package/dist/link/link-to-dir.d.ts +1 -1
- package/dist/link/link-to-dir.js.map +1 -1
- package/dist/link/link.cmd.d.ts +4 -4
- package/dist/link/link.cmd.js.map +1 -1
- package/dist/link/nested-deps-in-nm-links.d.ts +1 -1
- package/dist/link/nested-deps-in-nm-links.js.map +1 -1
- package/dist/link/rewire-row.d.ts +1 -1
- package/dist/link/rewire-row.js.map +1 -1
- package/dist/pick-outdated-pkgs.d.ts +1 -1
- package/dist/pick-outdated-pkgs.js.map +1 -1
- package/dist/pick-outdated-pkgs.spec.js +0 -2
- package/dist/pick-outdated-pkgs.spec.js.map +1 -1
- package/dist/uninstall.cmd.d.ts +2 -2
- package/dist/uninstall.cmd.js.map +1 -1
- package/dist/update.cmd.d.ts +2 -2
- package/dist/update.cmd.js.map +1 -1
- package/install.cmd.tsx +30 -11
- package/link/component-list-links.ts +2 -2
- package/link/core-aspects-links.ts +1 -1
- package/link/link-to-dir.ts +1 -1
- package/link/link.cmd.ts +4 -4
- package/link/nested-deps-in-nm-links.ts +1 -1
- package/link/rewire-row.ts +1 -1
- package/package.json +30 -30
- package/uninstall.cmd.tsx +2 -2
- package/update.cmd.tsx +2 -2
- /package/dist/{preview-1752165283597.js → preview-1756399330463.js} +0 -0
package/dist/install.cmd.d.ts
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
import { Command, CommandOptions } from '@teambit/cli';
|
2
|
-
import { WorkspaceDependencyLifecycleType } from '@teambit/dependency-resolver';
|
3
|
-
import { Logger } from '@teambit/logger';
|
4
|
-
import { Workspace } from '@teambit/workspace';
|
5
|
-
import { InstallMain } from './install.main.runtime';
|
1
|
+
import type { Command, CommandOptions } from '@teambit/cli';
|
2
|
+
import type { WorkspaceDependencyLifecycleType } from '@teambit/dependency-resolver';
|
3
|
+
import type { Logger } from '@teambit/logger';
|
4
|
+
import type { Workspace } from '@teambit/workspace';
|
5
|
+
import type { InstallMain } from './install.main.runtime';
|
6
6
|
type InstallCmdOptions = {
|
7
7
|
type: WorkspaceDependencyLifecycleType;
|
8
8
|
skipDedupe: boolean;
|
package/dist/install.cmd.js
CHANGED
@@ -62,12 +62,27 @@ class InstallCmd {
|
|
62
62
|
if (options.updateExisting) {
|
63
63
|
this.logger.consoleWarning(`--update-existing is deprecated, please omit it. "bit install" will update existing dependencies by default`);
|
64
64
|
}
|
65
|
-
packages.
|
65
|
+
const validPackages = await Promise.all(packages.map(async pkg => {
|
66
66
|
const pkgName = extractPackageName(pkg);
|
67
|
-
if (
|
68
|
-
|
67
|
+
if ((0, _validateNpmPackageName().default)(pkgName).validForNewPackages) {
|
68
|
+
return pkg;
|
69
69
|
}
|
70
|
-
|
70
|
+
// if this is a component-id, find the package name and use it instead.
|
71
|
+
try {
|
72
|
+
// Check if it's not a package name (doesn't start with @)
|
73
|
+
if (!pkgName.startsWith('@')) {
|
74
|
+
// Try to resolve it as a component ID
|
75
|
+
const componentId = await this.workspace.resolveComponentId(pkg);
|
76
|
+
// Get the package name for this component
|
77
|
+
const component = await this.workspace.get(componentId);
|
78
|
+
const componentPackageName = this.workspace.componentPackageName(component);
|
79
|
+
return componentPackageName;
|
80
|
+
}
|
81
|
+
} catch {
|
82
|
+
// If component resolution fails, fall through to original error
|
83
|
+
}
|
84
|
+
throw new Error(`the package name "${pkgName}" is invalid. please provide a valid package name.`);
|
85
|
+
}));
|
71
86
|
this.logger.console(`Resolving component dependencies for workspace: '${_chalk().default.cyan(this.workspace.name)}'`);
|
72
87
|
const installOpts = {
|
73
88
|
lifecycleType: options.addMissingPeers ? 'peer' : options.type,
|
@@ -83,9 +98,10 @@ class InstallCmd {
|
|
83
98
|
writeConfigFiles: !options.skipWriteConfigFiles,
|
84
99
|
updateAll: options.update,
|
85
100
|
recurringInstall: options.recurringInstall,
|
86
|
-
lockfileOnly: options.lockfileOnly
|
101
|
+
lockfileOnly: options.lockfileOnly,
|
102
|
+
showExternalPackageManagerPrompt: true
|
87
103
|
};
|
88
|
-
const components = await this.install.install(
|
104
|
+
const components = await this.install.install(validPackages, installOpts);
|
89
105
|
const endTime = Date.now();
|
90
106
|
const oldNonLoadedEnvs = this.install.getOldNonLoadedEnvs();
|
91
107
|
return formatOutput({
|
package/dist/install.cmd.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_validateNpmPackageName","data","_interopRequireDefault","require","_chalk","_workspace","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","recurringInstallFlagName","InstallCmd","constructor","install","workspace","logger","name","description","report","packages","options","startTime","Date","now","OutsideWorkspaceError","updateExisting","consoleWarning","forEach","pkg","pkgName","extractPackageName","packageNameValidate","validForNewPackages","Error","console","chalk","cyan","installOpts","lifecycleType","addMissingPeers","type","dedupe","skipDedupe","import","skipImport","savePrefix","addMissingDeps","skipUnavailable","compile","skipCompile","includeOptionalDeps","noOptional","writeConfigFiles","skipWriteConfigFiles","updateAll","update","recurringInstall","lockfileOnly","components","endTime","oldNonLoadedEnvs","getOldNonLoadedEnvs","formatOutput","numOfComps","toArray","length","toString","exports","calculateTime","diff","executionTime","summary","green","anotherInstallRequiredOutput","getAnotherInstallRequiredOutput","oldNonLoadedEnvsStr","join","firstPart","flag","suggestRecurringInstall","envsStr","docsLink","msg","yellow","packageString","allowedPrefixes","some","prefix","startsWith","atIndex","indexOf","possibleVersion","slice","includes","lastAtIndex","lastIndexOf"],"sources":["install.cmd.tsx"],"sourcesContent":["import { Command, CommandOptions } from '@teambit/cli';\nimport packageNameValidate from 'validate-npm-package-name';\nimport { WorkspaceDependencyLifecycleType } from '@teambit/dependency-resolver';\nimport { Logger } from '@teambit/logger';\nimport chalk from 'chalk';\nimport { OutsideWorkspaceError, Workspace } from '@teambit/workspace';\nimport { InstallMain, WorkspaceInstallOptions } from './install.main.runtime';\n\ntype InstallCmdOptions = {\n type: WorkspaceDependencyLifecycleType;\n skipDedupe: boolean;\n skipImport: boolean;\n skipCompile: boolean;\n skipWriteConfigFiles: boolean;\n update: boolean;\n updateExisting: boolean;\n savePrefix: string;\n addMissingDeps: boolean;\n skipUnavailable: boolean;\n addMissingPeers: boolean;\n noOptional: boolean;\n recurringInstall: boolean;\n lockfileOnly: boolean;\n};\n\ntype FormatOutputArgs = {\n numOfComps: string;\n startTime: number;\n endTime: number;\n oldNonLoadedEnvs: string[];\n recurringInstall: boolean;\n};\n\nconst recurringInstallFlagName = 'recurring-install';\n\nexport default class InstallCmd implements Command {\n name = 'install [packages...]';\n description = 'installs workspace dependencies';\n extendedDescription =\n 'when no package is specified, all workspace dependencies are installed and all workspace components are imported.';\n helpUrl = 'reference/dependencies/dependency-installation';\n arguments = [{ name: 'packages...', description: 'a list of packages to install (separated by spaces)' }];\n alias = 'in';\n group = 'dependencies';\n options = [\n ['t', 'type [lifecycleType]', '\"runtime\" (default) or \"peer\" (dev is not a valid option)'],\n ['u', 'update', 'update all dependencies to latest version according to their semver range'],\n [\n '',\n 'update-existing',\n 'DEPRECATED (not needed anymore, it is the default now). update existing dependencies version and types',\n ],\n ['', 'save-prefix [savePrefix]', 'set the prefix to use when adding dependency to workspace.jsonc'],\n ['', 'skip-dedupe', 'do not dedupe dependencies on installation'],\n ['', 'skip-import', 'do not import bit objects post installation'],\n ['', 'skip-compile', 'do not compile components'],\n ['', 'skip-write-config-files', 'do not write config files (such as eslint, tsconfig, prettier, etc...)'],\n ['a', 'add-missing-deps', 'install all missing dependencies'],\n ['', 'skip-unavailable', 'when adding missing dependencies, skip those that are not found in the regisry'],\n ['', 'add-missing-peers', 'install all missing peer dependencies'],\n [\n '',\n recurringInstallFlagName,\n 'automatically run install again if there are non loaded old envs in your workspace',\n ],\n ['', 'no-optional [noOptional]', 'do not install optional dependencies (works with pnpm only)'],\n ['', 'lockfile-only', 'dependencies are not written to node_modules. Only the lockfile is updated'],\n ] as CommandOptions;\n\n constructor(\n private install: InstallMain,\n /**\n * workspace extension.\n */\n private workspace: Workspace,\n\n /**\n * logger extension.\n */\n private logger: Logger\n ) {}\n\n async report([packages = []]: [string[]], options: InstallCmdOptions) {\n const startTime = Date.now();\n if (!this.workspace) throw new OutsideWorkspaceError();\n if (options.updateExisting) {\n this.logger.consoleWarning(\n `--update-existing is deprecated, please omit it. \"bit install\" will update existing dependencies by default`\n );\n }\n\n packages.forEach((pkg) => {\n const pkgName = extractPackageName(pkg);\n if (!packageNameValidate(pkgName).validForNewPackages) {\n throw new Error(`the package name \"${pkgName}\" is invalid. please provide a valid package name.`);\n }\n });\n this.logger.console(`Resolving component dependencies for workspace: '${chalk.cyan(this.workspace.name)}'`);\n const installOpts: WorkspaceInstallOptions = {\n lifecycleType: options.addMissingPeers ? 'peer' : options.type,\n dedupe: !options.skipDedupe,\n import: !options.skipImport,\n updateExisting: true,\n savePrefix: options.savePrefix,\n addMissingDeps: options.addMissingDeps,\n skipUnavailable: options.skipUnavailable,\n addMissingPeers: options.addMissingPeers,\n compile: !options.skipCompile,\n includeOptionalDeps: !options.noOptional,\n writeConfigFiles: !options.skipWriteConfigFiles,\n updateAll: options.update,\n recurringInstall: options.recurringInstall,\n lockfileOnly: options.lockfileOnly,\n };\n const components = await this.install.install(packages, installOpts);\n const endTime = Date.now();\n const oldNonLoadedEnvs = this.install.getOldNonLoadedEnvs();\n return formatOutput({\n startTime,\n endTime,\n numOfComps: components.toArray().length.toString(),\n recurringInstall: options[recurringInstallFlagName],\n oldNonLoadedEnvs,\n });\n }\n}\n\nfunction calculateTime(startTime: number, endTime: number) {\n const diff = endTime - startTime;\n return diff / 1000;\n}\n\nfunction formatOutput({\n numOfComps,\n endTime,\n startTime,\n recurringInstall,\n oldNonLoadedEnvs,\n}: FormatOutputArgs): string {\n const executionTime = calculateTime(startTime, endTime);\n const summary = chalk.green(\n `Successfully installed dependencies and compiled ${chalk.cyan(numOfComps)} component(s) in ${chalk.cyan(\n executionTime.toString()\n )} seconds`\n );\n const anotherInstallRequiredOutput = getAnotherInstallRequiredOutput(recurringInstall, oldNonLoadedEnvs);\n return anotherInstallRequiredOutput ? `\\n${anotherInstallRequiredOutput}\\n\\n${summary}` : `\\n${summary}`;\n}\n\nexport function getAnotherInstallRequiredOutput(recurringInstall = false, oldNonLoadedEnvs: string[] = []): string {\n if (!oldNonLoadedEnvs.length) return '';\n const oldNonLoadedEnvsStr = oldNonLoadedEnvs.join(', ');\n const firstPart = `Bit was not able to install all dependencies. Please run \"${chalk.cyan('bit install')}\" again `;\n const flag = chalk.cyan(`--${recurringInstallFlagName}`);\n const suggestRecurringInstall = recurringInstall ? '' : `(or use the \"${flag}\" option next time).`;\n const envsStr = `The following environments need to add support for \"dependency policy\" to fix the warning: ${chalk.cyan(\n oldNonLoadedEnvsStr\n )}`;\n const docsLink = `Read more about how to fix this issue in: https://bit.dev/blog/using-a-static-dependency-policy-in-a-legacy-env-lihfbt9b`;\n\n const msg = `${firstPart}${suggestRecurringInstall}\\n${envsStr}\\n${docsLink}`;\n return chalk.yellow(msg);\n}\n\nfunction extractPackageName(packageString: string): string {\n if (!packageString) return '';\n\n // Handle https and git protocols. We don't allow \"file\" protocol here. It won't work for the consumer.\n const allowedPrefixes = ['https://', 'git:', 'git+ssh://', 'git+https://'];\n if (allowedPrefixes.some((prefix) => packageString.startsWith(prefix))) {\n return packageString;\n }\n\n // If it's a scoped package\n if (packageString.startsWith('@')) {\n // Find the second '@' (first is for scope, second is for version/tag)\n const atIndex = packageString.indexOf('@', 1);\n if (atIndex === -1) return packageString;\n const possibleVersion = packageString.slice(atIndex + 1);\n // If the part after the second '@' contains a slash, it's not a version/tag\n if (possibleVersion.includes('/')) return packageString;\n return packageString.slice(0, atIndex);\n }\n\n // For unscoped packages, split at the last '@'\n const lastAtIndex = packageString.lastIndexOf('@');\n if (lastAtIndex <= 0) return packageString;\n return packageString.slice(0, lastAtIndex);\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"names":["_validateNpmPackageName","data","_interopRequireDefault","require","_chalk","_workspace","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","recurringInstallFlagName","InstallCmd","constructor","install","workspace","logger","name","description","report","packages","options","startTime","Date","now","OutsideWorkspaceError","updateExisting","consoleWarning","validPackages","Promise","all","map","pkg","pkgName","extractPackageName","packageNameValidate","validForNewPackages","startsWith","componentId","resolveComponentId","component","get","componentPackageName","Error","console","chalk","cyan","installOpts","lifecycleType","addMissingPeers","type","dedupe","skipDedupe","import","skipImport","savePrefix","addMissingDeps","skipUnavailable","compile","skipCompile","includeOptionalDeps","noOptional","writeConfigFiles","skipWriteConfigFiles","updateAll","update","recurringInstall","lockfileOnly","showExternalPackageManagerPrompt","components","endTime","oldNonLoadedEnvs","getOldNonLoadedEnvs","formatOutput","numOfComps","toArray","length","toString","exports","calculateTime","diff","executionTime","summary","green","anotherInstallRequiredOutput","getAnotherInstallRequiredOutput","oldNonLoadedEnvsStr","join","firstPart","flag","suggestRecurringInstall","envsStr","docsLink","msg","yellow","packageString","allowedPrefixes","some","prefix","atIndex","indexOf","possibleVersion","slice","includes","lastAtIndex","lastIndexOf"],"sources":["install.cmd.tsx"],"sourcesContent":["import type { Command, CommandOptions } from '@teambit/cli';\nimport packageNameValidate from 'validate-npm-package-name';\nimport type { WorkspaceDependencyLifecycleType } from '@teambit/dependency-resolver';\nimport type { Logger } from '@teambit/logger';\nimport chalk from 'chalk';\nimport type { Workspace } from '@teambit/workspace';\nimport { OutsideWorkspaceError } from '@teambit/workspace';\nimport type { InstallMain, WorkspaceInstallOptions } from './install.main.runtime';\n\ntype InstallCmdOptions = {\n type: WorkspaceDependencyLifecycleType;\n skipDedupe: boolean;\n skipImport: boolean;\n skipCompile: boolean;\n skipWriteConfigFiles: boolean;\n update: boolean;\n updateExisting: boolean;\n savePrefix: string;\n addMissingDeps: boolean;\n skipUnavailable: boolean;\n addMissingPeers: boolean;\n noOptional: boolean;\n recurringInstall: boolean;\n lockfileOnly: boolean;\n};\n\ntype FormatOutputArgs = {\n numOfComps: string;\n startTime: number;\n endTime: number;\n oldNonLoadedEnvs: string[];\n recurringInstall: boolean;\n};\n\nconst recurringInstallFlagName = 'recurring-install';\n\nexport default class InstallCmd implements Command {\n name = 'install [packages...]';\n description = 'installs workspace dependencies';\n extendedDescription =\n 'when no package is specified, all workspace dependencies are installed and all workspace components are imported.';\n helpUrl = 'reference/dependencies/dependency-installation';\n arguments = [{ name: 'packages...', description: 'a list of packages to install (separated by spaces)' }];\n alias = 'in';\n group = 'dependencies';\n options = [\n ['t', 'type [lifecycleType]', '\"runtime\" (default) or \"peer\" (dev is not a valid option)'],\n ['u', 'update', 'update all dependencies to latest version according to their semver range'],\n [\n '',\n 'update-existing',\n 'DEPRECATED (not needed anymore, it is the default now). update existing dependencies version and types',\n ],\n ['', 'save-prefix [savePrefix]', 'set the prefix to use when adding dependency to workspace.jsonc'],\n ['', 'skip-dedupe', 'do not dedupe dependencies on installation'],\n ['', 'skip-import', 'do not import bit objects post installation'],\n ['', 'skip-compile', 'do not compile components'],\n ['', 'skip-write-config-files', 'do not write config files (such as eslint, tsconfig, prettier, etc...)'],\n ['a', 'add-missing-deps', 'install all missing dependencies'],\n ['', 'skip-unavailable', 'when adding missing dependencies, skip those that are not found in the regisry'],\n ['', 'add-missing-peers', 'install all missing peer dependencies'],\n [\n '',\n recurringInstallFlagName,\n 'automatically run install again if there are non loaded old envs in your workspace',\n ],\n ['', 'no-optional [noOptional]', 'do not install optional dependencies (works with pnpm only)'],\n ['', 'lockfile-only', 'dependencies are not written to node_modules. Only the lockfile is updated'],\n ] as CommandOptions;\n\n constructor(\n private install: InstallMain,\n /**\n * workspace extension.\n */\n private workspace: Workspace,\n\n /**\n * logger extension.\n */\n private logger: Logger\n ) {}\n\n async report([packages = []]: [string[]], options: InstallCmdOptions) {\n const startTime = Date.now();\n if (!this.workspace) throw new OutsideWorkspaceError();\n if (options.updateExisting) {\n this.logger.consoleWarning(\n `--update-existing is deprecated, please omit it. \"bit install\" will update existing dependencies by default`\n );\n }\n\n const validPackages = await Promise.all(\n packages.map(async (pkg) => {\n const pkgName = extractPackageName(pkg);\n if (packageNameValidate(pkgName).validForNewPackages) {\n return pkg;\n }\n // if this is a component-id, find the package name and use it instead.\n try {\n // Check if it's not a package name (doesn't start with @)\n if (!pkgName.startsWith('@')) {\n // Try to resolve it as a component ID\n const componentId = await this.workspace.resolveComponentId(pkg);\n // Get the package name for this component\n const component = await this.workspace.get(componentId);\n const componentPackageName = this.workspace.componentPackageName(component);\n return componentPackageName;\n }\n } catch {\n // If component resolution fails, fall through to original error\n }\n throw new Error(`the package name \"${pkgName}\" is invalid. please provide a valid package name.`);\n })\n );\n this.logger.console(`Resolving component dependencies for workspace: '${chalk.cyan(this.workspace.name)}'`);\n const installOpts: WorkspaceInstallOptions = {\n lifecycleType: options.addMissingPeers ? 'peer' : options.type,\n dedupe: !options.skipDedupe,\n import: !options.skipImport,\n updateExisting: true,\n savePrefix: options.savePrefix,\n addMissingDeps: options.addMissingDeps,\n skipUnavailable: options.skipUnavailable,\n addMissingPeers: options.addMissingPeers,\n compile: !options.skipCompile,\n includeOptionalDeps: !options.noOptional,\n writeConfigFiles: !options.skipWriteConfigFiles,\n updateAll: options.update,\n recurringInstall: options.recurringInstall,\n lockfileOnly: options.lockfileOnly,\n showExternalPackageManagerPrompt: true,\n };\n const components = await this.install.install(validPackages, installOpts);\n const endTime = Date.now();\n const oldNonLoadedEnvs = this.install.getOldNonLoadedEnvs();\n return formatOutput({\n startTime,\n endTime,\n numOfComps: components.toArray().length.toString(),\n recurringInstall: options[recurringInstallFlagName],\n oldNonLoadedEnvs,\n });\n }\n}\n\nfunction calculateTime(startTime: number, endTime: number) {\n const diff = endTime - startTime;\n return diff / 1000;\n}\n\nfunction formatOutput({\n numOfComps,\n endTime,\n startTime,\n recurringInstall,\n oldNonLoadedEnvs,\n}: FormatOutputArgs): string {\n const executionTime = calculateTime(startTime, endTime);\n const summary = chalk.green(\n `Successfully installed dependencies and compiled ${chalk.cyan(numOfComps)} component(s) in ${chalk.cyan(\n executionTime.toString()\n )} seconds`\n );\n const anotherInstallRequiredOutput = getAnotherInstallRequiredOutput(recurringInstall, oldNonLoadedEnvs);\n return anotherInstallRequiredOutput ? `\\n${anotherInstallRequiredOutput}\\n\\n${summary}` : `\\n${summary}`;\n}\n\nexport function getAnotherInstallRequiredOutput(recurringInstall = false, oldNonLoadedEnvs: string[] = []): string {\n if (!oldNonLoadedEnvs.length) return '';\n const oldNonLoadedEnvsStr = oldNonLoadedEnvs.join(', ');\n const firstPart = `Bit was not able to install all dependencies. Please run \"${chalk.cyan('bit install')}\" again `;\n const flag = chalk.cyan(`--${recurringInstallFlagName}`);\n const suggestRecurringInstall = recurringInstall ? '' : `(or use the \"${flag}\" option next time).`;\n const envsStr = `The following environments need to add support for \"dependency policy\" to fix the warning: ${chalk.cyan(\n oldNonLoadedEnvsStr\n )}`;\n const docsLink = `Read more about how to fix this issue in: https://bit.dev/blog/using-a-static-dependency-policy-in-a-legacy-env-lihfbt9b`;\n\n const msg = `${firstPart}${suggestRecurringInstall}\\n${envsStr}\\n${docsLink}`;\n return chalk.yellow(msg);\n}\n\nfunction extractPackageName(packageString: string): string {\n if (!packageString) return '';\n\n // Handle https and git protocols. We don't allow \"file\" protocol here. It won't work for the consumer.\n const allowedPrefixes = ['https://', 'git:', 'git+ssh://', 'git+https://'];\n if (allowedPrefixes.some((prefix) => packageString.startsWith(prefix))) {\n return packageString;\n }\n\n // If it's a scoped package\n if (packageString.startsWith('@')) {\n // Find the second '@' (first is for scope, second is for version/tag)\n const atIndex = packageString.indexOf('@', 1);\n if (atIndex === -1) return packageString;\n const possibleVersion = packageString.slice(atIndex + 1);\n // If the part after the second '@' contains a slash, it's not a version/tag\n if (possibleVersion.includes('/')) return packageString;\n return packageString.slice(0, atIndex);\n }\n\n // For unscoped packages, split at the last '@'\n const lastAtIndex = packageString.lastIndexOf('@');\n if (lastAtIndex <= 0) return packageString;\n return packageString.slice(0, lastAtIndex);\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -1,22 +1,23 @@
|
|
1
|
-
import { CompilerMain } from '@teambit/compiler';
|
2
|
-
import { CLIMain } from '@teambit/cli';
|
3
|
-
import { Workspace } from '@teambit/workspace';
|
4
|
-
import { GenerateResult, GeneratorMain } from '@teambit/generator';
|
5
|
-
import { ApplicationMain } from '@teambit/application';
|
6
|
-
import { VariantsMain } from '@teambit/variants';
|
7
|
-
import { Component
|
8
|
-
import {
|
1
|
+
import type { CompilerMain } from '@teambit/compiler';
|
2
|
+
import type { CLIMain } from '@teambit/cli';
|
3
|
+
import type { Workspace } from '@teambit/workspace';
|
4
|
+
import type { GenerateResult, GeneratorMain } from '@teambit/generator';
|
5
|
+
import type { ApplicationMain } from '@teambit/application';
|
6
|
+
import type { VariantsMain } from '@teambit/variants';
|
7
|
+
import type { Component } from '@teambit/component';
|
8
|
+
import { ComponentMap } from '@teambit/component';
|
9
|
+
import type { Harmony, SlotRegistry } from '@teambit/harmony';
|
9
10
|
import { type DependenciesGraph } from '@teambit/objects';
|
10
|
-
import { CodemodResult, NodeModulesLinksResult } from '@teambit/workspace.modules.node-modules-linker';
|
11
|
-
import { EnvsMain } from '@teambit/envs';
|
12
|
-
import { IpcEventsMain } from '@teambit/ipc-events';
|
13
|
-
import { WorkspaceDependencyLifecycleType, DependencyResolverMain, LinkingOptions, LinkResults, WorkspacePolicy } from '@teambit/dependency-resolver';
|
14
|
-
import { WorkspaceConfigFilesMain } from '@teambit/workspace-config-files';
|
15
|
-
import { Logger, LoggerMain } from '@teambit/logger';
|
16
|
-
import { IssuesMain } from '@teambit/issues';
|
17
|
-
import { AspectLoaderMain } from '@teambit/aspect-loader';
|
18
|
-
import { BundlerMain } from '@teambit/bundler';
|
19
|
-
import { UiMain } from '@teambit/ui';
|
11
|
+
import type { CodemodResult, NodeModulesLinksResult } from '@teambit/workspace.modules.node-modules-linker';
|
12
|
+
import type { EnvsMain } from '@teambit/envs';
|
13
|
+
import type { IpcEventsMain } from '@teambit/ipc-events';
|
14
|
+
import type { WorkspaceDependencyLifecycleType, DependencyResolverMain, LinkingOptions, LinkResults, WorkspacePolicy } from '@teambit/dependency-resolver';
|
15
|
+
import type { WorkspaceConfigFilesMain } from '@teambit/workspace-config-files';
|
16
|
+
import type { Logger, LoggerMain } from '@teambit/logger';
|
17
|
+
import type { IssuesMain } from '@teambit/issues';
|
18
|
+
import type { AspectLoaderMain } from '@teambit/aspect-loader';
|
19
|
+
import type { BundlerMain } from '@teambit/bundler';
|
20
|
+
import type { UiMain } from '@teambit/ui';
|
20
21
|
export type WorkspaceLinkOptions = LinkingOptions & {
|
21
22
|
rootPolicy?: WorkspacePolicy;
|
22
23
|
linkToBitRoots?: boolean;
|
@@ -33,6 +34,7 @@ export type WorkspaceInstallOptions = {
|
|
33
34
|
lifecycleType?: WorkspaceDependencyLifecycleType;
|
34
35
|
dedupe?: boolean;
|
35
36
|
import?: boolean;
|
37
|
+
showExternalPackageManagerPrompt?: boolean;
|
36
38
|
copyPeerToRuntimeOnRoot?: boolean;
|
37
39
|
copyPeerToRuntimeOnComponents?: boolean;
|
38
40
|
updateExisting?: boolean;
|
@@ -81,6 +83,7 @@ export declare class InstallMain {
|
|
81
83
|
* @memberof Workspace
|
82
84
|
*/
|
83
85
|
install(packages?: string[], options?: WorkspaceInstallOptions): Promise<ComponentMap<string>>;
|
86
|
+
writeDependenciesToPackageJson(): Promise<void>;
|
84
87
|
registerPreLink(fn: PreLink): void;
|
85
88
|
registerPreInstall(fn: PreInstall): void;
|
86
89
|
registerPostInstall(fn: PostInstall): void;
|
@@ -315,15 +315,13 @@ class InstallMain {
|
|
315
315
|
const workspaceConfig = this.workspace.getWorkspaceConfig();
|
316
316
|
const depResolverExtConfig = workspaceConfig.extensions.findExtension('teambit.dependencies/dependency-resolver');
|
317
317
|
if (depResolverExtConfig?.config.externalPackageManager) {
|
318
|
-
|
319
|
-
// When import: false is passed, it's usually a programmatic install from component operations
|
320
|
-
const isProgrammaticInstall = options?.import === false;
|
321
|
-
if (isProgrammaticInstall) {
|
322
|
-
// For programmatic installs (import, checkout, etc.), just return early without doing anything
|
323
|
-
return new (_component().ComponentMap)(new Map());
|
324
|
-
} else {
|
318
|
+
if (options?.showExternalPackageManagerPrompt) {
|
325
319
|
// For explicit "bit install" commands, show the prompt
|
326
320
|
await this.handleExternalPackageManagerPrompt();
|
321
|
+
} else {
|
322
|
+
await this.writeDependenciesToPackageJson();
|
323
|
+
this.logger.console(_chalk().default.yellow('Installation was skipped due to external package manager configuration. Please run your package manager to install dependencies.'));
|
324
|
+
return new (_component().ComponentMap)(new Map());
|
327
325
|
}
|
328
326
|
}
|
329
327
|
|
@@ -360,6 +358,19 @@ class InstallMain {
|
|
360
358
|
await this.ipcEvents.publishIpcEvent('onPostInstall');
|
361
359
|
return res;
|
362
360
|
}
|
361
|
+
async writeDependenciesToPackageJson() {
|
362
|
+
const installer = this.dependencyResolver.getInstaller({});
|
363
|
+
const mergedRootPolicy = await this.addConfiguredAspectsToWorkspacePolicy();
|
364
|
+
await this.addConfiguredGeneratorEnvsToWorkspacePolicy(mergedRootPolicy);
|
365
|
+
const componentsAndManifests = await this._getComponentsManifests(installer, mergedRootPolicy, {
|
366
|
+
dedupe: true
|
367
|
+
});
|
368
|
+
const {
|
369
|
+
dependencies,
|
370
|
+
devDependencies
|
371
|
+
} = componentsAndManifests.manifests[this.workspace.path];
|
372
|
+
return this.workspace.writeDependenciesToPackageJson(_objectSpread(_objectSpread({}, devDependencies), dependencies));
|
373
|
+
}
|
363
374
|
registerPreLink(fn) {
|
364
375
|
this.preLinkSlot.register(fn);
|
365
376
|
}
|
@@ -972,22 +983,15 @@ class InstallMain {
|
|
972
983
|
name
|
973
984
|
}) => name !== 'workspace');
|
974
985
|
const workspaceDeps = this.dependencyResolver.getWorkspaceDepsOfBitRoots(nonRootManifests);
|
975
|
-
const
|
976
|
-
|
977
|
-
injected: true
|
978
|
-
};
|
979
|
-
return acc;
|
980
|
-
}, {});
|
981
|
-
const envManifests = await this._getEnvManifests(workspaceDeps, workspaceDepsMeta);
|
982
|
-
const appManifests = await this._getAppManifests(manifests, workspaceDeps, workspaceDepsMeta);
|
986
|
+
const envManifests = await this._getEnvManifests(workspaceDeps);
|
987
|
+
const appManifests = await this._getAppManifests(manifests, workspaceDeps);
|
983
988
|
return _objectSpread(_objectSpread({}, envManifests), appManifests);
|
984
989
|
}
|
985
|
-
async _getEnvManifests(workspaceDeps
|
990
|
+
async _getEnvManifests(workspaceDeps) {
|
986
991
|
const envs = await this._getAllUsedEnvIds();
|
987
992
|
return Object.fromEntries(await Promise.all(envs.map(async envId => {
|
988
993
|
return [await this.getRootComponentDirByRootId(this.workspace.rootComponentsPath, envId), {
|
989
994
|
dependencies: _objectSpread(_objectSpread(_objectSpread({}, await this._getEnvDependencies(envId)), workspaceDeps), await this._getEnvPackage(envId)),
|
990
|
-
dependenciesMeta: workspaceDepsMeta,
|
991
995
|
installConfig: {
|
992
996
|
hoistingLimits: 'workspaces'
|
993
997
|
}
|
@@ -1025,7 +1029,7 @@ class InstallMain {
|
|
1025
1029
|
[packageName]: finalVersion
|
1026
1030
|
};
|
1027
1031
|
}
|
1028
|
-
async _getAppManifests(manifests, workspaceDeps
|
1032
|
+
async _getAppManifests(manifests, workspaceDeps) {
|
1029
1033
|
return Object.fromEntries((0, _lodash().compact)(await Promise.all((await this.app.listAppsComponents()).map(async app => {
|
1030
1034
|
const appPkgName = this.dependencyResolver.getPackageName(app);
|
1031
1035
|
const appManifest = Object.values(manifests).find(({
|
@@ -1035,7 +1039,6 @@ class InstallMain {
|
|
1035
1039
|
const envId = await this.envs.calculateEnvId(app);
|
1036
1040
|
return [await this.getRootComponentDirByRootId(this.workspace.rootComponentsPath, app.id), _objectSpread(_objectSpread({}, (0, _lodash().omit)(appManifest, ['name', 'version'])), {}, {
|
1037
1041
|
dependencies: _objectSpread(_objectSpread(_objectSpread({}, await this._getEnvDependencies(envId)), appManifest.dependencies), workspaceDeps),
|
1038
|
-
dependenciesMeta: _objectSpread(_objectSpread({}, appManifest.dependenciesMeta), workspaceDepsMeta),
|
1039
1042
|
installConfig: {
|
1040
1043
|
hoistingLimits: 'workspaces'
|
1041
1044
|
}
|