@@ -18,7 +18,7 @@ setup: ## Full development setup
1818 fi
1919 @mkdir -p tmp/rack-cache-body tmp/rack-cache-meta
2020 @echo " Setting up frontend..."
21- @cd frontend && npm install
21+ @cd frontend && CI=1 pnpm install --frozen-lockfile
2222 @echo " Setup complete!"
2323
2424dev : # # Start development server with live reload
@@ -29,26 +29,26 @@ dev-ruby: ## Start Ruby server only
2929 @bin/dev-ruby
3030
3131dev-frontend : # # Start frontend dev server only
32- @cd frontend && npm run dev
32+ @cd frontend && pnpm run dev
3333
3434test : # # Run all tests (Ruby + Frontend)
3535 bundle exec rspec
36- @cd frontend && npm run test:ci
36+ @cd frontend && pnpm run test:ci
3737
3838test-ruby : # # Run Ruby tests only
3939 bundle exec rspec
4040
4141test-frontend : # # Run frontend tests only
42- @cd frontend && npm run test:ci
42+ @cd frontend && pnpm run test:ci
4343
4444test-frontend-unit : # # Run frontend unit tests only
45- @cd frontend && npm run test:unit
45+ @cd frontend && pnpm run test:unit
4646
4747test-frontend-contract : # # Run frontend contract tests only
48- @cd frontend && npm run test:contract
48+ @cd frontend && pnpm run test:contract
4949
5050test-frontend-e2e : # # Run frontend Playwright smoke tests
51- @cd frontend && npm run test:e2e
51+ @cd frontend && pnpm run test:e2e
5252
5353check-frontend : # # Run frontend typecheck, format, and test checks
5454 $(MAKE ) lint-js
@@ -67,11 +67,15 @@ lint-ruby: ## Run Ruby linter (RuboCop) - errors when issues found
6767 bundle exec rake yard:verify_public_docs
6868 @echo " Ruby linting complete!"
6969
70- lint-js : # # Run JavaScript/Frontend linter ( Prettier) - errors when issues found
70+ lint-js : # # Run JavaScript/Frontend linting (TypeScript + ESLint + Stylelint + Prettier) - errors when issues found
7171 @echo " Running TypeScript typecheck..."
72- @cd frontend && npm run typecheck
72+ @cd frontend && pnpm run typecheck
73+ @echo " Running ESLint..."
74+ @cd frontend && pnpm run lint
75+ @echo " Running Stylelint..."
76+ @cd frontend && pnpm exec stylelint " ../public/shared-ui.css" " **/*.css"
7377 @echo " Running Prettier format check..."
74- @cd frontend && npm run format:check
78+ @cd frontend && pnpm run format:check
7579 @echo " JavaScript linting complete!"
7680
7781lintfix : lintfix-ruby lintfix-js # # Auto-fix all linting issues (Ruby + Frontend)
@@ -83,8 +87,10 @@ lintfix-ruby: ## Auto-fix Ruby linting issues
8387 @echo " Ruby lintfix complete!"
8488
8589lintfix-js : # # Auto-fix JavaScript/Frontend linting issues
90+ @echo " Running ESLint auto-fix..."
91+ @cd frontend && pnpm run lint:fix
8692 @echo " Running Prettier formatting..."
87- @cd frontend && npm run format
93+ @cd frontend && pnpm run format
8894 @echo " JavaScript lintfix complete!"
8995
9096quick-check : # # Fast local checks (Ruby lint/docs + frontend format/typecheck)
@@ -110,10 +116,10 @@ openapi-verify: ## Regenerate OpenAPI and fail if public/openapi.yaml or fronten
110116 $(MAKE ) openapi-client-verify
111117
112118openapi-client : # # Generate frontend OpenAPI client/types from public/openapi.yaml
113- @cd frontend && npm run openapi:generate
119+ @cd frontend && pnpm run openapi:generate
114120
115121openapi-client-verify : # # Generate frontend OpenAPI client and fail if generated files are stale
116- @cd frontend && npm run openapi:verify
122+ @cd frontend && pnpm run openapi:verify
117123
118124openapi-lint : openapi-lint-redocly openapi-lint-spectral # # Lint public/openapi.yaml with Redocly and Spectral
119125
@@ -132,5 +138,5 @@ clean: ## Clean temporary files
132138
133139frontend-setup : # # Setup frontend dependencies
134140 @echo " Setting up frontend dependencies..."
135- @cd frontend && npm install
141+ @cd frontend && CI=1 pnpm install --frozen-lockfile
136142 @echo " Frontend setup complete!"
0 commit comments