Skip to content

Commit

Permalink
fix: restore default ext watch behaviour
Browse files Browse the repository at this point in the history
Fixes: #2124
Ref: #1957
  • Loading branch information
remy committed Jul 9, 2023
1 parent af3b9e2 commit 95bee00
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 18 deletions.
1 change: 0 additions & 1 deletion lib/config/defaults.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ const defaults = {
// nodemon.on('stdout/stderr')
stdout: true,
watchOptions: {},
ext: 'js mjs cjs json',
};

if ((process.env.NODE_OPTIONS || '').includes('--loader')) {
Expand Down
43 changes: 26 additions & 17 deletions lib/config/exec.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ function execFromPackage() {
if (pkg.scripts && pkg.scripts.start) {
return { exec: pkg.scripts.start };
}
} catch (e) { }
} catch (e) {}

return null;
}
Expand Down Expand Up @@ -78,8 +78,10 @@ function exec(nodemonOptions, execMap) {

// if there's no script passed, try to get it from the first argument
if (!options.script && (options.args || []).length) {
script = expandScript(options.args[0],
options.ext && ('.' + (options.ext || 'js').split(',')[0]));
script = expandScript(
options.args[0],
options.ext && '.' + (options.ext || 'js').split(',')[0]
);

// if the script was found, shift it off our args
if (script !== options.args[0]) {
Expand All @@ -101,8 +103,7 @@ function exec(nodemonOptions, execMap) {
if (!options.script) {
options.script = found.script;
}
if (Array.isArray(options.args) &&
options.scriptPosition === null) {
if (Array.isArray(options.args) && options.scriptPosition === null) {
options.scriptPosition = options.args.length;
}
}
Expand All @@ -115,8 +116,8 @@ function exec(nodemonOptions, execMap) {

var extension = options.ext;
if (extension === undefined) {
var isJS = scriptExt === 'js' || scriptExt === 'mjs';
extension = (isJS || !scriptExt) ? 'js,mjs' : scriptExt;
var isJS = scriptExt === 'js' || scriptExt === 'mjs' || scriptExt === 'cjs';
extension = isJS || !scriptExt ? 'js,mjs,cjs' : scriptExt;
extension += ',json'; // Always watch JSON files
}

Expand Down Expand Up @@ -147,8 +148,10 @@ function exec(nodemonOptions, execMap) {
});

var newExec = substitution(options.exec);
if (newExec !== options.exec &&
options.exec.indexOf('{{filename}}') !== -1) {
if (
newExec !== options.exec &&
options.exec.indexOf('{{filename}}') !== -1
) {
options.script = null;
}
options.exec = newExec;
Expand All @@ -160,14 +163,16 @@ function exec(nodemonOptions, execMap) {
}
}


if (options.exec === 'node' && options.nodeArgs && options.nodeArgs.length) {
options.execArgs = options.execArgs.concat(options.nodeArgs);
}

// note: indexOf('coffee') handles both .coffee and .litcoffee
if (!execDefined && options.exec === 'node' &&
scriptExt.indexOf('coffee') !== -1) {
if (
!execDefined &&
options.exec === 'node' &&
scriptExt.indexOf('coffee') !== -1
) {
options.exec = 'coffee';

// we need to get execArgs set before the script
Expand All @@ -187,7 +192,9 @@ function exec(nodemonOptions, execMap) {
if (options.exec === 'coffee') {
// don't override user specified extension tracking
if (options.ext === undefined) {
if (extension) { extension += ','; }
if (extension) {
extension += ',';
}
extension += 'coffee,litcoffee';
}

Expand All @@ -203,19 +210,21 @@ function exec(nodemonOptions, execMap) {
// because the terminal will automatically expand the glob against
// the file system :(
extension = (extension.match(/[^,*\s]+/g) || [])
.map(ext => ext.replace(/^\./, ''))
.map((ext) => ext.replace(/^\./, ''))
.join(',');

options.ext = extension;

if (options.script) {
options.script = expandScript(options.script,
extension && ('.' + extension.split(',')[0]));
options.script = expandScript(
options.script,
extension && '.' + extension.split(',')[0]
);
}

options.env = {};
// make sure it's an object (and since we don't have )
if (({}).toString.apply(nodemonOptions.env) === '[object Object]') {
if ({}.toString.apply(nodemonOptions.env) === '[object Object]') {
options.env = utils.clone(nodemonOptions.env);
} else if (nodemonOptions.env !== undefined) {
throw new Error('nodemon env values must be an object: { PORT: 8000 }');
Expand Down

0 comments on commit 95bee00

Please sign in to comment.