{"id":24427375,"url":"https://github.com/ekkohdev/powershell-module-template","last_synced_at":"2025-09-30T22:30:55.491Z","repository":{"id":48342335,"uuid":"183130933","full_name":"ekkohdev/powershell-module-template","owner":"ekkohdev","description":"My PowerShell module project template for use with Plaster.","archived":false,"fork":false,"pushed_at":"2023-12-08T23:18:16.000Z","size":14,"stargazers_count":5,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-17T10:41:50.970Z","etag":null,"topics":["plaster","plaster-template","powershell","powershell-module"],"latest_commit_sha":null,"homepage":"","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ekkohdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2019-04-24T02:23:38.000Z","updated_at":"2023-11-26T22:43:35.000Z","dependencies_parsed_at":"2024-05-27T22:00:09.678Z","dependency_job_id":"d543cc6c-b970-40bf-abb4-e9b023f3e7e5","html_url":"https://github.com/ekkohdev/powershell-module-template","commit_stats":null,"previous_names":["ekkohdev/powershell-module-template"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekkohdev%2Fpowershell-module-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekkohdev%2Fpowershell-module-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekkohdev%2Fpowershell-module-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ekkohdev%2Fpowershell-module-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ekkohdev","download_url":"https://codeload.github.com/ekkohdev/powershell-module-template/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234787016,"owners_count":18886444,"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":["plaster","plaster-template","powershell","powershell-module"],"created_at":"2025-01-20T12:02:14.294Z","updated_at":"2025-09-30T22:30:55.480Z","avatar_url":"https://github.com/ekkohdev.png","language":"PowerShell","funding_links":[],"categories":["PowerShell"],"sub_categories":[],"readme":"# PowerShell Module Template\n\nMy PowerShell module project template, for use with [Plaster](https://github.com/PowerShell/Plaster).\n\nThis template sets up a number of things to make getting started with authoring a new PowerShell module much less time consuming, while following best practices around organising source code, unit testing and documentation. On top of a basic project structure, it also has a number of build tasks setup and some extra things like VS Code tasks already configured.\n\nThis is the result of me seeing how a number of other projects and people organise their modules, and then tweaking/simplifying things to my liking.\n\n## Using The Template\n\nTo create a new PowerShell module project with this template, download/clone this repository into a folder and then run...\n\n```powershell\nInvoke-Plaster -TemplatePath \u003cPathToFolder\u003e -DestinationPath \u003cPathForNewProject\u003e\n```\n\nYou will then have a newly scaffolded PowerShell module project to start work on.\n\n## Dependencies\n\n- [Plaster](https://github.com/PowerShell/Plaster), for scaffolding the new module project.\n- [PSScriptAnalyzer](https://github.com/PowerShell/PSScriptAnalyzer), for linting and styling of PowerShell code.\n- [Pester](https://github.com/pester/Pester), for unit testing.\n- [platyPS](https://github.com/PowerShell/platyPS), for generating external help files.\n- [Invoke-Build](https://github.com/nightroman/Invoke-Build), for build automation.\n- [New-VSCodeTask](https://www.powershellgallery.com/packages/New-VSCodeTask), for automatically generating VS Code tasks from Invoke-Build tasks.\n\n## How It Works\n\nWhen invoked, Plaster reads the ```plasterManifest.xml``` file to scaffold a new module project. The Plaster manifest XML file declaratively describes the content and creation process for the new project. Take a look at the [plasterManifest.xml](plasterManifest.xml) file to see how it generates the output shown below.\n\nFor more information on Plaster manifests and how they work, head over to the [Plaster docs](https://github.com/PowerShell/Plaster/blob/master/docs/en-US/about_Plaster_CreatingAManifest.help.md).\n\n\n## Output Example\n\n```\nMyNewModule\n|\n|---.vscode\n|       settings.json\n|       tasks.json\n|\n|---docs\n|   \n|---src\n|   |---docs\n|   |   |---en-US\n|   |   |       about_MyNewModule.md\n|   |   |       Add-YourFirstFunction.md\n|   |\n|   |---private\n|   |       Add-PrivateFunction.ps1\n|   |\n|   |---public\n|   |       Add-YourFirstFunction.ps1\n|   |\n|   |   MyNewModule.psd1\n|   |   MyNewModule.psm1\n|\n|---tests\n|   |---private\n|   |       Add-PrivateFunction.Tests.ps1\n|   |\n|   |---public\n|   |       Add-YourFirstFunction.Tests.ps1\n|   |\n|   |   _InitializeTests.ps1\n|   |   MyNewModule.Manifest.Tests.ps1\n|\n|   .gitignore\n|   LICENSE\n|   MyNewModule.Build.ps1\n|   PSScriptAnalyzerSettings.psd1\n|   README.md\n```\n\n## Output Details\n\n### **.vscode**\nContains Visual Studio Code workspace settings and task definitions.\n\n- *```extensions.json```* - Provides extension recommendations.  \n- *```settings.json```* - Overrides editor settings for tab indents and whitespace.  \n- *```tasks.json```* - Generated by ```New-VSCodeTask``` script so Invoke-Build tasks are available as VS Code tasks. \n\n### **docs**\nDirectory for project documentation as per GitHub convention, separate from the module's own documentation.\n\n### **src**\nContains all source code for the PowerShell module.\n\n- ***```docs\\en-US```*** - Contains markdown sources for module documentation.\n  - *```about_MyNewModule.md```* - platyPS template for PowerShell's 'about' help topic.\n  - *```Add-YourFirstFunction.md```* - platyPS template for the example public function's help document.\n- ***```private```*** - Contains sources for all private module functions.\n  - *```Add-PrivateFunction.ps1```* - Example private module function.\n- ***```public```*** - Contains sources for all public module functions.\n  - *```Add-YourFirstFunction.ps1```* - Example public module function.\n- *```MyNewModule.psd1```* - PowerShell module manifest file.\n- *```MyNewModule.psm1```* - PowerShell root module file.\n\n### **tests**\nContains all Pester tests for the module.\n\n- ***```private```*** - Contains Pester tests for private module functions.\n  - *```Add-PrivateFunction.Tests.ps1```* - Example Pester test for example private module function.\n- ***```public```*** - Contains Pester tests for public module functions.\n  - *```Add-YourFirstFunction.Tests.ps1```* - Example Pester test for example public module function.\n- *```_InitializeTests.ps1```* - Common initialize script that can be dot sourced into individual Pester test files.\n- *```MyNewModule.Manifest.Tests.ps1```* - Pester test file for the PowerShell module's manifest file.\n\n### ***/***\n\n- *```.gitignore```* - Ignore file for Git.\n- *```LICENSE```* - MIT license document.\n- *```MyNewModule.Build.ps1```* - Invoke-Build script, containing task definitions.\n- *```PSScriptAnalyzerSettings.psd1```* - Settings file for PSScriptAnalyzer.\n- *```README.md```* - Project readme file.\n\n\n## Contributions\n\nAlthough this template is built to my own preferences, any contributions or suggestions for improvements would be very welcomed!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fekkohdev%2Fpowershell-module-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fekkohdev%2Fpowershell-module-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fekkohdev%2Fpowershell-module-template/lists"}