{"id":22282584,"url":"https://github.com/carbonfive/spraygun","last_synced_at":"2026-03-17T07:34:04.581Z","repository":{"id":32927863,"uuid":"142357170","full_name":"carbonfive/spraygun","owner":"carbonfive","description":"Quickly generate JavaScript apps from Carbon Five-flavored templates","archived":false,"fork":false,"pushed_at":"2025-07-25T17:30:21.000Z","size":3334,"stargazers_count":8,"open_issues_count":14,"forks_count":0,"subscribers_count":26,"default_branch":"main","last_synced_at":"2025-07-28T21:50:33.687Z","etag":null,"topics":["spraygun"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/carbonfive.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null}},"created_at":"2018-07-25T21:45:59.000Z","updated_at":"2022-12-21T15:51:22.000Z","dependencies_parsed_at":"2024-11-07T09:36:11.277Z","dependency_job_id":"d841b7f2-4d55-4761-b879-1fb799f57942","html_url":"https://github.com/carbonfive/spraygun","commit_stats":{"total_commits":139,"total_committers":11,"mean_commits":"12.636363636363637","dds":0.6906474820143884,"last_synced_commit":"f6f028ab396a6bc111a25450ecb394260e37b9fd"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/carbonfive/spraygun","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carbonfive%2Fspraygun","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carbonfive%2Fspraygun/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carbonfive%2Fspraygun/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carbonfive%2Fspraygun/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/carbonfive","download_url":"https://codeload.github.com/carbonfive/spraygun/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/carbonfive%2Fspraygun/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268557983,"owners_count":24269710,"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","status":"online","status_checked_at":"2025-08-03T02:00:12.545Z","response_time":2577,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["spraygun"],"created_at":"2024-12-03T16:33:41.326Z","updated_at":"2026-03-17T07:33:59.560Z","avatar_url":"https://github.com/carbonfive.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# spraygun\n\n[![CircleCI](https://circleci.com/gh/carbonfive/spraygun/tree/main.svg?style=shield)](https://circleci.com/gh/carbonfive/spraygun/tree/main)\n\nSpraygun is a JavaScript application generator that builds projects with Carbon Five preferences and best practices baked right in. Spend less time configuring and more building cool features.\n\nThree application templates are supported out of the box:\n\n- [spraygun-express](https://github.com/carbonfive/spraygun-express)\n- [spraygun-react-ts](https://github.com/carbonfive/spraygun-react-ts)\n\nRefer to the GitHub projects for each of these templates for more information.\n\n## Usage\n\nTo get started, make sure you have Node 16 and Yarn installed, then run:\n\n```\n$ npx spraygun --help\n```\n\nYou should see this documentation:\n\n```\nUsage: spraygun \u003ctemplate\u003e \u003cproject-directory\u003e\n\nGenerate a project in the specified directory, based on a template.\n\nFor example, to generate a React TypeScript app in a directory named blog:\n  $ npx spraygun -t react-ts blog\n\nThe officially supported spraygun templates are:\n  -t express\n  -t react-ts\n\nTo use a custom template, specify one of the following:\n  -p path   a local template directory\n  -r URL    a git repository URL\n```\n\n## Demo\n\n![demo](./docs/demo.gif)\n\n## How it works\n\nSpraygun fetches its templates from GitHub, makes a local copy in the destination directory you specify, and then executes a handful of setup tasks to get you up and running. This system makes templates very straightforward: each template is itself a fully-functioning app and can be forked, customized, and easily tested.\n\nEach template defines the app-generation process by providing a special `.spraygun.js` file. The typical `.spraygun.js` takes care of these tasks:\n\n- Renaming the app to match your specified project name\n- Changing the Node version used by the app to match your local environment\n- Initializing a git repo with an initial commit\n- Running `yarn install`\n- Cleaning up spraygun specific files (e.g. removing `.spraygun.js`)\n- Displaying quick-start documentation\n\nSpraygun is heavily inspired by other Carbon Five app generators: [Raygun](https://github.com/carbonfive/raygun) (Rails) and [Razor](https://github.com/carbonfive/razor) (Phoenix).\n\n## Releasing\n\nWhen spraygun is installed via npm or yarn, or run via `npx`, it is downloaded from the central npm repository. New versions of spraygun are published to npm so that they are available to users.\n\nMaintainers of spraygun follow these steps to publish a new version:\n\n1. [Create an npm account](https://www.npmjs.com/signup) if you don't have one already.\n2. Enable \"Authorization and Publishing\" 2FA for your npm account.\n3. Ask an existing spraygun maintainer to [add your npm account as a maintainer](https://www.npmjs.com/package/spraygun/access) for the spraygun package.\n4. Clone this repo and pull the latest `main` branch.\n5. Increment the version in `package.json` according to [semver conventions](https://semver.org).\n6. Commit the change (e.g. `git commit -m \"Releasing v0.4.0\"`).\n7. Tag the commit using an annotated tag (e.g. `git tag -a v0.4.0 -m v0.4.0`).\n8. Push the commit and tag: `git push \u0026\u0026 git push --tags`.\n9. Make sure you are logged into the npm CLI: `npm login`.\n10. Publish to npm: `npm publish` (see troubleshooting note below).\n11. [Navigate to the tag you just pushed](https://github.com/carbonfive/spraygun/tags) and in the \"...\" menu, choose \"Draft a new release\".\n12. Name the release the same as the tag without the `v` (e.g. \"0.4.0\"), add release notes, and publish.\n\nNote: if you get a permissions error during `npm publish`, it might be because you were recently added as a maintainer and that hasn't fully taken effect yet. In that case an existing maintainer needs to perform the publish in order to force npm to update its permissions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarbonfive%2Fspraygun","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcarbonfive%2Fspraygun","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcarbonfive%2Fspraygun/lists"}