Skip to main content

Hooks

Index

Properties

optionalafterAllInstalled

afterAllInstalled?: (project: Project, options: InstallOptions) => void

Type declaration

    • (project: Project, options: InstallOptions): void
    • Called after the install method from the Project class successfully completed.


      Parameters

      • project: Project
      • options: InstallOptions

      Returns void

optionalcleanGlobalArtifacts

cleanGlobalArtifacts?: (configuration: Configuration) => Promise<void>

Type declaration

    • Called when the user requests to clean the global cache. Plugins should use this hook to remove their own global artifacts.


      Parameters

      Returns Promise<void>

optionalglobalHashGeneration

globalHashGeneration?: (project: Project, contributeHash: (data: string | Buffer) => void) => Promise<void>

Type declaration

    • (project: Project, contributeHash: (data: string | Buffer) => void): Promise<void>
    • Called before the build, to compute a global hash key that we will use to detect whether packages must be rebuilt (typically when the Node version changes).


      Parameters

      • project: Project
      • contributeHash: (data: string | Buffer) => void

      Returns Promise<void>

optionalpopulateYarnPaths

populateYarnPaths?: (project: Project, definePath: (path: null | PortablePath) => void) => Promise<void>

Type declaration

    • Used to notify the core of all the potential artifacts of the available linkers.


      Parameters

      Returns Promise<void>

optionalreduceDependency

reduceDependency?: (dependency: Descriptor, project: Project, locator: Locator, initialDependency: Descriptor, extra: { resolveOptions: ResolveOptions; resolver: Resolver }) => Promise<Descriptor>

Type declaration

    • Called during the resolution, once for each resolved package and each of their dependencies. By returning a new dependency descriptor you can replace the original one by a different range.

      Note that when multiple plugins are registered on reduceDependency they will be executed in definition order. In that case, dependency will always refer to the dependency as it currently is, whereas initialDependency will be the descriptor before any plugin attempted to change it.


      Parameters

      Returns Promise<Descriptor>

optionalregisterPackageExtensions

registerPackageExtensions?: (configuration: Configuration, registerPackageExtension: (descriptor: Descriptor, extensionData: { dependencies?: { [x: string]: string; }; peerDependencies?: { [x: string]: string; }; peerDependenciesMeta?: { [x: string]: { optional?: boolean | undefined; }; } }) => void) => Promise<void>

Type declaration

    • (configuration: Configuration, registerPackageExtension: (descriptor: Descriptor, extensionData: { dependencies?: { [x: string]: string; }; peerDependencies?: { [x: string]: string; }; peerDependenciesMeta?: { [x: string]: { optional?: boolean | undefined; }; } }) => void): Promise<void>
    • Called when the package extensions are setup. Can be used to inject new ones. That’s for example what the compat plugin uses to automatically fix packages with known flaws.


      Parameters

      • configuration: Configuration
      • registerPackageExtension: (descriptor: Descriptor, extensionData: { dependencies?: { [x: string]: string; }; peerDependencies?: { [x: string]: string; }; peerDependenciesMeta?: { [x: string]: { optional?: boolean | undefined; }; } }) => void

      Returns Promise<void>

optionalsetupScriptEnvironment

setupScriptEnvironment?: (project: Project, env: ProcessEnvironment, makePathWrapper: (name: string, argv0: string, args: string[]) => Promise<void>) => Promise<void>

Type declaration

    • (project: Project, env: ProcessEnvironment, makePathWrapper: (name: string, argv0: string, args: string[]) => Promise<void>): Promise<void>
    • Called before a script is executed. The hooks are allowed to modify the env object as they see fit, and any call to makePathWrapper will cause a binary of the given name to be injected somewhere within the PATH (we recommend you don’t alter the PATH yourself unless required).

      The keys you get in the env are guaranteed to be uppercase. We strongly suggest you adopt this convention for any new key added to the env (we might enforce it later on).


      Parameters

      • project: Project
      • env: ProcessEnvironment
      • makePathWrapper: (name: string, argv0: string, args: string[]) => Promise<void>

      Returns Promise<void>

optionalvalidateProject

validateProject?: (project: Project, report: { reportError: (name: MessageName, text: string) => void; reportWarning: (name: MessageName, text: string) => void }) => void

Type declaration

    • (project: Project, report: { reportError: (name: MessageName, text: string) => void; reportWarning: (name: MessageName, text: string) => void }): void
    • Called during the Validation step of the install method from the Project class.


      Parameters

      Returns void

optionalvalidateProjectAfterInstall

validateProjectAfterInstall?: (project: Project, report: { reportError: (name: MessageName, text: string) => void; reportWarning: (name: MessageName, text: string) => void }) => void

Type declaration

    • (project: Project, report: { reportError: (name: MessageName, text: string) => void; reportWarning: (name: MessageName, text: string) => void }): void
    • Called during the Post-install validation step of the install method from the Project class.


      Parameters

      Returns void

optionalvalidateWorkspace

validateWorkspace?: (workspace: Workspace, report: { reportError: (name: MessageName, text: string) => void; reportWarning: (name: MessageName, text: string) => void }) => void

Type declaration

    • Called during the Validation step of the install method from the Project class by the validateProject hook.


      Parameters

      Returns void

optionalwrapNetworkRequest

wrapNetworkRequest?: (executor: () => Promise<Response>, extra: WrapNetworkRequestInfo) => Promise<() => Promise<Response>>

Type declaration

    • Called when a network request is being made. The executor function parameter, when called, will trigger the network request. You can use this mechanism to wrap network requests, for example to run some validation or add some logging.


      Parameters

      Returns Promise<() => Promise<Response>>

optionalwrapScriptExecution

wrapScriptExecution?: (executor: () => Promise<number>, project: Project, locator: Locator, scriptName: string, extra: { args: string[]; cwd: PortablePath; env: ProcessEnvironment; script: string; stderr: Writable; stdin: null | Readable; stdout: Writable }) => Promise<() => Promise<number>>

Type declaration

    • (executor: () => Promise<number>, project: Project, locator: Locator, scriptName: string, extra: { args: string[]; cwd: PortablePath; env: ProcessEnvironment; script: string; stderr: Writable; stdin: null | Readable; stdout: Writable }): Promise<() => Promise<number>>
    • Called as a script is getting executed. The executor function parameter, when called, will execute the script. You can use this mechanism to wrap script executions, for example to run some validation or add some performance monitoring.


      Parameters

      • executor: () => Promise<number>
      • project: Project
      • locator: Locator
      • scriptName: string
      • extra: { args: string[]; cwd: PortablePath; env: ProcessEnvironment; script: string; stderr: Writable; stdin: null | Readable; stdout: Writable }

      Returns Promise<() => Promise<number>>