{"id":13407988,"url":"https://github.com/nightroman/Invoke-Build","last_synced_at":"2025-03-14T12:31:58.932Z","repository":{"id":44332982,"uuid":"2249725","full_name":"nightroman/Invoke-Build","owner":"nightroman","description":"Build Automation in PowerShell","archived":false,"fork":false,"pushed_at":"2024-10-03T11:44:08.000Z","size":1451,"stargazers_count":647,"open_issues_count":0,"forks_count":60,"subscribers_count":29,"default_branch":"main","last_synced_at":"2024-10-07T18:15:13.169Z","etag":null,"topics":["automation","build","build-automation","engine","powershell"],"latest_commit_sha":null,"homepage":"https://github.com/nightroman/Invoke-Build/wiki","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nightroman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["nightroman"]}},"created_at":"2011-08-22T16:19:19.000Z","updated_at":"2024-10-03T11:44:13.000Z","dependencies_parsed_at":"2024-01-05T20:51:25.649Z","dependency_job_id":"88e3c499-6812-41bf-b5b9-d1f7f1c1d76c","html_url":"https://github.com/nightroman/Invoke-Build","commit_stats":{"total_commits":463,"total_committers":14,"mean_commits":33.07142857142857,"dds":"0.036717062634989195","last_synced_commit":"f4c6b9abfadc876bd12bf64d758a0f8f501f753e"},"previous_names":[],"tags_count":235,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nightroman%2FInvoke-Build","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nightroman%2FInvoke-Build/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nightroman%2FInvoke-Build/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nightroman%2FInvoke-Build/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nightroman","download_url":"https://codeload.github.com/nightroman/Invoke-Build/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243419073,"owners_count":20287805,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","build","build-automation","engine","powershell"],"created_at":"2024-07-30T20:00:49.997Z","updated_at":"2025-03-14T12:31:58.916Z","avatar_url":"https://github.com/nightroman.png","language":"PowerShell","readme":"\n[![PSGV](https://img.shields.io/powershellgallery/v/InvokeBuild)![PSGD](https://img.shields.io/powershellgallery/dt/InvokeBuild)](https://www.powershellgallery.com/packages/InvokeBuild)\n[![NGV](https://img.shields.io/nuget/v/Invoke-Build)![NGD](https://img.shields.io/nuget/dt/Invoke-Build)](https://www.nuget.org/packages/Invoke-Build)\n\u003cimg src=\"https://raw.githubusercontent.com/nightroman/Invoke-Build/main/ib.png\" align=\"right\"/\u003e\n\n## Build Automation in PowerShell\n\nInvoke-Build is a build and test automation tool which invokes tasks defined in\nPowerShell v3.0+ scripts. It is similar to psake but arguably easier to use and\nmore powerful. It is complete, bug free, well covered by tests.\n\nIn addition to basic task processing the engine supports\n\n- Incremental tasks with effectively processed inputs and outputs.\n- Persistent builds which can be resumed after interruptions.\n- Parallel builds in separate workspaces with common stats.\n- Batch invocation of tests composed as tasks.\n- Ability to define new classes of tasks.\n\nInvoke-Build v3.0.1+ is cross-platform with PowerShell Core.\n\nInvoke-Build can be effectively used in VSCode and ISE.\n\nSeveral *PowerShell Team* projects use Invoke-Build.\n\n## The package\n\nThe package includes the engine, helpers, and help:\n\n* [Invoke-Build.ps1](https://github.com/nightroman/Invoke-Build/blob/main/Invoke-Build.ps1) - invokes build scripts, this is the build engine\n* [Build-Checkpoint.ps1](https://github.com/nightroman/Invoke-Build/blob/main/Build-Checkpoint.ps1) - invokes persistent builds using the engine\n* [Build-Parallel.ps1](https://github.com/nightroman/Invoke-Build/blob/main/Build-Parallel.ps1) - invokes parallel builds using the engine\n* [Resolve-MSBuild.ps1](https://github.com/nightroman/Invoke-Build/blob/main/Resolve-MSBuild.ps1) - finds the specified or latest MSBuild\n* [Show-TaskHelp.ps1](https://github.com/nightroman/Invoke-Build/blob/main/Show-TaskHelp.ps1) - shows task help, used on WhatIf calls\n* *about_InvokeBuild.help.txt* - module help file\n* *Help.xml* - content for Get-Help\n\nExtra scripts, see PSGallery and the repository:\n\n* [Invoke-Build.ArgumentCompleters](https://www.powershellgallery.com/packages/Invoke-Build.ArgumentCompleters) - completers for v5 native, TabExpansion2.ps1\n* [Invoke-TaskFromVSCode](https://www.powershellgallery.com/packages/Invoke-TaskFromVSCode) - invokes a task from a build script opened in VSCode\n* [Show-BuildGraph](https://www.powershellgallery.com/packages/Show-BuildGraph) - shows task graph by Graphviz Viz.js or dot\n* [New-VSCodeTask](https://www.powershellgallery.com/packages/New-VSCodeTask) - generates VSCode tasks bound to build script tasks\n* [Invoke-TaskFromISE](https://www.powershellgallery.com/packages/Invoke-TaskFromISE) - invokes a task from a script opened in ISE\n\nAnd some more tools, see the repository:\n\n* [ib.cmd](https://github.com/nightroman/Invoke-Build/blob/main/ib.cmd), [ib.sh](https://github.com/nightroman/Invoke-Build/blob/main/ib.sh) - cmd and bash helpers\n* [Build-JustTask.ps1](https://github.com/nightroman/Invoke-Build/blob/main/Build-JustTask.ps1) - invokes tasks without references\n* [Convert-psake.ps1](https://github.com/nightroman/Invoke-Build/blob/main/Convert-psake.ps1) - converts psake build scripts, see [wiki](https://github.com/nightroman/Invoke-Build/wiki/Convert~psake)\n* [Show-BuildTree.ps1](https://github.com/nightroman/Invoke-Build/blob/main/Show-BuildTree.ps1) - shows task trees as text\n* [Show-BuildDgml.ps1](https://github.com/nightroman/Invoke-Build/blob/main/Show-BuildDgml.ps1) - shows task graph as DGML\n* [Show-BuildMermaid.ps1](https://github.com/nightroman/Invoke-Build/blob/main/Show-BuildMermaid.ps1) - shows task graph by Mermaid\n\n## Install as module\n\nInvoke-Build is published as PSGallery module [InvokeBuild](https://www.powershellgallery.com/packages/InvokeBuild).\nYou can install it by one of these commands:\n\n    Install-Module InvokeBuild\n\nTo install the module with Chocolatey, run the following command:\n\n    choco install invoke-build\n\nNOTE: The Chocolatey package is maintained by its owner.\n\n## Install as scripts\n\nInvoke-Build is also published as [nuget.org/packages/Invoke-Build](https://www.nuget.org/packages/Invoke-Build).\n\nIf you use [scoop](https://github.com/lukesampson/scoop) then invoke:\n\n    scoop install invoke-build\n\nand you are done, scripts are downloaded and their directory is added to the\npath. You may need to start a new PowerShell session with the updated path.\n\nOtherwise, download the package manually, rename it to zip, extract its *tools*\nand rename to *InvokeBuild*. Consider including this directory to the path for\ninvoking scripts by names. Or copy to any PowerShell module directory in order\nto use it as module.\n\n## Install as dotnet tool\n\n[nuget.org/packages/ib](https://www.nuget.org/packages/ib) provides Invoke-Build\nas the dotnet tool `ib` which may be installed as global or local.\n\nTo install the global tool:\n\n    dotnet tool install --global ib\n\nTo install the local tool:\n\n    dotnet new tool-manifest # once on setting up a repo with tools\n    dotnet tool install --local ib\n\nSee [ib/README](https://github.com/nightroman/Invoke-Build/blob/main/ib/README.md) for more details about `ib` commands.\n\n## Getting help\n\n[#2899]: https://github.com/PowerShell/PowerShell/issues/2899\n\nIf you are using the module (known issue [#2899]) or the script is not in the\npath then use the full path to *Invoke-Build.ps1* instead of *Invoke-Build* in\nthe below commands:\n\nIn order to get help for the engine, invoke:\n\n    help Invoke-Build -full\n\nIn order to get help for internal commands:\n\n    . Invoke-Build\n    help task -full\n    help exec -full\n    ...\n\n## Online resources\n\n- [Basic Concepts](https://github.com/nightroman/Invoke-Build/wiki/Concepts): Why build scripts may have advantages over normal scripts.\n- [Script Tutorial](https://github.com/nightroman/Invoke-Build/wiki/Script-Tutorial): Take a look in order to get familiar with build scripts.\n- [Step by Step Tutorial](https://github.com/nightroman/Invoke-Build/tree/main/Tasks/01-step-by-step-tutorial): From \"Hello world\" to featured scripts.\n- [Invoke-Build.template](https://github.com/nightroman/Invoke-Build.template): Create scripts by `dotnet new ib`.\n- [Project Wiki](https://github.com/nightroman/Invoke-Build/wiki): Detailed tutorials, helpers, notes, and etc.\n- [Examples](https://github.com/nightroman/Invoke-Build/wiki/Build-Scripts-in-Projects): Build scripts used in various projects.\n- [Tasks](https://github.com/nightroman/Invoke-Build/tree/main/Tasks): Samples, patterns, and various techniques.\n- [Design Notes](https://github.com/nightroman/Invoke-Build/wiki/Design-Notes): Technical details for contributors.\n- [Release Notes](https://github.com/nightroman/Invoke-Build/blob/main/Release-Notes.md)\n\n[discussions]: https://github.com/nightroman/Invoke-Build/discussions\n[issues]: https://github.com/nightroman/Invoke-Build/issues\n\nQuestions, suggestions, and reports are welcome at [discussions] and [issues].\n\n## Credits\n\n- The project was inspired by [psake](https://github.com/psake/psake), see [Comparison with psake](https://github.com/nightroman/Invoke-Build/wiki/Comparison-with-psake).\n- Some concepts came from [MSBuild](https://github.com/Microsoft/msbuild), see [Comparison with MSBuild](https://github.com/nightroman/Invoke-Build/wiki/Comparison-with-MSBuild).\n","funding_links":["https://github.com/sponsors/nightroman"],"categories":["Build Automation","自动构建","PowerShell","自动构建（Build Automation）","Build Tools"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnightroman%2FInvoke-Build","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnightroman%2FInvoke-Build","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnightroman%2FInvoke-Build/lists"}