tsconfck
A utility to find and parse tsconfig files without depending on typescript
Why
Because no simple official api exists and tsconfig.json isn't actual json.
Features
Install
npm install --save-dev tsconfck # or pnpm, yarn
Usage
without typescript installed
import { parse } from 'tsconfck';
const {
tsconfigFile,
tsconfig,
extended,
solution,
referenced
} = await parse('foo/bar.ts');
with typescript
import { parseNative } from 'tsconfck';
const {
tsconfigFile,
tsconfig,
result,
solution,
referenced
} = await parseNative('foo/bar.ts');
API
see API-DOCS
Advanced
caching
You can use a map to cache results and avoid reparsing if you process multiple ts files that share few tsconfig files
import { parse } from 'tsconfck';
const cache = new Map();
const fooResult = await parse('src/foo.ts', { cache });
const barResult = await parse('src/bar.ts', { cache });
You are responsible for clearing the cache if tsconfig files change on disk during its lifetime.
Always clear the whole cache if anything changes as objects in the cache can ref each other
Returned results are direct cache objects.
If you want to modify them, deep-clone first.
error handling
find and parse reject for all errors they encounter.
For parse, you can choose to resolve with an empty result instead if no tsconfig file was found
import { parse } from 'tsconfck';
const result = await parse('some/path/without/tsconfig/foo.ts', {
resolveWithEmptyIfConfigNotFound: true
});
TSConfig type (optional, requires typescript as devDependency)
import type { TSConfig } from 'pkg-types';
Check out https://github.com/unjs/pkg-types
cli
A simple cli wrapper is included, you can use it like this
find
# prints /path/to/tsconfig.json on stdout
tsconfck find src/index.ts
parse
# print content of ParseResult.tsconfig on stdout
tsconfck parse src/index.ts
# print to file
tsconfck parse src/index.ts > output.json
parse-result
# print content of ParseResult on stdout
tsconfck parse-result src/index.ts
# print to file
tsconfck parse-result src/index.ts > output.json
help
# print usage
tsconfck -h # or --help, -?, help
Links
Develop
This repo uses
In addition to default commit-msg prefixes you can use 'wip: ' for commit messages in branches.
PRs are going to be squash-merged
# install dependencies
pnpm install
# run tests
pnpm test
#run tests in watch mode (doesn't require dev in parallel)
pnpm test:watch
License
MIT