-
-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathpackage-json-reader.js
39 lines (33 loc) · 944 Bytes
/
package-json-reader.js
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
33
34
35
36
37
38
39
// Manually “tree shaken” from:
// <https://github.com/nodejs/node/blob/6668c4d/lib/internal/modules/package_json_reader.js>
// Last checked on: Jan 6, 2023.
// Removed the native dependency.
// Also: no need to cache, we do that in resolve already.
/**
* @typedef {import('./errors.js').ErrnoException} ErrnoException
*/
import fs from 'node:fs'
import path from 'node:path'
const reader = {read}
export default reader
/**
* @param {string} jsonPath
* @returns {{string: string|undefined}}
*/
function read(jsonPath) {
try {
const string = fs.readFileSync(
path.toNamespacedPath(path.join(path.dirname(jsonPath), 'package.json')),
'utf8'
)
return {string}
} catch (error) {
const exception = /** @type {ErrnoException} */ (error)
if (exception.code === 'ENOENT') {
return {string: undefined}
// Throw all other errors.
/* c8 ignore next 4 */
}
throw exception
}
}