Skip to content

Commit c46a956

Browse files
authored
Declare all env vars (#1191)
1 parent 3d103b7 commit c46a956

File tree

2 files changed

+52
-21
lines changed

2 files changed

+52
-21
lines changed

src/index.ts

+49-18
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,37 @@ declare global {
4747
}
4848
}
4949

50+
/** @internal */
51+
export const env = process.env as ProcessEnv
52+
/**
53+
* Declare all env vars, to aid discoverability.
54+
* If an env var affects ts-node's behavior, it should not be buried somewhere in our codebase.
55+
* @internal
56+
*/
57+
export interface ProcessEnv {
58+
TS_NODE_DEBUG?: string
59+
TS_NODE_DIR?: string
60+
TS_NODE_EMIT?: string
61+
TS_NODE_SCOPE?: string
62+
TS_NODE_FILES?: string
63+
TS_NODE_PRETTY?: string
64+
TS_NODE_COMPILER?: string
65+
TS_NODE_COMPILER_OPTIONS?: string
66+
TS_NODE_IGNORE?: string
67+
TS_NODE_PROJECT?: string
68+
TS_NODE_SKIP_PROJECT?: string
69+
TS_NODE_SKIP_IGNORE?: string
70+
TS_NODE_PREFER_TS_EXTS?: string
71+
TS_NODE_IGNORE_DIAGNOSTICS?: string
72+
TS_NODE_TRANSPILE_ONLY?: string
73+
TS_NODE_TYPE_CHECK?: string
74+
TS_NODE_COMPILER_HOST?: string
75+
TS_NODE_LOG_ERROR?: string
76+
TS_NODE_HISTORY?: string
77+
78+
NODE_NO_READLINE?: string
79+
}
80+
5081
/**
5182
* @internal
5283
*/
@@ -63,7 +94,7 @@ function yn (value: string | undefined) {
6394
/**
6495
* Debugging `ts-node`.
6596
*/
66-
const shouldDebug = yn(process.env.TS_NODE_DEBUG)
97+
const shouldDebug = yn(env.TS_NODE_DEBUG)
6798
/** @internal */
6899
export const debug = shouldDebug ?
69100
(...args: any) => console.log(`[ts-node ${new Date().toISOString()}]`, ...args)
@@ -284,23 +315,23 @@ export interface TypeInfo {
284315
* variables.
285316
*/
286317
export const DEFAULTS: RegisterOptions = {
287-
dir: process.env.TS_NODE_DIR,
288-
emit: yn(process.env.TS_NODE_EMIT),
289-
scope: yn(process.env.TS_NODE_SCOPE),
290-
files: yn(process.env.TS_NODE_FILES),
291-
pretty: yn(process.env.TS_NODE_PRETTY),
292-
compiler: process.env.TS_NODE_COMPILER,
293-
compilerOptions: parse(process.env.TS_NODE_COMPILER_OPTIONS),
294-
ignore: split(process.env.TS_NODE_IGNORE),
295-
project: process.env.TS_NODE_PROJECT,
296-
skipProject: yn(process.env.TS_NODE_SKIP_PROJECT),
297-
skipIgnore: yn(process.env.TS_NODE_SKIP_IGNORE),
298-
preferTsExts: yn(process.env.TS_NODE_PREFER_TS_EXTS),
299-
ignoreDiagnostics: split(process.env.TS_NODE_IGNORE_DIAGNOSTICS),
300-
transpileOnly: yn(process.env.TS_NODE_TRANSPILE_ONLY),
301-
typeCheck: yn(process.env.TS_NODE_TYPE_CHECK),
302-
compilerHost: yn(process.env.TS_NODE_COMPILER_HOST),
303-
logError: yn(process.env.TS_NODE_LOG_ERROR),
318+
dir: env.TS_NODE_DIR,
319+
emit: yn(env.TS_NODE_EMIT),
320+
scope: yn(env.TS_NODE_SCOPE),
321+
files: yn(env.TS_NODE_FILES),
322+
pretty: yn(env.TS_NODE_PRETTY),
323+
compiler: env.TS_NODE_COMPILER,
324+
compilerOptions: parse(env.TS_NODE_COMPILER_OPTIONS),
325+
ignore: split(env.TS_NODE_IGNORE),
326+
project: env.TS_NODE_PROJECT,
327+
skipProject: yn(env.TS_NODE_SKIP_PROJECT),
328+
skipIgnore: yn(env.TS_NODE_SKIP_IGNORE),
329+
preferTsExts: yn(env.TS_NODE_PREFER_TS_EXTS),
330+
ignoreDiagnostics: split(env.TS_NODE_IGNORE_DIAGNOSTICS),
331+
transpileOnly: yn(env.TS_NODE_TRANSPILE_ONLY),
332+
typeCheck: yn(env.TS_NODE_TYPE_CHECK),
333+
compilerHost: yn(env.TS_NODE_COMPILER_HOST),
334+
logError: yn(env.TS_NODE_LOG_ERROR),
304335
experimentalEsmLoader: false
305336
}
306337

src/repl.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { homedir } from 'os'
33
import { join } from 'path'
44
import { Recoverable, start } from 'repl'
55
import { Script } from 'vm'
6-
import { Service, CreateOptions, TSError } from './index'
6+
import { Service, CreateOptions, TSError, env } from './index'
77
import { readFileSync, statSync } from 'fs'
88
import { Console } from 'console'
99
import * as tty from 'tty'
@@ -215,7 +215,7 @@ function startRepl (replService: ReplService, service: Service, state: EvalState
215215
input: replService.stdin,
216216
output: replService.stdout,
217217
// Mimicking node's REPL implementation: https://github.com/nodejs/node/blob/168b22ba073ee1cbf8d0bcb4ded7ff3099335d04/lib/internal/repl.js#L28-L30
218-
terminal: (replService.stdout as tty.WriteStream).isTTY && !parseInt(process.env.NODE_NO_READLINE!, 10),
218+
terminal: (replService.stdout as tty.WriteStream).isTTY && !parseInt(env.NODE_NO_READLINE!, 10),
219219
eval: replService.nodeEval,
220220
useGlobal: true
221221
})
@@ -254,7 +254,7 @@ function startRepl (replService: ReplService, service: Service, state: EvalState
254254

255255
// Set up REPL history when available natively via node.js >= 11.
256256
if (repl.setupHistory) {
257-
const historyPath = process.env.TS_NODE_HISTORY || join(homedir(), '.ts_node_repl_history')
257+
const historyPath = env.TS_NODE_HISTORY || join(homedir(), '.ts_node_repl_history')
258258

259259
repl.setupHistory(historyPath, err => {
260260
if (!err) return

0 commit comments

Comments
 (0)