-
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathverify-node-modules.mjs
More file actions
32 lines (28 loc) · 910 Bytes
/
verify-node-modules.mjs
File metadata and controls
32 lines (28 loc) · 910 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import { existsSync, readFileSync } from 'node:fs'
import { fileURLToPath } from 'node:url'
import { dirname, join } from 'node:path'
const root = join(dirname(fileURLToPath(import.meta.url)), '..')
const nm = join(root, 'node_modules')
if (!existsSync(nm)) {
console.error('verify-node-modules: node_modules directory not found.')
process.exit(1)
}
const pkg = JSON.parse(readFileSync(join(root, 'package.json'), 'utf8'))
const deps = {
...pkg.dependencies,
...pkg.devDependencies,
...(pkg.optionalDependencies ?? {}),
}
for (const name of Object.keys(deps)) {
const segments = name.split('/')
const pkgDir =
name.startsWith('@') && segments.length >= 2
? join(nm, segments[0], segments[1])
: join(nm, name)
if (!existsSync(pkgDir)) {
console.error(
`verify-node-modules: missing installed package "${name}" (expected ${pkgDir})`,
)
process.exit(1)
}
}