UNPKG

@rushstack/heft

Version:

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

175 lines (164 loc) 6.5 kB
/** * Defines configuration used by core Heft. */ { "$schema": "https://developer.microsoft.com/json-schemas/heft/v0/heft.schema.json", /** * Optionally specifies another JSON config file that this file extends from. This provides a way for standard * settings to be shared across multiple projects. * * To delete an inherited setting, set it to `null` in this file. */ // "extends": "base-project/config/heft.json", /** * Defines aliases for existing Heft actions, and allows them to be invoked by * name with default parameters. The JSON keys is are user-defined names. * * For example, the "heft start" alias is conventionally defined to invoke * "heft build-watch --serve" using a definition like this: * * "aliasesByName": { "start": { "actionName": "build-watch", "defaultParameters": [ "--serve" ] } } */ "aliasesByName": { // /** // * The command-line action name of the Heft alias that is being defined. // * This JSON key is a user-defined value. // */ // "example-alias-name": { // /** // * The name of the existing Heft command-line action to be invoked by this alias. // */ // "actionName": "example-action", // // /** // * A list of command-line parameters to pass to the Heft action by default. // * These parameters will be appended after the specified action and before // * any user-specified parameters. // */ // "defaultParameters": [ "--do-some-thing" ] // } }, /** * List of Heft lifecycle plugins to be loaded for this project. */ "heftPlugins": [ // { // /** // * (REQUIRED) The NPM package name for the plugin. // */ // "pluginPackage": "@mycorp/heft-example-plugin", // // /** // * The name of the plugin to load from the NPM package's heft-plugin.json manifest. // * If not specified, and if the plugin package provides a single plugin, then that // * plugin will be loaded. // */ // // "pluginName": "example-plugin", // // /** // * Options to pass to the plugin. This is a custom object whose structure // * is defined by the plugin. // */ // // "options": { "example-key": "example-value" } // } ], /** * Heft phases that can be run during an execution of Heft. * The JSON keys is are user-defined names. */ "phasesByName": { /** * The name of the phase, which is used by other fields such as "phaseDependencies". * This JSON key is a user-defined value. */ "example-phase": { /** * A description to be shown in the command-line help. */ "phaseDescription": "An example phase", /** * A list of delete operations to perform when cleaning at the beginning of phase execution. * Their structure is similar the options used by the delete-files-plugin. */ "cleanFiles": [ // { // /** // * Absolute path to the source file or folder, relative to the project root. // * If "fileExtensions", "excludeGlobs", or "includeGlobs" are specified, then "sourcePath" // * is assumed to be a folder; if it is not a folder, an error will be thrown. // * Settings such as "includeGlobs" and "excludeGlobs" will be resolved relative to this path. // * If no globs or file extensions are specified, the entire folder will be copied. // * If this parameter is not provided, it defaults to the project root. // */ // // "sourcePath": "lib", // // /** // * If specified, this option recursively scans all folders under "sourcePath" and includes // * any files that match the specified extensions. If "fileExtensions" and "includeGlobs" // * are both specified, their selections are added together. // */ // // "fileExtensions": [ ".png" ], // // /** // * A list of glob patterns that select files to be copied. The paths are resolved relative // * to "sourcePath", which must be a folder path. If "fileExtensions" and "includeGlobs" // * are both specified, their selections are added together. // * // * For glob syntax, refer to: https://www.npmjs.com/package/fast-glob // */ // // "excludeGlobs": [], // // // /** // * A list of glob patterns that exclude files or folders from being copied. The paths are resolved // * relative to "sourcePath", which must be a folder path. These exclusions eliminate items that // * were selected by the "includeGlobs" or "fileExtensions" setting. // * // * For glob syntax, refer to: https://www.npmjs.com/package/fast-glob // */ // // "includeGlobs": [ "**/temp" ] // } ], /** * A list of phase names that must be run before this phase can start. */ "phaseDependencies": [], /** * Heft tasks that are run during an execution of the Heft phase. * The JSON keys is are user-defined names. */ "tasksByName": { /** * The name of the task, which is used by other fields such as "taskDependencies". * This JSON key is a user-defined value. */ "example-task": { /** * A list of task names that must be run before this task can start. */ "taskDependencies": [], /** * (REQUIRED) The Heft plugin to be loaded, which will perform the operation for this task. */ "taskPlugin": { /** * (REQUIRED) The NPM package name for the plugin. */ "pluginPackage": "@mycorp/heft-example-plugin" /** * The name of the plugin to load from the NPM package's heft-plugin.json manifest. * If not specified, and if the plugin package provides a single plugin, then that * plugin will be loaded. */ // "pluginName": "example-plugin", /** * Options to pass to the plugin. This is a custom object whose structure * is defined by the plugin. */ // "options": { "example-key": "example-value" } } } } } } }