UNPKG

@rushstack/heft

Version:

Build all your JavaScript projects the same way: A way that works.

58 lines 2.7 kB
import type { ITerminal } from '@rushstack/terminal'; import { type IFileSelectionSpecifier } from './FileGlobSpecifier'; import type { HeftConfiguration } from '../configuration/HeftConfiguration'; import type { IHeftTaskPlugin } from '../pluginFramework/IHeftPlugin'; import type { IHeftTaskSession } from '../pluginFramework/HeftTaskSession'; import type { WatchFileSystemAdapter } from '../utilities/WatchFileSystemAdapter'; /** * Used to specify a selection of files to copy from a specific source folder to one * or more destination folders. * * @public */ export interface ICopyOperation extends IFileSelectionSpecifier { /** * Absolute paths to folders which files or folders should be copied to. */ destinationFolders: string[]; /** * Copy only the file and discard the relative path from the source folder. */ flatten?: boolean; /** * Hardlink files instead of copying. * * @remarks * If the sourcePath is a folder, the contained directory structure will be re-created * and all files will be individually hardlinked. This means that folders will be new * filesystem entities and will have separate folder metadata, while the contained files * will maintain normal hardlink behavior. This is done since folders do not have a * cross-platform equivalent of a hardlink, and since file symlinks provide fundamentally * different functionality in comparison to hardlinks. */ hardlink?: boolean; } /** * Used to specify a selection of files to copy from a specific source folder to one * or more destination folders. * * @public */ export interface IIncrementalCopyOperation extends ICopyOperation { /** * If true, the file will be copied only if the source file is contained in the * IHeftTaskRunIncrementalHookOptions.changedFiles map. */ onlyIfChanged?: boolean; } interface ICopyFilesPluginOptions { copyOperations: ICopyOperation[]; } export declare function asAbsoluteCopyOperation(rootFolderPath: string, copyOperation: ICopyOperation): ICopyOperation; export declare function asRelativeCopyOperation(rootFolderPath: string, copyOperation: ICopyOperation): ICopyOperation; export declare function copyFilesAsync(copyOperations: Iterable<ICopyOperation>, terminal: ITerminal, buildInfoPath: string, configHash: string, watchFileSystemAdapter?: WatchFileSystemAdapter): Promise<void>; export default class CopyFilesPlugin implements IHeftTaskPlugin<ICopyFilesPluginOptions> { apply(taskSession: IHeftTaskSession, heftConfiguration: HeftConfiguration, pluginOptions: ICopyFilesPluginOptions): void; } export {}; //# sourceMappingURL=CopyFilesPlugin.d.ts.map