Skip to content

Latest commit

 

History

History
149 lines (118 loc) · 4.78 KB

CONTRIBUTING.md

File metadata and controls

149 lines (118 loc) · 4.78 KB

Contributing

Notes specifically for repository maintainers

TODOs

  • implement worlds api endpoint
  • add client logout button
    • extend server session length to match how long discord auth tokens are valid (maybe a bit shorter than max auth token age)
  • upload cypress screenshots, videos, and/or rush *.log artifacts to github build artifacts for debugging
  • auth fails when switching discord accounts at login
  • auth fails on first couple renders, refresh resolves
  • upgrade to eslint v9
    • upgrade eslint-plugin-ava to latest major
  • upgrade to latest @testing-library/react
    • fix peer dependency issues
  • docs: updating/upgrading node
  • lint js/md on precommit?
  • build cache things
  • esm-ify more packages
  • publish
  • generate changelogs

Scaffolding a New Project

Use a custom rush command (see command-line.json) that calls plop to scaffold a new project. Answer the command line prompts to generate a new project based on templates in @trshcmpctr/scaffold.

rush scaffold

Keeping Project Dependencies Up to Date

WARN: Autoinstallers are managed separately, see rush-commitlint.

Periodically bump project dependencies for new features and fixes, e.g. before starting or after completing new feature development. Break dependency upgrades into stages to make it easier to identify what version changes are responsible for any problems. Lint code, run tests, and validate affected project behavior at each stage:

1. Patch Updates

Use the out of the box rush update feature to bump all packages to the latest version available that satisfies current range specifiers. Since this repo abides by the default rush convention that package specifiers are prefixed by tildes, this effectively implies only patch updates.

rush update --full
git add common/rush/pnpm-lock.yaml common/rush/repo-state.json
git commit -m 'build(deps): rush update --full'

2. Minor Updates

Use a custom rush command1 (see command-line.json) that calls npm-check-updates to bump all packages to the latest minor version.

rush update-minor
rush update
git add -A
git commit -m 'build(deps): rush update-minor'

3. Major Upgrades

Use a custom rush command1 (see command-line.json) that calls npm-check-updates to bump all packages to the latest major version.

rush update-major
rush update
git add -A
git commit -m 'build(deps): rush update-major'

Packages excluded via the --reject option:

  • @types/node is excluded because the major version of this package corresponds with the expected major version of Node and this repository will continue to use Node 18 until Node 20 becomes the active Long Term Support (LTS) version
  • eslint is excluded because some plugins are not compatible with v9
  • eslint-plugin-ava is excluded until we can upgrade to eslint v9

Blockers for Eslint v9:

  • eslint-plugin-import import-js/eslint-plugin-import#2948
  • eslint-plugin-jest
  • eslint-plugin-jsx-a11y
  • eslint-plugin-react-hooks
  • eslint-plugin-testing-library
  • @typescript-eslint/utils

Updating pnpm

Periodically update the version of pnpm used in this repo with the pnpmVersion field in rush.json. See the pnpm releases page for details on new features and fixes. Run rush update with the --recheck flag to pick up any subtle differences in dependency calculation and commit the changes to rush.json as well as any changes in pnpm-lock.yaml.

rush update --recheck
git add rush.json common/config/rush/pnpm-lock.yaml
git commit -m 'build(deps): update pnpm from x to y'

Updating Rush

Periodically update the version of Rush used in this repo with the rushVersion field in rush.json. See the Rush changelog for details on new features and fixes. Run rush update and commit changes to rush.json as well as any scripts modified in common/scripts.

rush update
git add rush.json common/scripts
git commit -m 'build(deps): update rush from x to y'

Footnotes

  1. update-minor and update-major depend on jq (with Homebrew: brew install jq) 2