ํ๊ตญ์ด | English | ไธญๆ | Espaรฑol | ๆฅๆฌ่ช
ํผ๋์ค๋ฌ์ด ์ค์ ์ ์ง์๋ฅผ.
Maximus๋ ํ๋ก์ ํธ ๊ณณ๊ณณ์ ํฉ์ด์ง ์ค์ ํ์ผ์ ์ ๊ฒํ๊ณ , ์ถฉ๋๊ณผ ์ค๋ณต์ ์ ๋ฆฌํ๋ฉฐ ์ง์ ์๋ ๊ฐ๋ฐํ๊ฒฝ์ ๋ง๋๋ CLI์ ๋๋ค.
ํ๋ ํ๋ก์ ํธ๋ tsconfig, eslint, prettier, vite, jest, next.config, .env ๋ฑ ์๋ง์ ์ค์ ์์ ์ ์์ต๋๋ค. Maximus๋ ๋ฌด๋์ง ์ง์๋ฅผ ๋ค์ ์ธ์๋๋ค.
Maximus๋ ์ด์ Rust runtime์ canonical implementation์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
- ๋ฃจํธ
@jeremyfellaz/maximusnpm package๋ thin launcher์ด๋ฉฐ, ์ค์ ์คํ์ ํ๋ซํผ๋ณ prebuilt Rust binary๋ก ์์ํฉ๋๋ค. - publish๋ npm wrapper์ GitHub Action๋ ๊ฐ์ Rust runtime ๊ฒฝ๋ก๋ฅผ ๊ธฐ์ค์ผ๋ก ๋์ํฉ๋๋ค.
- publish๋ npm ์ง์
์ ์
npx @jeremyfellaz/maximus audit,npx @jeremyfellaz/maximus doctor,npx @jeremyfellaz/maximus fix์ด๋ฉฐ, ์ค์น ํ ์คํ๋๋ binary ์ด๋ฆ์ ๊ณ์maximus์ ๋๋ค. - ์ ์ฅ์์
src/**/*.js๋ parity ๊ฒ์ฆ๊ณผ reference ๋น๊ต๋ฅผ ์ํ frozen reference๋ก ๋จ์ ์์ต๋๋ค. native Rust runtime์ด ์์ ๋๋ ์ ํ๋ compatibility fallback์ผ๋ก๋ง ๋จ์ ์์ผ๋ฉฐ, ์ runtime ๊ธฐ๋ฅ์ด๋ ๋ฐฐํฌ ๋์์ ๊ธฐ๋ณธ ๊ตฌํ ํ๋ฉด์ผ๋ก ์ทจ๊ธํ์ง ์์ต๋๋ค.maximus.config.json์๋ ๋ก๋ฉ์ด๋--only๊ฐ์ Rust ์ ์ฉ ๊ธฐ๋ฅ์๋ canonical runtime์ธ Rust๊ฐ ํ์ํฉ๋๋ค. - historical rewrite planning notes๋ maintainer workflow ์์ ๋จ์ ์์ ์ ์์ง๋ง, ๊ณต๊ฐ contributor guidance๋
CONTRIBUTING.md,docs/roadmap.md,docs/runtime-transition.md,docs/architecture/checker-authoring.md๊ฐ์ tracked repo ๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ๋ผ์ผ ํฉ๋๋ค.
์ ํ ๊ฒฝ๊ณ์ contributor ๊ท์น์ runtime transition ๋ฌธ์์์ ํ์ธํ ์ ์์ต๋๋ค.
- ์ค์ ์ถฉ๋ ํ์ง
- ์ค๋ณต config ์์ค ํ์ง
- ์ค๋๋ TypeScript ์ต์ ๊ฒฝ๊ณ
- ์๋ชป ์ฐ๊ฒฐ๋ path alias ๊ฒ์ฌ
- ESLint / Prettier ์ถฉ๋ ๋ถ์
- ํ๊ฒฝ๋ณ์ ๋๋ฝ ๋ฐ mismatch ๊ฒ์ฌ
- ํ๋ก์ ํธ ๊ตฌ์กฐ ๋ฆฌํฌํธ ์์ฑ
npx @jeremyfellaz/maximus audit
npx @jeremyfellaz/maximus doctor
npx @jeremyfellaz/maximus fixํ์ฌ ํ๋ก์ ํธ์ ์ค์ ์ํ๋ฅผ ๊ฒ์ฌํ๊ณ ํต์ฌ ๋ฆฌ์คํฌ๋ฅผ ์์ฝํฉ๋๋ค.
audit๋ณด๋ค ๋ ์ค๋ช
์ ์ธ ์ง๋จ ๋ชจ๋์
๋๋ค. ์ฐ์ ์์์ ๊ตฌ์กฐ ๊ฐ์ ์ ์๊น์ง ํจ๊ป ๋ณด์ฌ์ค๋๋ค.
์์ ํ๊ฒ ์๋ ์์ ํ ์ ์๋ ํญ๋ชฉ๋ง ์ ์ฉํฉ๋๋ค.
ํ์ฌ MVP์์ ์ง์ํ๋ ์๋ ์์ :
.env๊ธฐ๋ฐ.env.example์์ฑ.env.example์ ๋๋ฝ๋ ํค ์ถ๊ฐ
Maximus๋ .env.example ๊ฐ์ contract ํ์ผ์ ๊ณต์ ๊ฐ๋ฅํ ์ธํฐํ์ด์ค๋ก ์ทจ๊ธํฉ๋๋ค. env-example-secret ๊ฒฝ๊ณ ๋ ์ด์ key ์ด๋ฆ๊ณผ value ํํ๋ฅผ ํจ๊ป ๋ด
๋๋ค.
*_TOKEN,*_SECRET,*_PASSWORD,*_SERVICE_KEY,PRIVATE_KEY,*_API_KEY,*_ACCESS_KEY๊ณ์ด key์ placeholder๊ฐ ์๋ ๊ฐ์ด ๋ค์ด ์์ผ๋ฉด ๊ณ์ ๊ฒฝ๊ณ ํฉ๋๋ค.sk_live_,sk_test_,ghp_,github_pat_,xoxb-,xoxp-,xoxa-, AWSAKIA..., GoogleAIza..., private key block์ฒ๋ผ secret ๊ฐ๋ฅ์ฑ์ด ๋์ value ํํ๋ key ์ด๋ฆ๊ณผ ๊ด๊ณ์์ด ๊ฒฝ๊ณ ํฉ๋๋ค.NEXT_PUBLIC_*_CLIENT_ID, URL, repo ์ด๋ฆ, label, date, percent, hour์ฒ๋ผ public/config ์๋ณ์ ์ฑ๊ฒฉ์ด ๊ฐํ key๋ ๊ฐ์ด ๊ธธ๋ค๋ ์ด์ ๋ง์ผ๋ก ๊ฒฝ๊ณ ํ์ง ์์ต๋๋ค.- ๋น ๊ฐ,
change-me,example,placeholder,your-*,localhost,127.0.0.1,true,false,0,1์ placeholder๋ก ์ทจ๊ธํฉ๋๋ค.
๋ก์ปฌ์๋ ์์ง๋ง CI๋ hosting์์ ์ฃผ์
๋๋ env key๋ maximus.config.json ๋๋ .maximusrc.json์์ ๋ช
์ํ ์ ์์ต๋๋ค.
{
"env": {
"ciInjectedKeys": ["GH_COLLECTOR_TOKEN"],
"optionalLocalKeys": ["NEXT_PUBLIC_OKTA_DOMAIN"]
}
}๋ ๋ชฉ๋ก์ env-missing-concrete์์ ์ ์ธํ exact key ๋ชฉ๋ก์
๋๋ค. Glob๋ prefix matching ๊ณ์ฝ์ ์์ผ๋ฏ๋ก VERCEL_* ๊ฐ์ ํจํด ๋์ ์ค์ key ์ด๋ฆ์ ๋ฃ์ผ์ธ์. ์๋ชป๋ config field๋ ์กฐ์ฉํ ๋ฌด์ํ์ง ์๊ณ parse error๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
exclude: ["node_modules"]์ฒ๋ผ TypeScript์ ๊ธฐ๋ณธ ์ ์ธ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ฐ๋ณตํ๋ no-op exclude๋ ๊ธฐ๋ณธ audit ์ถ๋ ฅ์์ ์จ๊น๋๋ค. ๋ฐ๋ฉด generated/**/*.ts, dist/**/*.d.ts์ฒ๋ผ ํ ์๋๊ฐ ๋ด๊ธด non-default exclude๊ฐ ์ค์ included file์ ์ ๊ฑฐํ์ง ๋ชปํ๋ฉด ๊ธฐ์กด์ฒ๋ผ Info finding์ ์ ์งํฉ๋๋ค. include pattern์ด ์๋ฌด ํ์ผ๋ ๋งค์นญํ์ง ์๋ ๊ฒฝ์ฐ์ warning๋ ๊ทธ๋๋ก ์ ์ง๋ฉ๋๋ค.
Maximus audit
๋์: /workspace/my-app
์ํ: ์กฐ์น ํ์
๋ฐ๊ฒฌ ํญ๋ชฉ: ์ค๋ฅ 1๊ฐ, ๊ฒฝ๊ณ 2๊ฐ, ์ ๋ณด 1๊ฐ
์ ์ฉ ๊ฐ๋ฅํ ์์ : 1๊ฐ
๋ฐ๊ฒฌ ํญ๋ชฉ
- [์ค๋ฅ] ๊ฒฝ๋ก alias ๋์์ด ์กด์ฌํ์ง ์์
ํ์ผ: packages/web/tsconfig.json
์์ธ: @ui/*๋ src/missing/*๋ฅผ ๊ฐ๋ฆฌํค์ง๋ง ํด์๋ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
ํํธ: editor์ build ํด์์ ๊นจ๊ธฐ ์ ์ ์ค๋๋ alias๋ฅผ ์์ ํ๊ฑฐ๋ ์ ๊ฑฐํ์ธ์.
- [๊ฒฝ๊ณ ] .env.example ๊ณ์ฝ ํ์ผ ๋๋ฝ
ํ์ผ: .env
์์ธ: ์คํ env ํ์ผ์ ์์ง๋ง .env.example์ด ์์ต๋๋ค.
ํํธ: `maximus fix`๋ฅผ ์คํํด ๋น ๊ณ์ฝ ํ์ผ์ ์์ฑํ์ธ์.
๋ฆด๋ฆฌ์ฆ ํ๊ทธ ์ดํ์๋ ๊ฐ์ npm wrapper ์ง์ ์ ์ GitHub Action์์๋ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
- uses: JeremyDev87/maximus@<release-tag>
with:
command: audit
path: .๊ธฐ๋ณธ ์ ๋ ฅ:
command:audit,doctor,fixpath: ๊ฒ์ฌํ ํ๋ก์ ํธ ๊ฒฝ๋ก, ๊ธฐ๋ณธ๊ฐ.registry-url: pre-release smoke๋ ์ฌ์ค registry ๊ฒ์ฆ์ด ํ์ํ ๋๋ง ์ฐ๋ optional npm registry overriderelease-tag: publish๋ immutable ๋ฆด๋ฆฌ์ฆ ํ๊ทธ๋ฅผ ๋ฃ์ผ์ธ์. ์:v1.0.0. ์์ major tag๊ฐ smoke๋ฅผ ํต๊ณผํ ๋ค์๋v1๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ์ง๋ณด์์๊ฐ ์ค์ alpha/stable ๋ฆด๋ฆฌ์ฆ๋ฅผ ์ค๋นํ๊ฑฐ๋ ๊ฐ์ ํ๊ทธ๋ฅผ ์์ ํ๊ฒ ์ฌ์คํํ ๋๋ release operator runbook์ ๊ธฐ์ค์ผ๋ก ์งํํฉ๋๋ค. Release Drafter๋ master์์ draft notes๋ง ๊ฐฑ์ ํ๋ฉฐ, ์ค์ publish์ major tag promotion์ tag-driven release workflow์ action smoke ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ์ค์ผ๋ก ์งํํฉ๋๋ค.
npm test
cargo test --workspace
node ./bin/maximus.js audit ./test/fixtures/clean-projectnode ./bin/maximus.js๋ repository ์์์ ๋น๋๋ Rust CLI(target/debug/maximus, target/release/maximus)๋ฅผ ์ฐ์ ์คํํ๊ณ , ์์ผ๋ฉด ์ค์น๋ platform-specific Rust binary๋ฅผ ์ฐพ์ต๋๋ค. ๋ก์ปฌ ๋ฐ์ด๋๋ฆฌ๊ฐ ์์ง ์์ผ๋ฉด cargo build -p maximus-cli๋ก ์ค๋นํ ์ ์์ต๋๋ค. Rust runtime์ด ์์ ๋๋ src/**/*.js fallback์ผ๋ก ๊ธฐ๋ณธ audit / doctor / fix --dry-run ํ๋ฆ์ ์ ์ง๋์ง๋ง, config file ์๋ ๋ก๋ฉ๊ณผ --only, --skip, --fail-on ๊ฐ์ Rust ์ ์ฉ ๊ธฐ๋ฅ์ native Rust runtime์ด ํ์ํฉ๋๋ค.
์ด fallback ๊ฒฝ๋ก๋ compatibility ๊ฒ์ฆ๊ณผ reference ์ ์ง ๋ชฉ์ ์ด๋ฉฐ, ์ canonical runtime ๋์์ ์ถ๊ฐํ๋ ๊ธฐ๋ณธ ๊ฐ๋ฐ ํ๋ฉด์ ์๋๋๋ค.
- ๋ชจ๋ ธ๋ ํฌ / ๋ฉํฐํจํค์ง ์ด์ ํ
- ์ค์ ํ์ผ์ด ๋ง์ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์ด ํ
- ์ ๊ท ์ ์ฌ์๊ฐ ์ธํ ์์ ์์ฃผ ๋งํ๋ ํ
์๋ก์ด ์ ๊ฒ๊ธฐ ์ถ๊ฐ, ์๋ ์์ ์์ ์ฑ ๊ฐ์ , false positive ๊ฐ์ ๊ฐ์ ๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค. ๋ค๋ง canonical runtime๊ณผ ๋ฐฐํฌ ํ๋ฉด์ ์ด์ Rust ๊ธฐ์ค์ด๋ฉฐ, src/**/*.js๋ frozen reference๋ก ์ ์ง๋ฉ๋๋ค. ๊ธฐ์ฌ ์์ ์ ์๋ CONTRIBUTING.md์ runtime transition ๋ฌธ์๋ฅผ ๋จผ์ ํ์ธํด ์ฃผ์ธ์.
์ฒด์ปค๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ๊ธฐ์กด checker์ ์ฐ๊ฒฐ ๊ตฌ์กฐ๋ฅผ ํ์ธํ ๋๋ checker authoring ์ํคํ ์ฒ ๋ฌธ์๋ ํจ๊ป ๋ณด์๋ฉด ํ์ฌ Rust crate ๊ฒฝ๊ณ๋ฅผ ๋น ๋ฅด๊ฒ ๋ง์ถ ์ ์์ต๋๋ค.
ํ์ฌ ์ ์ฅ์ ๊ธฐ์ค์ผ๋ก ์ด๋์ ์์ํ๋ฉด ์ข์์ง ๋น ๋ฅด๊ฒ ์ก๊ณ ์ถ๋ค๋ฉด contributor roadmap, good first issues, checker ideas๋ฅผ ๊ฐ์ด ๋ณด์๋ฉด ์ข์ต๋๋ค. ์ด ๋ฌธ์๋ค์ ์ด๋ฏธ ๊ตฌํ๋ ํ๋ฉด๊ณผ ์์ง backlog์ธ ์ฃผ์ ๋ฅผ ๊ตฌ๋ถํด์ ์๋ดํฉ๋๋ค.
๋ฆด๋ฆฌ์ฆ ์ ์ฐจ, alpha/stable ์น๊ฒฉ ์์, tag rerun ๊ท์น์ release operator runbook์ ๋ฐ๋ก ์ ๋ฆฌ๋์ด ์์ต๋๋ค.
๋ณด์ ์ด์๊ฐ ์์ฌ๋๋ค๋ฉด ๊ณต๊ฐ ์ด์๋ถํฐ ์ด์ง ๋ง๊ณ SECURITY.md์ ๋น๊ณต๊ฐ ์ ๊ณ ์ ์ฐจ๋ฅผ ๋ฐ๋ผ ์ฃผ์ธ์.
Maximus๊ฐ ํ์ ์ค์ ํผ๋์ ์ค์ด๋ ๋ฐ ๋์์ด ๋๋ค๋ฉด GitHub Sponsors๋ฅผ ํตํด ์ ์ง๋ณด์๋ฅผ ํ์ํ ์ ์์ต๋๋ค.
Maximus๋ MIT License๋ก ๋ฐฐํฌ๋ฉ๋๋ค.