1
+
"use strict";
2
+
Object.defineProperty(exports, "__esModule", { value: true });
3
+
exports.loadPackageJson = exports.findPackageJson = void 0;
4
+
const node_fs_1 = require("node:fs");
5
+
const node_path_1 = require("node:path");
6
+
const node_url_1 = require("node:url");
7
+
const NM = `${node_path_1.sep}node_modules${node_path_1.sep}`;
8
+
const DIST = `${node_path_1.sep}dist${node_path_1.sep}`;
9
+
/**
10
+
* Find the package.json file, either from a TypeScript file somewhere not
11
+
* in a 'dist' folder, or a built and/or installed 'dist' folder.
12
+
*
13
+
* Note: this *only* works if you build your code into `'./dist'`, and that the
14
+
* source path does not also contain `'dist'`! If you don't build into
15
+
* `'./dist'`, or if you have files at `./src/dist/dist.ts`, then this will
16
+
* not work properly!
17
+
*
18
+
* The default `pathFromSrc` option assumes that the calling code lives one
19
+
* folder below the root of the package. Otherwise, it must be specified.
20
+
*
21
+
* Example:
22
+
*
23
+
* ```ts
24
+
* // src/index.ts
25
+
* import { findPackageJson } from 'package-json-from-dist'
26
+
*
27
+
* const pj = findPackageJson(import.meta.url)
28
+
* console.log(`package.json found at ${pj}`)
29
+
* ```
30
+
*
31
+
* If the caller is deeper within the project source, then you must provide
32
+
* the appropriate fallback path:
33
+
*
34
+
* ```ts
35
+
* // src/components/something.ts
36
+
* import { findPackageJson } from 'package-json-from-dist'
37
+
*
38
+
* const pj = findPackageJson(import.meta.url, '../../package.json')
39
+
* console.log(`package.json found at ${pj}`)
40
+
* ```
41
+
*
42
+
* When running from CommmonJS, use `__filename` instead of `import.meta.url`
43
+
*
44
+
* ```ts
45
+
* // src/index.cts
46
+
* import { findPackageJson } from 'package-json-from-dist'
47
+
*
48
+
* const pj = findPackageJson(__filename)
49
+
* console.log(`package.json found at ${pj}`)
50
+
* ```
51
+
*/
52
+
const findPackageJson = (from, pathFromSrc = '../package.json') => {
53
+
const f = typeof from === 'object' || from.startsWith('file://') ?
54
+
(0, node_url_1.fileURLToPath)(from)
55
+
: from;
56
+
const __dirname = (0, node_path_1.dirname)(f);
57
+
const nms = __dirname.lastIndexOf(NM);
58
+
if (nms !== -1) {
59
+
// inside of node_modules. find the dist directly under package name.
60
+
const nm = __dirname.substring(0, nms + NM.length);
61
+
const pkgDir = __dirname.substring(nms + NM.length);
62
+
const pkgName = pkgDir.startsWith('@') ?
63
+
pkgDir.split(node_path_1.sep).slice(0, 2).join(node_path_1.sep)
64
+
: String(pkgDir.split(node_path_1.sep)[0]);
65
+
return (0, node_path_1.resolve)(nm, pkgName, 'package.json');
66
+
}
67
+
else {
68
+
// see if we are in a dist folder.
69
+
const d = __dirname.lastIndexOf(DIST);
70
+
if (d !== -1) {
71
+
return (0, node_path_1.resolve)(__dirname.substring(0, d), 'package.json');
72
+
}
73
+
else {
74
+
return (0, node_path_1.resolve)(__dirname, pathFromSrc);
75
+
}
76
+
}
77
+
};
78
+
exports.findPackageJson = findPackageJson;
79
+
/**
80
+
* Load the package.json file, either from a TypeScript file somewhere not
81
+
* in a 'dist' folder, or a built and/or installed 'dist' folder.
82
+
*
83
+
* Note: this *only* works if you build your code into `'./dist'`, and that the
84
+
* source path does not also contain `'dist'`! If you don't build into
85
+
* `'./dist'`, or if you have files at `./src/dist/dist.ts`, then this will
86
+
* not work properly!
87
+
*
88
+
* The default `pathFromSrc` option assumes that the calling code lives one
89
+
* folder below the root of the package. Otherwise, it must be specified.
90
+
*
91
+
* Example:
92
+
*
93
+
* ```ts
94
+
* // src/index.ts
95
+
* import { loadPackageJson } from 'package-json-from-dist'
96
+
*
97
+
* const pj = loadPackageJson(import.meta.url)
98
+
* console.log(`Hello from ${pj.name}@${pj.version}`)
99
+
* ```
100
+
*
101
+
* If the caller is deeper within the project source, then you must provide
102
+
* the appropriate fallback path:
103
+
*
104
+
* ```ts
105
+
* // src/components/something.ts
106
+
* import { loadPackageJson } from 'package-json-from-dist'
107
+
*
108
+
* const pj = loadPackageJson(import.meta.url, '../../package.json')
109
+
* console.log(`Hello from ${pj.name}@${pj.version}`)
110
+
* ```
111
+
*
112
+
* When running from CommmonJS, use `__filename` instead of `import.meta.url`
113
+
*
114
+
* ```ts
115
+
* // src/index.cts
116
+
* import { loadPackageJson } from 'package-json-from-dist'
117
+
*
118
+
* const pj = loadPackageJson(__filename)
119
+
* console.log(`Hello from ${pj.name}@${pj.version}`)
120
+
* ```
121
+
*/
122
+
const loadPackageJson = (from, pathFromSrc = '../package.json') => JSON.parse((0, node_fs_1.readFileSync)((0, exports.findPackageJson)(from, pathFromSrc), 'utf8'));
123
+
exports.loadPackageJson = loadPackageJson;
124
+
//# sourceMappingURL=index.js.map
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4