Hardhat (https://hardhat.org/) is a widely-used development
environment for Ethereum smart contracts. Its default project layout
generates several directories that should not be committed. This
template mirrors the .gitignore that ships in Hardhat's own
example-project (packages/example-project/.gitignore in
NomicFoundation/hardhat), limited to Hardhat-specific paths (generic
Node.js paths such as node_modules and dist are already covered by
Node.gitignore).
Rules:
- /artifacts, /cache: compiled contract output and compilation cache
- /types: TypeChain output for @nomicfoundation/hardhat-typechain (v3)
- /typechain-types: TypeChain output for @typechain/hardhat (v2)
- /ignition/deployments: Hardhat Ignition deployment output
Historically R users have used the .Renviron file for storing environmental variables such as secrets, credentials, API keys etc. However, I believe there are several compelling reasons for adding .env to the .gitignore too:
1. The dotenv R package was created to allow users to use .env instead of .Renviron. The package has a significant number of downloads. https://github.com/gaborcsardi/dotenv
2. .env files are standard in many other programming languages. It wouldn't be that out of the unexpected to think R users might end up with an .env file because a python user on their team contributed files to the repo, the R user started programming in nodejs and is used to working with .env file, or a repo is in the process of being translated from a language that uses .env to R.
3. LLMs are making programming accessible to people who may not have much previous experience handling credentials and security. One of the first steps many of these users have to do is store LLM provider API keys somewhere. I worry about a new R user adapting a python workflow or an R workflow that recommends using an .env file and then accidentally committing their LLM API keys to a public repo.
4. I can't think of why an R user would create an .env file for any other reason other than storing credentials and environmental variables. If, for whatever reason, they need to commit an .env file, they can remove that part from the template, but I think the risk of accidentally exposing sensitive credentials justifies adding .env files to the template and not commenting it out by default.
# Default for @nomicfoundation/hardhat-typechain (Hardhat 3)
/types
# Default for @typechain/hardhat (Hardhat 2)
/typechain-types
# Hardhat Ignition deployment output
/ignition/deployments
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.