{"id":14956152,"url":"https://github.com/ipfs/aegir","last_synced_at":"2025-04-08T02:38:45.243Z","repository":{"id":38083834,"uuid":"54341222","full_name":"ipfs/aegir","owner":"ipfs","description":"AEgir - Automated JavaScript project building","archived":false,"fork":false,"pushed_at":"2024-12-05T16:00:46.000Z","size":8534,"stargazers_count":97,"open_issues_count":61,"forks_count":59,"subscribers_count":23,"default_branch":"main","last_synced_at":"2024-12-07T09:24:15.622Z","etag":null,"topics":["aegir","coverage","esbuild","linting","testing","typescript"],"latest_commit_sha":null,"homepage":"https://ipfs.github.io/aegir","language":"JavaScript","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/ipfs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2016-03-20T21:21:17.000Z","updated_at":"2024-12-05T14:45:25.000Z","dependencies_parsed_at":"2022-07-14T07:20:41.154Z","dependency_job_id":"7cff0f73-6680-4c0b-b131-82f3a8846da3","html_url":"https://github.com/ipfs/aegir","commit_stats":{"total_commits":1454,"total_committers":48,"mean_commits":"30.291666666666668","dds":0.7592847317744154,"last_synced_commit":"e66cd399e02dc974a6dfc2d39ee78738d3ea5842"},"previous_names":["dignifiedquire/dignified.js"],"tags_count":394,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipfs%2Faegir","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipfs%2Faegir/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipfs%2Faegir/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipfs%2Faegir/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipfs","download_url":"https://codeload.github.com/ipfs/aegir/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238748582,"owners_count":19523995,"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":["aegir","coverage","esbuild","linting","testing","typescript"],"created_at":"2024-09-24T13:12:23.614Z","updated_at":"2025-03-01T20:05:16.964Z","avatar_url":"https://github.com/ipfs.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# aegir\n\n[![ipfs.tech](https://img.shields.io/badge/project-IPFS-blue.svg?style=flat-square)](https://ipfs.tech)\n[![Discuss](https://img.shields.io/discourse/https/discuss.ipfs.tech/posts.svg?style=flat-square)](https://discuss.ipfs.tech)\n[![codecov](https://img.shields.io/codecov/c/github/ipfs/aegir.svg?style=flat-square)](https://codecov.io/gh/ipfs/aegir)\n[![CI](https://img.shields.io/github/actions/workflow/status/ipfs/aegir/js-test-and-release.yml?branch=main\\\u0026style=flat-square)](https://github.com/ipfs/aegir/actions/workflows/js-test-and-release.yml?query=branch%3Amain)\n\n\u003e JavaScript project management\n\nAegir is an opinionated tool for TypeScript/JavaScript project management, testing and release. You should use it if you just want to ship working code and have few strongly held opinions on linting, project layout and testing frameworks.\n\nIt bundles config for standard tools such as eslint, mocha, etc and lets you concentrate on writing code instead of formatting whitespace.\n\n ## Project Structure\n\n The project structure when using this is quite strict, to ease replication and configuration overhead.\n\n All source code should be placed under `src`, with the main entry point being `src/index.js` or `src/index.ts`.\n\n All test files should be placed under `test`. Individual test files should end in `.spec.js` or `.spec.ts` and will be ran in all environments (node, browser, webworker, electron-main and electron-renderer).\n\n To run node specific tests a file named `test/node.js` or `test/node.ts` should be used to require all node test files and the same thing for the other environments with a file named `test/browser.js` or `test/browser.ts`.\n\n Your `package.json` should have the following entries and should pass `aegir lint-package-json`.\n\n ```json\n \"main\": \"src/index.js\",\n \"files\": [\n   \"src\",\n   \"dist\"\n ],\n \"scripts\": {\n   \"lint\": \"aegir lint\",\n   \"release\": \"aegir release\",\n   \"build\": \"aegir build\",\n   \"test\": \"aegir test\",\n   \"test:node\": \"aegir test --target node\",\n   \"test:browser\": \"aegir test --target browser\"\n }\n ```\n\n ## CLI\n\n Run `aegir --help`\n\n ## Configuration\n\n Aegir can be fully configured using a config file named `.aegir.js` or the package.json using the property `aegir`.\n\n ### .aegir.js\n\n ```js\n module.exports = {\n   tsRepo: true,\n   release: {\n     build: false\n   }\n }\n ```\n\n ### package.json\n\n ```json\n \"main\": \"src/index.js\",\n \"files\": [\n   \"src\",\n   \"dist\"\n ],\n \"scripts\": {\n   \"lint\": \"aegir lint\",\n   \"release\": \"aegir release\",\n   \"build\": \"aegir build\",\n   \"test\": \"aegir test\",\n   \"test:node\": \"aegir test --target node\",\n   \"test:browser\": \"aegir test --target browser\"\n },\n \"aegir\" : {\n   \"tsRepo\": false\n }\n ```\n\n You can find the complete default config [here](https://github.com/ipfs/aegir/blob/main/src/config/user.js#L12) and the types [here](https://github.com/ipfs/aegir/blob/main/src/types.d.ts).\n\n ## Continuous Integration\n\n Check this template for Github Actions \u003chttps://github.com/ipfs/aegir/blob/main/md/github-actions.md\u003e\n\n ## Testing helpers\n\n In addition to running the tests `aegir` also provides several helpers to be used by the tests.\n\n Check the [documentation](https://ipfs.github.io/aegir/)\n\n ## Typescript\n\n Aegir will detect the presence of `tsconfig.json` files and build typescript as appropriate.\n\n ## Releases\n\n `aegir release` will run `semantic-release`-style auto-releases with every change to `main`.\n\n If you wish to batch changes up instead, please use `release-please`.\n\n ## Config updates\n\n You can keep your project configuration up to date by running:\n\n ```console\n $ npx aegir check-project\n ```\n\n It will attempt to add/amend any configuration files that require updating to the latest versions.\n\n If you have any custom config in your project please double check the edits it will make!\n\n# Install\n\n```console\n$ npm i aegir\n```\n\n# API Docs\n\n- \u003chttps://ipfs.github.io/aegir\u003e\n\n# License\n\nLicensed under either of\n\n- Apache 2.0, ([LICENSE-APACHE](https://github.com/ipfs/aegir/LICENSE-APACHE) / \u003chttp://www.apache.org/licenses/LICENSE-2.0\u003e)\n- MIT ([LICENSE-MIT](https://github.com/ipfs/aegir/LICENSE-MIT) / \u003chttp://opensource.org/licenses/MIT\u003e)\n\n# Contribute\n\nContributions welcome! Please check out [the issues](https://github.com/ipfs/aegir/issues).\n\nAlso see our [contributing document](https://github.com/ipfs/community/blob/master/CONTRIBUTING_JS.md) for more information on how we work, and about contributing in general.\n\nPlease be aware that all interactions related to this repo are subject to the IPFS [Code of Conduct](https://github.com/ipfs/community/blob/master/code-of-conduct.md).\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.\n\n[![](https://cdn.rawgit.com/jbenet/contribute-ipfs-gif/master/img/contribute.gif)](https://github.com/ipfs/community/blob/master/CONTRIBUTING.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fipfs%2Faegir","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fipfs%2Faegir","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fipfs%2Faegir/lists"}