This project is managed by projen, a project configuration management tool.
- Always use projen for task execution: Run tasks using
npx projen <task-name>instead of directly using npm, yarn, or other package managers. - Check available tasks: Look in
.projen/tasks.jsonto see all available tasks, their descriptions, and steps. - Common tasks:
npx projen- Synthesize project configuration filesnpx projen build- Builds the project, including running testsnpx projen test- Runs tests onlynpx projen compile- Compiles the source code only
- DO NOT manually edit generated files: Files marked with a comment like "~~ Generated by projen. To modify..." should never be edited directly.
- Modify configuration in .projenrc: To change project configuration, always edit the
.projenrc.ts,.projenrc.pyor.projenrc.jsonetc. file and then runnpx projento regenerate the project files. - Check .projenrc first: Before suggesting changes to package.json, tsconfig.json, or other configuration files, always check if these are managed by projen and suggest changes to .projenrc instead.
- Add dependencies through projen: Use the projen configuration to add dependencies instead of manually editing package.json or using npm/yarn install directly.
- Example: In .projenrc, use methods like
addDeps(),addDevDeps(), oraddPeerDeps()to add dependencies.
- Make changes to .projenrc configuration file
- Run
npx projento synthesize and update generated files - Review the changes
- Commit both .projenrc and the generated files
This project's configuration is defined in the .projenrc file at the root of the repository. All project metadata, dependencies, scripts, and tooling configuration should be managed through this file.
- Always run build after changes: After modifying any source or test file, run
npx projen buildto ensure your changes compile and pass all tests. - Task completion criteria: A task is not considered complete until:
- All tests pass (
npx projen test) - There are no compilation errors (
npx projen compile) - There are no linting errors (usually part of the build, if not, run the linter defined in tasks.json)
- The full build succeeds (
npx projen build)
- All tests pass (