Skip to content

Commit 5a77dcc

Browse files
committedJan 12, 2025·
Fix case of node ../../node_modules/.bin/executable (resolves #908)
1 parent 959b64c commit 5a77dcc

File tree

8 files changed

+20
-6
lines changed

8 files changed

+20
-6
lines changed
 

‎packages/knip/fixtures/workspaces-tooling/node_modules/@swc/register/index.js

Whitespace-only changes.

‎packages/knip/fixtures/workspaces-tooling/node_modules/@swc/register/package.json

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎packages/knip/fixtures/workspaces-tooling/node_modules/typeorm/index.js

Whitespace-only changes.

‎packages/knip/fixtures/workspaces-tooling/node_modules/typeorm/package.json

+4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
{
22
"name": "@workspaces-tooling/backend",
33
"scripts": {
4-
"lint": "eslint"
4+
"lint": "eslint",
5+
"typeorm": "node --require @swc/register ../../node_modules/.bin/typeorm"
56
},
67
"devDependencies": {
78
"eslint": "*",
8-
"eslint-config-custom": "*"
9+
"eslint-config-custom": "*",
10+
"typeorm": "*",
11+
"@swc/register": "*"
912
}
1013
}

‎packages/knip/src/binaries/plugins.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { pluginArgsMap } from '../plugins.js';
33
import type { BinaryResolver } from '../types/config.js';
44
import { compact } from '../util/array.js';
55
import { toBinary, toConfig, toDeferResolve, toDeferResolveEntry, toEntry } from '../util/input.js';
6+
import { extractBinary } from '../util/modules.js';
67
import { resolve as fallbackResolve } from './fallback.js';
78

89
const isGlobLikeMatch = /(^!|[*+\\(|{^$])/;
@@ -38,7 +39,10 @@ export const resolve: BinaryResolver = (binary, _args, options) => {
3839
if (opts.positional && parsed._[0]) {
3940
const id = parsed._[0]; // let's start out safe, but sometimes we'll want more
4041
if (isGlobLike(id)) positionals.push(toEntry(id));
41-
else positionals.push(toDeferResolveEntry(id));
42+
else {
43+
if (id.includes('node_modules/.bin/')) positionals.push(toBinary(extractBinary(id)));
44+
else positionals.push(toDeferResolveEntry(id));
45+
}
4246
}
4347

4448
const mapToParsedKey = (id: string) => parsed[id];

‎packages/knip/src/util/modules.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export const isStartsLikePackageName = (specifier: string) => /^(@[a-z0-9._]|[a-
2323

2424
export const stripVersionFromSpecifier = (specifier: string) => specifier.replace(/(\S+)@.*/, '$1');
2525

26-
const stripNodeModulesFromPath = (command: string) => command.replace(/^(\.\/)?node_modules\//, '');
26+
const stripNodeModulesFromPath = (command: string) => command.replace(/(?:\.{0,2}\/)*node_modules\//, '');
2727

2828
export const extractBinary = (command: string) =>
2929
stripVersionFromSpecifier(

‎packages/knip/test/util/get-inputs-from-scripts.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ test('getInputsFromScripts (node -r)', () => {
6363
t('node --experimental-loader ts-node/esm/transpile-only script.js', [toBinary('node'), toDeferResolveEntry('script.js'), toDeferResolve('ts-node/esm/transpile-only')]);
6464
t('node -r @scope/package/register ./dir', [toBinary('node'), toDeferResolveEntry('./dir'), toDeferResolve('@scope/package/register')]);
6565
t('node -r @scope/package/register ./dir/index', [toBinary('node'), toDeferResolveEntry('./dir/index'), toDeferResolve('@scope/package/register')]);
66-
t('node --inspect-brk -r pkg/register node_modules/.bin/exec --runInBand', [toBinary('node'), toDeferResolveEntry('node_modules/.bin/exec'), toDeferResolve('pkg/register')]);
67-
t('node -r ts-node/register node_modules/.bin/jest', [toBinary('node'), toDeferResolveEntry('node_modules/.bin/jest'), toDeferResolve('ts-node/register')]);
66+
t('node --inspect-brk -r pkg/register node_modules/.bin/exec --runInBand', [toBinary('node'), toBinary('exec'), toDeferResolve('pkg/register')]);
67+
t('node -r ts-node/register node_modules/.bin/jest', [toBinary('node'), toBinary('jest'), toDeferResolve('ts-node/register')]);
6868
});
6969

7070
test('getInputsFromScripts (ts-node)', () => {

0 commit comments

Comments
 (0)
Please sign in to comment.