ESLint plugin for enterprise-strength TypeScript packages
⚠️ NOTE: This README file is templatized and does not include information about how to use this repository template.
Overview
·
Getting Started
·
Development
·
Testing
·
Publishing
·
Contact
·
License
This project includes the following features:
Accessibility
- Accessibility testing
- WCAG compliance
Architecture
- Framework agnosticism (WebComponents)
- Module Federation (micro-frontend architecture)
- Zero-trust architecture
Design
- Atomic Design principles
- Design tokens
- Mobile-first styling
- Responsive layouts
- View Transitions API
Development
- Automated scaffolding
- ESLint/Stylelint editor integration (VSCode, Webstorm/IntelliJ)
- Component-driven UI Library
- Just-In-Time CSS compilation
- Centralized build pipeline
- Plug'n'play
- Intrinsic CI/CD pipeline
- Strong type-checking
Infrastructure
- Bucket versioning
- Managed services
- Multi-regional redundancy
- Zero-downtime deployment strategy (e.g. blue/green, canary)
Performance
- Code splitting
- Edge caching
- Lazy-loading
- Static/Server-side Rendering
- Web Vitals
Project Management
- Clean commit history
- Demoable PRs
- Issue template
- Pull request template
- Semantically versioned releases
Testing
- Enforced coverage thresholds (80% functional)
- Unit/integration testing (Jest, @testing-library/react)
- Snapshot testing
- Visual regression testing (Playwrite)
- Coverage reporting
Follow these steps to get the project up and running on your local machine:
- Node v21+
- NPM v10+
git clone git@github.com:RobHameetman/eslint-plugin
cd eslint-plugin
npm run setup
For VSCode, save the following as editor.code-workspace
in the project root
directory:
{
"folders": [
{
"path": "."
}
],
"settings": {
"editor.rulers": [
80,
120
],
"eslint.nodeEnv": "development",
"files.autoSave": "onFocusChange",
"yaml.format.enable": true,
"yaml.format.singleQuote": true,
},
}
npm run build
: Create a production build artifact.npm run format
: Perform static analysis and auto-fix errors.npm run reset
: Perform a fullnode_modules/
reset.npm run setup
: Set up the project for development.npm test
: Execute the Jest test suite.
Variable | Required | Description |
---|---|---|
APP_NAME |
Yes | The name of this service. Used as the namespace for exposed remotes, as well as for logging and rendering. |
APP_DEBUG |
No | Print extra information to the browser console to debug redundant re-rendering issues.1 |
APP_ENDPOINT |
Yes | Used as the base URL for fetching data from the backend. Add more env variables below. |
Variable | Required | Description |
---|---|---|
HOST |
No | The host used by Webpack Dev Server to serve the application for local development. Default host is localhost .2 |
PORT |
No | The port used by Webpack Dev Server to serve the application for local development. Default port is 8080 . |
PUBLIC_PATH |
No | Used by Wepback Dev Server to retrieve chunks from the chunk graph. |
ANALYZE_BUNDLE |
No | Set to true to enable webpack-bundle-analyzer . |
SERVE_FROM_DISK |
No | Set to true to write to disk when running Webpack Dev Server. |
This project uses the following tiers of testing:
- Unit & Integration Tests: Use
npm run test
to run all tests.
These commands accept additional inputs following a --
modifier as in the
common use-case examples below:
npm run test -- --watch
: Watch for changes and re-run all tests.npm run test -- src/path/to/test.spec.ts
: Run tests in a specific test file.
Creating and merging PRs will create new package versions that you can monitor by vising the Actions tab in Github.
alpha
: Used for manual testing in other packagesbeta
: Used for UAT and testing by external consumersnext
: Everything that will be included in the next major version release
This project uses SemVer for versioning. For the versions available, see the tags on this repository.
An beta
pre-release version will be published whenever you create a PR and
incremented as you update your changes. Once the PR is merged, a release version
is created automatically. This is handled with semantic-release
.
Major versions should have a corresponding release in Github. Click here to create a new release once your version meets acceptance criteria.
For inquiries and additional information, please reach out to:
Rob Hameetman
Front End Architect | Chicago, IL
engineering@robhameetman.com
Distributed under the MIT License.
See the LICENSE file for details.