@modern-js/app-tools 2.63.2 → 2.63.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. package/dist/cjs/compat/hooks.js +16 -1
  2. package/dist/cjs/compat/index.js +3 -1
  3. package/dist/cjs/compat/utils.js +29 -8
  4. package/dist/cjs/plugins/deploy/platforms/netlify.js +7 -4
  5. package/dist/cjs/plugins/deploy/platforms/node.js +6 -3
  6. package/dist/cjs/plugins/deploy/platforms/vercel.js +7 -4
  7. package/dist/esm/compat/hooks.js +83 -24
  8. package/dist/esm/compat/index.js +4 -2
  9. package/dist/esm/compat/utils.js +29 -8
  10. package/dist/esm/plugins/deploy/platforms/netlify.js +6 -3
  11. package/dist/esm/plugins/deploy/platforms/node.js +5 -2
  12. package/dist/esm/plugins/deploy/platforms/vercel.js +6 -3
  13. package/dist/esm-node/compat/hooks.js +16 -1
  14. package/dist/esm-node/compat/index.js +4 -2
  15. package/dist/esm-node/compat/utils.js +29 -8
  16. package/dist/esm-node/plugins/deploy/platforms/netlify.js +6 -3
  17. package/dist/esm-node/plugins/deploy/platforms/node.js +5 -2
  18. package/dist/esm-node/plugins/deploy/platforms/vercel.js +6 -3
  19. package/dist/types/compat/utils.d.ts +8 -1
  20. package/package.json +19 -23
  21. package/dist/cjs/plugins/deploy/dependencies/index.js +0 -237
  22. package/dist/cjs/plugins/deploy/dependencies/utils.js +0 -179
  23. package/dist/cjs/plugins/deploy/exports.js +0 -28
  24. package/dist/esm/plugins/deploy/dependencies/index.js +0 -615
  25. package/dist/esm/plugins/deploy/dependencies/utils.js +0 -421
  26. package/dist/esm/plugins/deploy/exports.js +0 -4
  27. package/dist/esm-node/plugins/deploy/dependencies/index.js +0 -202
  28. package/dist/esm-node/plugins/deploy/dependencies/utils.js +0 -137
  29. package/dist/esm-node/plugins/deploy/exports.js +0 -4
  30. package/dist/types/plugins/deploy/dependencies/index.d.ts +0 -20
  31. package/dist/types/plugins/deploy/dependencies/utils.d.ts +0 -44
  32. package/dist/types/plugins/deploy/exports.d.ts +0 -1
@@ -1,421 +0,0 @@
1
- import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
2
- import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
3
- import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
4
- import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
5
- import os from "node:os";
6
- import path from "path";
7
- import { fs as fse } from "@modern-js/utils";
8
- import { nodeFileTrace, resolve } from "@vercel/nft";
9
- import { parseNodeModulePath } from "mlly";
10
- function applyPublicCondition(pkg) {
11
- var _pkg_publishConfig;
12
- if (pkg === null || pkg === void 0 ? void 0 : (_pkg_publishConfig = pkg.publishConfig) === null || _pkg_publishConfig === void 0 ? void 0 : _pkg_publishConfig.exports) {
13
- var _pkg_publishConfig1;
14
- pkg.exports = pkg === null || pkg === void 0 ? void 0 : (_pkg_publishConfig1 = pkg.publishConfig) === null || _pkg_publishConfig1 === void 0 ? void 0 : _pkg_publishConfig1.exports;
15
- }
16
- }
17
- var writePackage = function() {
18
- var _ref = _async_to_generator(function(options) {
19
- var pkg, version, projectDir, _pkgPath, pkgPath, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, src, subpath, dest, dirname, subpath1, dest1, dirname1, err, pkgJSON, packageJsonPath;
20
- return _ts_generator(this, function(_state) {
21
- switch (_state.label) {
22
- case 0:
23
- pkg = options.pkg, version = options.version, projectDir = options.projectDir, _pkgPath = options._pkgPath;
24
- pkgPath = _pkgPath || pkg.name;
25
- _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
26
- _state.label = 1;
27
- case 1:
28
- _state.trys.push([
29
- 1,
30
- 10,
31
- 11,
32
- 12
33
- ]);
34
- _iterator = pkg.versions[version].files[Symbol.iterator]();
35
- _state.label = 2;
36
- case 2:
37
- if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done))
38
- return [
39
- 3,
40
- 9
41
- ];
42
- src = _step.value;
43
- if (!src.includes("node_modules"))
44
- return [
45
- 3,
46
- 5
47
- ];
48
- subpath = parseNodeModulePath(src).subpath;
49
- dest = path.join(projectDir, "node_modules", pkgPath, subpath);
50
- dirname = path.dirname(dest);
51
- return [
52
- 4,
53
- fse.ensureDir(dirname)
54
- ];
55
- case 3:
56
- _state.sent();
57
- return [
58
- 4,
59
- fse.copyFile(src, dest)
60
- ];
61
- case 4:
62
- _state.sent();
63
- return [
64
- 3,
65
- 8
66
- ];
67
- case 5:
68
- subpath1 = path.relative(pkg.versions[version].path, src);
69
- dest1 = path.join(projectDir, "node_modules", pkgPath, subpath1);
70
- dirname1 = path.dirname(dest1);
71
- return [
72
- 4,
73
- fse.ensureDir(dirname1)
74
- ];
75
- case 6:
76
- _state.sent();
77
- return [
78
- 4,
79
- fse.copyFile(src, dest1)
80
- ];
81
- case 7:
82
- _state.sent();
83
- _state.label = 8;
84
- case 8:
85
- _iteratorNormalCompletion = true;
86
- return [
87
- 3,
88
- 2
89
- ];
90
- case 9:
91
- return [
92
- 3,
93
- 12
94
- ];
95
- case 10:
96
- err = _state.sent();
97
- _didIteratorError = true;
98
- _iteratorError = err;
99
- return [
100
- 3,
101
- 12
102
- ];
103
- case 11:
104
- try {
105
- if (!_iteratorNormalCompletion && _iterator.return != null) {
106
- _iterator.return();
107
- }
108
- } finally {
109
- if (_didIteratorError) {
110
- throw _iteratorError;
111
- }
112
- }
113
- return [
114
- 7
115
- ];
116
- case 12:
117
- pkgJSON = pkg.versions[version].pkgJSON;
118
- applyPublicCondition(pkgJSON);
119
- packageJsonPath = path.join(projectDir, "node_modules", pkgPath, "package.json");
120
- return [
121
- 4,
122
- fse.ensureDir(path.dirname(packageJsonPath))
123
- ];
124
- case 13:
125
- _state.sent();
126
- return [
127
- 4,
128
- fse.writeFile(packageJsonPath, JSON.stringify(pkgJSON, null, 2))
129
- ];
130
- case 14:
131
- _state.sent();
132
- return [
133
- 2
134
- ];
135
- }
136
- });
137
- });
138
- return function writePackage2(options) {
139
- return _ref.apply(this, arguments);
140
- };
141
- }();
142
- var isWindows = os.platform() === "win32";
143
- var linkPackage = function() {
144
- var _ref = _async_to_generator(function(from, to, projectRootDir) {
145
- var src, dest, dstStat, exists;
146
- return _ts_generator(this, function(_state) {
147
- switch (_state.label) {
148
- case 0:
149
- src = path.join(projectRootDir, "node_modules", from);
150
- dest = path.join(projectRootDir, "node_modules", to);
151
- return [
152
- 4,
153
- fse.lstat(dest).catch(function() {
154
- return null;
155
- })
156
- ];
157
- case 1:
158
- dstStat = _state.sent();
159
- exists = dstStat === null || dstStat === void 0 ? void 0 : dstStat.isSymbolicLink();
160
- if (exists) {
161
- return [
162
- 2
163
- ];
164
- }
165
- return [
166
- 4,
167
- fse.mkdir(path.dirname(dest), {
168
- recursive: true
169
- })
170
- ];
171
- case 2:
172
- _state.sent();
173
- return [
174
- 4,
175
- fse.symlink(path.relative(path.dirname(dest), src), dest, isWindows ? "junction" : "dir").catch(function(error) {
176
- console.error("Cannot link", from, "to", to, error);
177
- })
178
- ];
179
- case 3:
180
- _state.sent();
181
- return [
182
- 2
183
- ];
184
- }
185
- });
186
- });
187
- return function linkPackage2(from, to, projectRootDir) {
188
- return _ref.apply(this, arguments);
189
- };
190
- }();
191
- var readDirRecursive = function() {
192
- var _ref = _async_to_generator(function(dir) {
193
- var options, filter, files, filesAndDirs;
194
- var _arguments = arguments;
195
- return _ts_generator(this, function(_state) {
196
- switch (_state.label) {
197
- case 0:
198
- options = _arguments.length > 1 && _arguments[1] !== void 0 ? _arguments[1] : {};
199
- filter = options.filter;
200
- return [
201
- 4,
202
- fse.readdir(dir, {
203
- withFileTypes: true
204
- })
205
- ];
206
- case 1:
207
- files = _state.sent();
208
- return [
209
- 4,
210
- Promise.all(files.map(function() {
211
- var _ref2 = _async_to_generator(function(file) {
212
- var resolvedPath;
213
- return _ts_generator(this, function(_state2) {
214
- resolvedPath = path.resolve(dir, file.name);
215
- if (file.isDirectory()) {
216
- return [
217
- 2,
218
- readDirRecursive(resolvedPath, options)
219
- ];
220
- } else {
221
- return [
222
- 2,
223
- filter && !filter(resolvedPath) ? [] : resolvedPath
224
- ];
225
- }
226
- return [
227
- 2
228
- ];
229
- });
230
- });
231
- return function(file) {
232
- return _ref2.apply(this, arguments);
233
- };
234
- }()))
235
- ];
236
- case 2:
237
- filesAndDirs = _state.sent();
238
- return [
239
- 2,
240
- filesAndDirs.flat()
241
- ];
242
- }
243
- });
244
- });
245
- return function readDirRecursive2(dir) {
246
- return _ref.apply(this, arguments);
247
- };
248
- }();
249
- var isFile = function() {
250
- var _ref = _async_to_generator(function(file) {
251
- var stat, error;
252
- return _ts_generator(this, function(_state) {
253
- switch (_state.label) {
254
- case 0:
255
- _state.trys.push([
256
- 0,
257
- 2,
258
- ,
259
- 3
260
- ]);
261
- return [
262
- 4,
263
- fse.stat(file)
264
- ];
265
- case 1:
266
- stat = _state.sent();
267
- return [
268
- 2,
269
- stat.isFile()
270
- ];
271
- case 2:
272
- error = _state.sent();
273
- if (error.code === "ENOENT") {
274
- return [
275
- 2,
276
- false
277
- ];
278
- }
279
- throw error;
280
- case 3:
281
- return [
282
- 2
283
- ];
284
- }
285
- });
286
- });
287
- return function isFile2(file) {
288
- return _ref.apply(this, arguments);
289
- };
290
- }();
291
- var findEntryFiles = function() {
292
- var _ref = _async_to_generator(function(rootDir, entryFilter) {
293
- var files;
294
- return _ts_generator(this, function(_state) {
295
- switch (_state.label) {
296
- case 0:
297
- return [
298
- 4,
299
- readDirRecursive(rootDir, {
300
- filter: entryFilter
301
- })
302
- ];
303
- case 1:
304
- files = _state.sent();
305
- return [
306
- 2,
307
- files.filter(function(file) {
308
- return file.endsWith(".mjs") || file.endsWith(".cjs") || file.endsWith(".js");
309
- })
310
- ];
311
- }
312
- });
313
- });
314
- return function findEntryFiles2(rootDir, entryFilter) {
315
- return _ref.apply(this, arguments);
316
- };
317
- }();
318
- var findPackageParents = function(pkg, version, tracedFiles) {
319
- var versionFiles = pkg.versions[version].files.map(function(path2) {
320
- return tracedFiles[path2];
321
- });
322
- var parentPkgs = _to_consumable_array(new Set(versionFiles.flatMap(function(file) {
323
- return (
324
- // Because it supports copyWholePackage configuration, not all files exist.
325
- file === null || file === void 0 ? void 0 : file.parents.map(function(parentPath) {
326
- var parentFile = tracedFiles[parentPath];
327
- if (!parentFile || parentFile.pkgName === pkg.name) {
328
- return null;
329
- }
330
- return "".concat(parentFile.pkgName, "@").concat(parentFile.pkgVersion);
331
- }).filter(Boolean)
332
- );
333
- })));
334
- return parentPkgs.filter(function(parentPkg) {
335
- return parentPkg;
336
- });
337
- };
338
- var traceFiles = function() {
339
- var _ref = _async_to_generator(function(param) {
340
- var entryFiles, serverRootDir, _param_base, base, traceOptions;
341
- return _ts_generator(this, function(_state) {
342
- switch (_state.label) {
343
- case 0:
344
- entryFiles = param.entryFiles, serverRootDir = param.serverRootDir, _param_base = param.base, base = _param_base === void 0 ? "/" : _param_base, traceOptions = param.traceOptions;
345
- return [
346
- 4,
347
- nodeFileTrace(entryFiles, _object_spread({
348
- base,
349
- processCwd: serverRootDir,
350
- resolve: function() {
351
- var _ref2 = _async_to_generator(function(id, parent, job, isCjs) {
352
- return _ts_generator(this, function(_state2) {
353
- if (id.startsWith("@modern-js/prod-server")) {
354
- return [
355
- 2,
356
- require.resolve(id, {
357
- paths: [
358
- require.resolve("@modern-js/app-tools")
359
- ]
360
- })
361
- ];
362
- } else {
363
- return [
364
- 2,
365
- resolve(id, parent, job, isCjs)
366
- ];
367
- }
368
- return [
369
- 2
370
- ];
371
- });
372
- });
373
- return function(id, parent, job, isCjs) {
374
- return _ref2.apply(this, arguments);
375
- };
376
- }()
377
- }, traceOptions))
378
- ];
379
- case 1:
380
- return [
381
- 2,
382
- _state.sent()
383
- ];
384
- }
385
- });
386
- });
387
- return function traceFiles2(_) {
388
- return _ref.apply(this, arguments);
389
- };
390
- }();
391
- var resolveTracedPath = function() {
392
- var _ref = _async_to_generator(function(base, p) {
393
- return _ts_generator(this, function(_state) {
394
- return [
395
- 2,
396
- fse.realpath(path.resolve(base, p))
397
- ];
398
- });
399
- });
400
- return function resolveTracedPath2(base, p) {
401
- return _ref.apply(this, arguments);
402
- };
403
- }();
404
- var isSubPath = function(parentPath, childPath) {
405
- if (!parentPath || !childPath) {
406
- return false;
407
- }
408
- var relative = path.relative(parentPath, childPath);
409
- return relative && !relative.startsWith("..");
410
- };
411
- export {
412
- findEntryFiles,
413
- findPackageParents,
414
- isFile,
415
- isSubPath,
416
- linkPackage,
417
- readDirRecursive,
418
- resolveTracedPath,
419
- traceFiles,
420
- writePackage
421
- };
@@ -1,4 +0,0 @@
1
- import { handleDependencies } from "./dependencies";
2
- export {
3
- handleDependencies
4
- };
@@ -1,202 +0,0 @@
1
- import path from "node:path";
2
- import { fs as fse, pkgUp, semver } from "@modern-js/utils";
3
- import { parseNodeModulePath } from "mlly";
4
- import { readPackageJSON } from "pkg-types";
5
- import { traceFiles as defaultTraceFiles, findEntryFiles, findPackageParents, isFile, isSubPath, linkPackage, readDirRecursive, resolveTracedPath, writePackage } from "./utils";
6
- import { nodeFileTrace } from "@vercel/nft";
7
- const handleDependencies = async ({ appDir, serverRootDir, includeEntries, traceFiles = defaultTraceFiles, entryFilter, modifyPackageJson, copyWholePackage, traceOptions }) => {
8
- const base = "/";
9
- const entryFiles = await findEntryFiles(serverRootDir, entryFilter);
10
- const fileTrace = await traceFiles({
11
- entryFiles: entryFiles.concat(includeEntries),
12
- serverRootDir,
13
- base,
14
- traceOptions
15
- });
16
- const currentProjectModules = path.join(appDir, "node_modules");
17
- const dependencySearchRoot = path.resolve(appDir, "../../../../../../");
18
- const tracedFiles = Object.fromEntries(await Promise.all([
19
- ...fileTrace.reasons.entries()
20
- ].map(async ([_path, reasons]) => {
21
- if (reasons.ignored) {
22
- return;
23
- }
24
- const filePath = await resolveTracedPath(base, _path);
25
- if (isSubPath(serverRootDir, filePath) || isSubPath(appDir, filePath) && !isSubPath(currentProjectModules, filePath)) {
26
- return;
27
- }
28
- if (!await isFile(filePath)) {
29
- return;
30
- }
31
- let baseDir;
32
- let pkgName;
33
- let subpath;
34
- let pkgPath;
35
- if (filePath.includes("node_modules")) {
36
- const parsed = parseNodeModulePath(filePath);
37
- baseDir = parsed.dir;
38
- pkgName = parsed.name;
39
- subpath = parsed.subpath;
40
- pkgPath = path.join(baseDir, pkgName);
41
- } else {
42
- const MODERN_UTILS_PATH = "packages/toolkit/utils";
43
- const MODERN_UTILS_PATH_REGEX = new RegExp(`(.*${MODERN_UTILS_PATH})`);
44
- const match = filePath.match(MODERN_UTILS_PATH_REGEX);
45
- const packageJsonPath = match ? path.join(match[0], "package.json") : await pkgUp({
46
- cwd: path.dirname(filePath)
47
- });
48
- if (packageJsonPath && isSubPath(dependencySearchRoot, packageJsonPath)) {
49
- const packageJson = await fse.readJSON(packageJsonPath);
50
- pkgPath = baseDir = path.dirname(packageJsonPath);
51
- subpath = path.relative(baseDir, filePath);
52
- pkgName = packageJson.name;
53
- }
54
- }
55
- if (!baseDir) {
56
- return;
57
- }
58
- const parents = await Promise.all([
59
- ...reasons.parents
60
- ].map((p) => resolveTracedPath(base, p)));
61
- const tracedFile = {
62
- path: filePath,
63
- parents,
64
- isDirectDep: parents.some((parent) => {
65
- return isSubPath(appDir, parent) && !isSubPath(currentProjectModules, parent);
66
- }),
67
- subpath,
68
- pkgName,
69
- pkgPath
70
- };
71
- return [
72
- filePath,
73
- tracedFile
74
- ];
75
- })).then((r) => r.filter(Boolean)));
76
- const tracedPackages = {};
77
- for (const tracedFile of Object.values(tracedFiles)) {
78
- const { pkgName } = tracedFile;
79
- let tracedPackage = tracedPackages[pkgName];
80
- let pkgJSON = await readPackageJSON(tracedFile.pkgPath, {
81
- cache: true
82
- }).catch(() => {
83
- });
84
- if (!pkgJSON) {
85
- pkgJSON = {
86
- name: pkgName,
87
- version: "0.0.0"
88
- };
89
- }
90
- if (!tracedPackage) {
91
- tracedPackage = {
92
- name: pkgName,
93
- versions: {}
94
- };
95
- tracedPackages[pkgName] = tracedPackage;
96
- }
97
- let tracedPackageVersion = tracedPackage.versions[pkgJSON.version];
98
- if (!tracedPackageVersion) {
99
- tracedPackageVersion = {
100
- path: tracedFile.pkgPath,
101
- files: [],
102
- isDirectDep: false,
103
- pkgJSON
104
- };
105
- if (tracedFile.isDirectDep) {
106
- tracedPackageVersion.isDirectDep = tracedFile.isDirectDep;
107
- }
108
- tracedPackage.versions[pkgJSON.version] = tracedPackageVersion;
109
- }
110
- tracedFile.pkgName = pkgName;
111
- tracedFile.pkgVersion = pkgJSON.version;
112
- const shouldCopyWholePackage = copyWholePackage === null || copyWholePackage === void 0 ? void 0 : copyWholePackage(pkgName);
113
- if (tracedFile.path.startsWith(tracedFile.pkgPath) && // Merged package files are based on the version, not on paths, to handle some boundary cases
114
- tracedPackageVersion.pkgJSON.version === tracedFile.pkgVersion) {
115
- if (shouldCopyWholePackage) {
116
- const allFiles = await readDirRecursive(tracedFile.pkgPath);
117
- tracedPackageVersion.files.push(...allFiles);
118
- } else {
119
- tracedPackageVersion.files.push(tracedFile.path);
120
- }
121
- }
122
- }
123
- const multiVersionPkgs = {};
124
- const singleVersionPackages = [];
125
- for (const tracedPackage of Object.values(tracedPackages)) {
126
- const versions = Object.keys(tracedPackage.versions);
127
- if (versions.length === 1) {
128
- singleVersionPackages.push(tracedPackage.name);
129
- continue;
130
- }
131
- multiVersionPkgs[tracedPackage.name] = {};
132
- for (const version of versions) {
133
- multiVersionPkgs[tracedPackage.name][version] = findPackageParents(tracedPackage, version, tracedFiles);
134
- }
135
- }
136
- await Promise.all(singleVersionPackages.map((pkgName) => {
137
- const pkg = tracedPackages[pkgName];
138
- const version = Object.keys(pkg.versions)[0];
139
- return writePackage({
140
- pkg,
141
- version,
142
- projectDir: serverRootDir
143
- });
144
- }));
145
- const projectPkgJson = await readPackageJSON(serverRootDir).catch(() => ({}));
146
- for (const [pkgName, pkgVersions] of Object.entries(multiVersionPkgs)) {
147
- const versionEntires = Object.entries(pkgVersions).sort(([v1, p1], [v2, p2]) => {
148
- var _tracedPackages_pkgName_versions_v1, _tracedPackages_pkgName_versions, _tracedPackages_pkgName, _tracedPackages_pkgName_versions_v2, _tracedPackages_pkgName_versions1, _tracedPackages_pkgName1;
149
- const shouldHoist1 = (_tracedPackages_pkgName = tracedPackages[pkgName]) === null || _tracedPackages_pkgName === void 0 ? void 0 : (_tracedPackages_pkgName_versions = _tracedPackages_pkgName.versions) === null || _tracedPackages_pkgName_versions === void 0 ? void 0 : (_tracedPackages_pkgName_versions_v1 = _tracedPackages_pkgName_versions[v1]) === null || _tracedPackages_pkgName_versions_v1 === void 0 ? void 0 : _tracedPackages_pkgName_versions_v1.isDirectDep;
150
- const shouldHoist2 = (_tracedPackages_pkgName1 = tracedPackages[pkgName]) === null || _tracedPackages_pkgName1 === void 0 ? void 0 : (_tracedPackages_pkgName_versions1 = _tracedPackages_pkgName1.versions) === null || _tracedPackages_pkgName_versions1 === void 0 ? void 0 : (_tracedPackages_pkgName_versions_v2 = _tracedPackages_pkgName_versions1[v2]) === null || _tracedPackages_pkgName_versions_v2 === void 0 ? void 0 : _tracedPackages_pkgName_versions_v2.isDirectDep;
151
- if (shouldHoist1 && !shouldHoist2) {
152
- return -1;
153
- }
154
- if (!shouldHoist1 && shouldHoist2) {
155
- return 1;
156
- }
157
- if (p1.length === 0) {
158
- return -1;
159
- }
160
- if (p2.length === 0) {
161
- return 1;
162
- }
163
- return semver.lt(v1, v2, {
164
- loose: true
165
- }) ? 1 : -1;
166
- });
167
- for (const [version, parentPkgs] of versionEntires) {
168
- const pkg = tracedPackages[pkgName];
169
- const pkgDestPath = `.modernjs/${pkgName}@${version}/node_modules/${pkgName}`;
170
- await writePackage({
171
- pkg,
172
- version,
173
- projectDir: serverRootDir,
174
- _pkgPath: pkgDestPath
175
- });
176
- await linkPackage(pkgDestPath, `${pkgName}`, serverRootDir);
177
- for (const parentPkg of parentPkgs) {
178
- const parentPkgName = parentPkg.replace(/@[^@]+$/, "");
179
- await (multiVersionPkgs[parentPkgName] ? linkPackage(pkgDestPath, `.modernjs/${parentPkg}/node_modules/${pkgName}`, serverRootDir) : linkPackage(pkgDestPath, `${parentPkgName}/node_modules/${pkgName}`, serverRootDir));
180
- }
181
- }
182
- }
183
- const outputPkgPath = path.join(serverRootDir, "package.json");
184
- const newPkgJson = {
185
- name: `${projectPkgJson.name || "modernjs-project"}-prod`,
186
- version: projectPkgJson.version || "0.0.0",
187
- private: true,
188
- type: projectPkgJson.type || "commonjs",
189
- dependencies: Object.fromEntries([
190
- ...Object.values(tracedPackages).map((pkg) => [
191
- pkg.name,
192
- Object.keys(pkg.versions)[0]
193
- ])
194
- ].sort(([a], [b]) => a.localeCompare(b)))
195
- };
196
- const finalPkgJson = (modifyPackageJson === null || modifyPackageJson === void 0 ? void 0 : modifyPackageJson(newPkgJson)) || newPkgJson;
197
- await fse.writeJSON(outputPkgPath, finalPkgJson);
198
- };
199
- export {
200
- handleDependencies,
201
- nodeFileTrace
202
- };