mirror of
https://github.com/oxc-project/oxc.git
synced 2026-09-14 19:36:11 +08:00
a4478e960a
Add `oxc-codegen` package - a printer written in TS. ### Features - Prints JS, JSX, TS, TSX. - Matches `oxc_codegen` exactly on all Test262, TypeScript, Acorn-JSX fixtures. - Very fast. ### Deficiencies - Pretty-printing only (no compact/minified output). - No support for printing comments. - Source map support is semi-there, but largely untested, and poor API (design doc has some ideas on how to improve it). ### This PR adds - The printer code. - Conformance testing infra. - Further tests for edge cases. - README. - Design doc - how it differs from `oxc_codegen` and why, what produces the perf. ### This PR doesn't add - Not integrated into CI or release pipeline. ### Notes This started as a slop port of `oxc_codegen`. I've iterated on that base, cleaned it up a lot, and at least skimmed through all of it. I think it's in fairly decent shape. The design doc is I think worth a read. It explains the rationale for the choices, in particular the "1 codebase, 4 builds" approach. I've put it in a new top-level directory called `packages`. It's not an app, so didn't seem to me to fit alongside `apps/oxlint` and `apps/oxfmt`. It's pure JS, so not like e.g. `napi/parser`. And it felt too heavyweight to put into `npm` dir. But maybe there's a better place for it. Co-authored-by: Cameron <cameron.clark@hey.com>
57 lines
1.4 KiB
JSON
57 lines
1.4 KiB
JSON
{
|
|
"name": "oxc-codegen",
|
|
"version": "0.144.0",
|
|
"description": "Fast JavaScript code generator from an ESTree-compliant AST",
|
|
"keywords": [
|
|
"ast",
|
|
"code generator",
|
|
"codegen",
|
|
"estree",
|
|
"javascript",
|
|
"oxc",
|
|
"typescript"
|
|
],
|
|
"homepage": "https://oxc.rs",
|
|
"bugs": "https://github.com/oxc-project/oxc/issues",
|
|
"license": "MIT",
|
|
"author": "Boshen and oxc contributors",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/oxc-project/oxc.git",
|
|
"directory": "packages/codegen"
|
|
},
|
|
"files": [
|
|
"dist"
|
|
],
|
|
"type": "module",
|
|
"main": "dist/index.js",
|
|
"exports": {
|
|
".": {
|
|
"types": "./dist/index.d.ts",
|
|
"default": "./dist/index.js"
|
|
}
|
|
},
|
|
"publishConfig": {
|
|
"access": "public",
|
|
"registry": "https://registry.npmjs.org/"
|
|
},
|
|
"scripts": {
|
|
"build": "node scripts/build.ts",
|
|
"build-dev": "cross-env DEBUG=true node scripts/build.ts",
|
|
"build-test": "pnpm run build-dev && pnpm --filter oxc-parser run build-test && pnpm --filter oxc-codegen-conformance run build",
|
|
"test": "vitest run --dir ./test"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "catalog:",
|
|
"cross-env": "catalog:",
|
|
"oxc-codegen-conformance": "workspace:*",
|
|
"oxc-parser": "workspace:*",
|
|
"rolldown": "catalog:",
|
|
"tsdown": "catalog:",
|
|
"vitest": "catalog:"
|
|
},
|
|
"engines": {
|
|
"node": "^20.19.0 || >=22.12.0"
|
|
}
|
|
}
|