@rushstack/heft
Version:
Build all your JavaScript projects the same way: A way that works.
58 lines • 2.7 kB
TypeScript
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