repl: check for NODE_REPL_EXTERNAL_MODULE

PR-URL: https://github.com/nodejs/node/pull/29778
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com>
This commit is contained in:
Gus Caplan 2019-09-26 15:58:49 -07:00
parent 06f6d662f6
commit c0305af2c4
No known key found for this signature in database
GPG Key ID: F00BD11880E82F0E
5 changed files with 64 additions and 32 deletions

View File

@ -1121,6 +1121,14 @@ Path to the file used to store the persistent REPL history. The default path is
`~/.node_repl_history`, which is overridden by this variable. Setting the value
to an empty string (`''` or `' '`) disables persistent REPL history.
### `NODE_REPL_EXTERNAL_MODULE=file`
<!-- YAML
added: REPLACEME
-->
Path to a Node.js module which will be loaded in place of the built-in REPL.
Overriding this value to an empty string (`''`) will use the built-in REPL.
### `NODE_TLS_REJECT_UNAUTHORIZED=value`
If `value` equals `'0'`, certificate validation is disabled for TLS connections.

View File

@ -19,6 +19,11 @@ prepareMainThreadExecution();
markBootstrapComplete();
if (process.env.NODE_REPL_EXTERNAL_MODULE) {
require('internal/modules/cjs/loader')
.Module
._load(process.env.NODE_REPL_EXTERNAL_MODULE, undefined, true);
} else {
// --input-type flag not supported in REPL
if (getOptionValue('--input-type')) {
// If we can't write to stderr, we'd like to make this a noop,
@ -54,3 +59,4 @@ if (getOptionValue('[has_eval_string]')) {
getOptionValue('--inspect-brk'),
getOptionValue('--print'));
}
}

3
test/fixtures/external-repl-module.js vendored Normal file
View File

@ -0,0 +1,3 @@
'use strict';
console.log('42');

View File

@ -0,0 +1,14 @@
'use strict';
require('../common');
const fixtures = require('../common/fixtures');
const { execSync } = require('child_process');
execSync(process.execPath, {
encoding: 'utf8',
stdio: 'inherit',
env: {
...process.env,
NODE_REPL_EXTERNAL_MODULE: fixtures.path('external-repl-module.js'),
},
});

View File

@ -0,0 +1 @@
42