Files
cross-env/CONTRIBUTING.md
0112288e01 feat: modernize cross-env with TypeScript, Vitest, and ESM-only build (#261)
NOTE: For the vast majority of users running supported versions of Node.js, this should not require any changes and you can update without issue.

BREAKING CHANGE: This is a major rewrite that changes the module format from CommonJS to ESM-only. The package now requires Node.js >=20 and only exports ESM modules (not relevant in most cases).

BREAKING CHANGE: The package.json exports have been updated to remove CommonJS support. Only ESM imports are now supported.

BREAKING CHANGE: All source files have been converted from JavaScript to TypeScript, requiring TypeScript-aware tooling for development.

- Replace Jest with Vitest for testing
- Convert all source files from .js to .ts with proper TypeScript types
- Use zshy for ESM-only builds (removes CJS support)
- Adopt @epic-web/config for TypeScript, ESLint, and Prettier
- Update to Node.js >=20 requirement
- Remove kcd-scripts dependency
- Add comprehensive e2e tests with GitHub Actions matrix testing
- Update GitHub workflow with caching and cross-platform testing
- Modernize documentation and remove outdated sections
- Update all dependencies to latest versions
- Add proper TypeScript declarations and exports

The tool maintains its original functionality while being completely modernized with the latest tooling and best practices

Co-authored-by: GitHub Action <[email protected]>
2025-07-25 15:19:14 -06:00

12 KiB

Contributing

Thanks for being willing to contribute!

Working on your first Pull Request? You can learn how from this free series How to Contribute to an Open Source Project on GitHub

Project setup

  1. Fork and clone the repo
  2. npm install to install dependencies
  3. npm run validate to validate you've got it working
  4. Create a branch for your PR

Tip: Keep your main branch pointing at the original repository and make pull requests from branches on your fork. To do this, run:

git remote add upstream https://github.com/kentcdodds/cross-env.git
git fetch upstream
git branch --set-upstream-to=upstream/main main

This will add the original repository as a "remote" called "upstream," Then fetch the git information from that remote, then set your local main branch to use the upstream main branch whenever you run git pull. Then you can make all of your pull request branches based on this main branch. Whenever you want to update your version of main, do a regular git pull.

Development

This project uses modern tooling:

  • TypeScript for type safety
  • Vitest for testing
  • ESLint for linting
  • Prettier for formatting
  • zshy for building

Available Scripts

  • npm run build - Build the project
  • npm run dev - Build in watch mode
  • npm run test - Run tests in watch mode
  • npm run test:run - Run tests once
  • npm run test:coverage - Run tests with coverage
  • npm run lint - Run ESLint
  • npm run lint:fix - Fix ESLint issues
  • npm run format - Format code with Prettier
  • npm run format:check - Check code formatting
  • npm run typecheck - Run TypeScript type checking
  • npm run validate - Run all checks (build, typecheck, lint, format, test)

Help needed

Please checkout the the open issues

Also, please watch the repo and respond to questions/bug reports/feature requests! Thanks!

Contributors ✨

Thanks goes to these people (emoji key):


Kent C. Dodds

πŸ’» πŸ“– πŸš‡ ⚠️

Ya Zhuang

πŸ”Œ πŸ“–

James Harris

πŸ“–

compumike08

πŸ› πŸ“– ⚠️

Daniel RodrΓ­guez Rivero

πŸ› πŸ’» πŸ“–

Jonas Keinholz

πŸ› πŸ’» ⚠️

Hugo Wood

πŸ› πŸ’» ⚠️

Thiebaud Thomas

πŸ› πŸ’» ⚠️

Daniel Rey LΓ³pez

πŸ’» ⚠️

Amila Welihinda

πŸš‡

Paul Betts

πŸ› πŸ’»

Turner Hayes

πŸ› πŸ’» ⚠️

Suhas Karanth

πŸ’» ⚠️

Sven

πŸ’» πŸ“– πŸ’‘ ⚠️

D. NicolΓ‘s Lopez Zelaya

πŸ’»

Johan Hernandez

πŸ’»

Jordan Nielson

πŸ› πŸ’» ⚠️

Jason Cooke

πŸ“–

bibo5088

πŸ’»

Eric Berry

πŸ”

MichaΓ«l De Boey

πŸ’»

Lauri Eskola

πŸ“–

devuxer

πŸ“–

Daniel

πŸ“–

This project follows the all-contributors specification. Contributions of any kind welcome!