{"id":14957466,"url":"https://github.com/snowball-tech/glacier","last_synced_at":"2025-05-02T07:33:15.270Z","repository":{"id":166065211,"uuid":"641480597","full_name":"snowball-tech/glacier","owner":"snowball-tech","description":"Snowball's open-source monorepository managed by Yarn 3 and TurboRepo","archived":false,"fork":false,"pushed_at":"2024-11-06T06:13:33.000Z","size":1370328,"stargazers_count":4,"open_issues_count":13,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-06T07:20:34.565Z","etag":null,"topics":["eslint","eslint-config","javascript","lodash","mono-repository","prettier","renovate","semantic-release","snowball","testing-library","turborepo","typescript","yarn","yarn3"],"latest_commit_sha":null,"homepage":"https://snowball.xyz","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/snowball-tech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-16T14:55:55.000Z","updated_at":"2024-10-24T14:38:27.000Z","dependencies_parsed_at":"2023-09-22T22:50:06.053Z","dependency_job_id":"fab50c37-0780-4aa2-bbbb-1427ddc032f5","html_url":"https://github.com/snowball-tech/glacier","commit_stats":{"total_commits":579,"total_committers":3,"mean_commits":193.0,"dds":0.4801381692573402,"last_synced_commit":"5877e370f4b6b9beed401b805ffa23f06da7e9dc"},"previous_names":[],"tags_count":298,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowball-tech%2Fglacier","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowball-tech%2Fglacier/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowball-tech%2Fglacier/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowball-tech%2Fglacier/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/snowball-tech","download_url":"https://codeload.github.com/snowball-tech/glacier/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224305847,"owners_count":17289446,"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":["eslint","eslint-config","javascript","lodash","mono-repository","prettier","renovate","semantic-release","snowball","testing-library","turborepo","typescript","yarn","yarn3"],"created_at":"2024-09-24T13:14:56.440Z","updated_at":"2025-05-02T07:33:15.261Z","avatar_url":"https://github.com/snowball-tech.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Snowball Glacier\n\n\u003c!-- prettier-ignore-start --\u003e\n| [`eslint-snowball-config`](./packages/eslint-snowball-config) | [`prettier-config`](./packages/prettier-config) | [`renovate-config`](./packages/renovate-config) | [`semantic-release-config`](./packages/semantic-release-config) |\n| - | - | - | - |\n| [![eslint-snowball-config](https://img.shields.io/npm/v/@snowball-tech/eslint-snowball-config)](https://www.npmjs.com/package/@snowball-tech/eslint-snowball-config) | [![prettier-config](https://img.shields.io/npm/v/@snowball-tech/prettier-config)](https://www.npmjs.com/package/@snowball-tech/prettier-config) | [![renovate-config](https://img.shields.io/npm/v/@snowball-tech/renovate-config)](https://www.npmjs.com/package/@snowball-tech/renovate-config) | [![semantic-release-config](https://img.shields.io/npm/v/@snowball-tech/semantic-release-config)](https://www.npmjs.com/package/@snowball-tech/semantic-release-config) |\n| ![eslint-snowball-config-dependants](https://img.shields.io/librariesio/dependents/npm/@snowball-tech/eslint-snowball-config) | ![prettier-config-dependants](https://img.shields.io/librariesio/dependents/npm/@snowball-tech/prettier-config) | ![renovate-config-dependants](https://img.shields.io/librariesio/dependents/npm/@snowball-tech/renovate-config) | ![semantic-release-config-dependants](https://img.shields.io/librariesio/dependents/npm/@snowball-tech/semantic-release-config) |\n| ![eslint-snowball-config-downloads](https://img.shields.io/npm/dt/@snowball-tech/eslint-snowball-config) | ![prettier-config-downloads](https://img.shields.io/npm/dt/@snowball-tech/prettier-config) | ![renovate-config-downloads](https://img.shields.io/npm/dt/@snowball-tech/renovate-config) | ![semantic-release-config-downloads](https://img.shields.io/npm/dt/@snowball-tech/semantic-release-config) |\n| ![eslint-snowball-config-score](https://img.shields.io/npms-io/final-score/@snowball-tech/eslint-snowball-config) | ![prettier-config-score](https://img.shields.io/npms-io/final-score/@snowball-tech/prettier-config) | ![renovate-config-score](https://img.shields.io/npms-io/final-score/@snowball-tech/renovate-config) | ![semantic-release-config-score](https://img.shields.io/npms-io/final-score/@snowball-tech/semantic-release-config) |\n\n| Quality on `main` branch | Security on `main` branch | Release on `main` branch |\n| - | - | - |\n| ![Quality](https://github.com/snowball-tech/glacier/actions/workflows/quality.yml/badge.svg?branch=main\u0026event=push) | ![Security](https://github.com/snowball-tech/glacier/actions/workflows/security.yml/badge.svg?branch=main\u0026event=push) | ![Release](https://github.com/snowball-tech/glacier/actions/workflows/release.yml/badge.svg?branch=main\u0026event=push) |\n\u003c!-- prettier-ignore-end --\u003e\n\nThe open-source mono-repository for packages developed, maintained and used by\nSnowball.\n\n## Setup\n\nBefore anything, start by cloning the repository:\n\n```bash\ngit clone git@github.com:snowball-tech/glacier.git\n```\n\n\u003e If you haven't setup any SSH key to your GitHub account, you will need to do\n\u003e so. Check out the documentation on\n\u003e [how to connect with SSH](https://docs.github.com/en/authentication/connecting-to-github-with-ssh).\n\u003e Alternatively, you can also use HTTPS to clone the repository _(but this is\n\u003e not recommended)_:\n\u003e\n\u003e ```bash\n\u003e git clone https://github.com/snowball-tech/glacier.git\n\u003e ```\n\n\u003e Note that you can also use the [GitHub CLI](https://cli.github.com/) to clone\n\u003e the repository:\n\u003e\n\u003e ```bash\n\u003e gh repo clone snowball-tech/glacier\n\u003e ```\n\nWhen cloned, go into the repository directory:\n\n```bash\ncd glacier\n```\n\n### Pre-requisites\n\nBefore setting up this repository and start using it/contributing to it, you'll\nneed to make sure you have some tools installed on your machine.\n\n\u003cdetails\u003e\n  \u003csummary\u003eClick here to see the details\u003c/summary\u003e\n\n### **MacOS only**\n\n\u003cdetails\u003e\n\u003csummary\u003eClick for more information\u003c/summary\u003e\n\nIf you are on MacOS, you will need some extra things to make the steps below\neasier.\n\n1. **Homebrew**\n\nFirst of all, you will need [HomeBrew](https://brew.sh/):\n\n```bash\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\n```\n\n\u003e You can always check the [official documentation](https://brew.sh) if you have\n\u003e any question or issue\n\n4. **Shell**\n\nYou are probably using Zsh as your default shell.\n\nSome steps below are updating the `.zshrc` file in your home directory.\nSo we have to make sure this file exists:\n\n```bash\ntouch ~/.zshrc\n```\n\nIf you are using Bash as your default shell, run:\n\n```bash\ntouch ~/.bash_profile\n```\n\n\u003e These commands may give you an error if the files already existed.\n\u003e You can ignore it.\n\n\u003c/details\u003e\n\n### **NodeJS**\n\nTo be able to work with this repository, you will have to have a working version\nof NodeJS.\n\nYou can simply install the latest version of the 18.x.x or LTS 22.x.x build.\n\nTo do so, it's recommended to use a Node Version Manager like\n[NVM](https://github.com/nvm-sh/nvm) or [N](https://github.com/tj/n)\n\n#### **NVM**\n\n```bash\ncurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash\n```\n\n\u003e Note that you may check on the\n\u003e [official installation documentation](https://github.com/nvm-sh/nvm#install--update-script)\n\u003e if a newer version is available.\n\n\u003e You can always check the\n\u003e [official documentation](https://github.com/nvm-sh/nvm#node-version-manager---)\n\u003e if you have any question or issue\n\nThen restart your terminal _(on MacOS you have to completely quit the Terminal\napplication before restarting it)_.\n\nThen you can make NVM automatically select the appropriate NodeJS version for\nthe repository:\n\n```bash\nnvm use\n```\n\n#### **N**\n\n```bash\ncurl -L https://bit.ly/n-install | bash\n```\n\nThen restart your terminal _(on MacOS you have to completely quit the Terminal\napplication before restarting it)_.\n\n\u003e Alternatively, on MacOS you can also run:\n\u003e\n\u003e ```bash\n\u003e brew install n\n\u003e ```\n\u003e\n\u003e And then restart your terminal by completely quitting the Terminal application\n\u003e and restarting it.\n\n\u003e You can always check the\n\u003e [official installation documentation](https://github.com/mklement0/n-install#n-install-mdash-introduction)\n\u003e and the [official documentation](https://github.com/tj/n#n--interactively-manage-your-nodejs-versions)\n\u003e if you have any question or issue\n\nThen you can make N automatically select the appropriate NodeJS version for\nthe repository:\n\n```bash\nn auto\n```\n\n### **Yarn**\n\nThis mono-repository is base on Yarn Workspaces.\nSo you'll have to have [Yarn](https://yarnpkg.com/) on its 4.x.x version.\n\nWhen having NodeJS installed, simply run:\n\n```bash\ncorepack enable\ncorepack prepare yarn@stable --activate\n```\n\n\u003e You can always check the\n\u003e [official installation documentation](https://yarnpkg.com/getting-started/install)\n\u003e if you have any question or issue\n\nThen make sure you have the latest 4.x.x version installed:\n\n```bash\nyarn --version\n```\n\nThis should output a 4.x.x version _(e.g. \"4.6.0\")_.\n\n\u003c/details\u003e\n\n## Installation\n\nThere is an automated setup process that will handle all the steps for you\n(dependencies, configuration, ...):\n\n```bash\nyarn setup\n```\n\n### There you go\n\nYou are now ready to start working on Glacier.\n\n## Usage \u0026 Development\n\n\u003e It's recommended to regularly update the dependencies and the environment on\n\u003e your local copy of the repository:\n\u003e\n\u003e ```bash\n\u003e yarn setup\n\u003e ```\n\nThis repository is a mono-repository. This means that it contains multiple\npackages and applications all together in a single Git repository.\n\nEach of these packages and applications contains their own documentation in\ntheir own `README.md` file.\n\n\u003e See the [dedicated `TOOLING.md` documentation](./docs/TOOLING.md) for more\n\u003e information about the mono-repository management with Yarn workspaces.\n\n### File structure\n\nThis repository is organized around two major directories:\n\n```text\nglacier\n  |-- packages\n  |-- ...\n```\n\n#### Packages\n\nPackages are located in the [packages](./packages) directory.\n\nThis directory contains packages made to be published in a **public** NPM\nrepository (\u003chttps://www.npmjs.com\u003e) and used in other packages and/or apps.\n\nThere are currently **5** packages available in Glacier:\n\n- **[eslint-snowball-config](./packages/eslint-snowball-config)**: a composable\n  ESLint v9\n  configuration to enable config, plugin and rules according to your needs;\n\n- **[prettier-config](./packages/prettier-config)**: the base Prettier\n  configuration and ignored files. This configuration disables semicolon,\n  enforce usage of single quotes and add all trailing commas.  \n  It also offers the [organize attributes](prettier-plugin-organize-attributes)\n  and [Shell script](https://github.com/un-ts/prettier/tree/master/packages/sh)\n  plugins out of the box;\n\n- **[renovate-config](./packages/renovate-config)**: a base opinionated\n  [Renovate](https://www.mend.io/renovate/) configuration with support for NPM,\n  Golang, secrets and many more;\n\n- **[semantic-release-config](./packages/semantic-release-config)**: a\n  mono-repository oriented configuration for\n  [Semantic Release](https://github.com/semantic-release/semantic-release) that\n  allows to publish multiple packages.  \n  It also provide the commit rules for generating changelog and create releases.\n\n### TypeScript\n\nSee [the dedicated `CONVENTIONS.md`](./docs/CONVENTIONS.md) and\n[`TOOLING.md`](./docs/TOOLING.md) documentations.\n\n### Linting \u0026 Formatting\n\nSee [the dedicated `CONVENTIONS.md`](./docs/CONVENTIONS.md) and\n[`TOOLING.md`](./docs/TOOLING.md) documentations.\n\n### Dependencies\n\n\u003e Always remember to add dependency if you **really** need it to avoid\n\u003e cluttering the packages and degrading the performance both in the developers\n\u003e and users side.\n\n**It is your duty** as a member of the Snowball's engineering team to help\nmainting the dependencies up to date. This means that you are expected and\nshould help reviewing, testing and merging dependencies updates PRs on a regular\nbasis.\n\n\u003e The best way to do so is to regularly check the\n\u003e [Renovate dashboard](https://github.com/snowball-tech/glacier/issues/10) and\n\u003e [the list of Pull Requests](https://github.com/snowball-tech/glacier/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-desc+label%3Adev-deps%2Cdeps),\n\u003e for example every morning at the beginning of your day.\n\nAlso, see the [dedicated `TOOLING.md` documentation](./docs/TOOLING.md) for more\ninformation.\n\n### Environment variables\n\nSee [the dedicated `TOOLING.md` documentation](./docs/TOOLING.md).\n\n## Tooling\n\nSee [the dedicated `TOOLING.md` documentation](./docs/TOOLING.md).\n\n## Contributing\n\nSee [the dedicated `CONTRIBUTING.md` documentation](./CONTRIBUTING.md).\n\n### Conventions\n\nSee [the dedicated `CONVENTIONS.md` documentation](./docs/CONVENTIONS.md).\n\n## Help and feedback\n\nIf you have any questions or feedback, feel free to reach out to us using this\nrepository [issues](https://github.com/snowball-tech/glacier/issues) or [discussions](https://github.com/snowball-tech/glacier/discussions).\n\nYou can also use the internal #engineering Slack channel if you are a member of\nthe Snowball tech team.\n\nYou can also check\n[the dedicated `TROUBLESHOOTING.md` documentation](./docs/TROUBLESHOOTING.md)\nfor frequently asked question and troubleshooting.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnowball-tech%2Fglacier","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsnowball-tech%2Fglacier","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnowball-tech%2Fglacier/lists"}