@modern-js/app-tools 2.54.3 → 2.54.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/plugins/deploy/dependencies/index.js +27 -17
- package/dist/cjs/plugins/deploy/dependencies/utils.js +14 -21
- package/dist/cjs/plugins/deploy/exports.js +28 -0
- package/dist/cjs/plugins/deploy/platforms/netlify.js +7 -3
- package/dist/cjs/plugins/deploy/platforms/node.js +8 -3
- package/dist/cjs/plugins/deploy/platforms/vercel.js +7 -3
- package/dist/esm/index.js +1 -1
- package/dist/esm/plugins/deploy/dependencies/index.js +95 -69
- package/dist/esm/plugins/deploy/dependencies/utils.js +19 -40
- package/dist/esm/plugins/deploy/exports.js +4 -0
- package/dist/esm/plugins/deploy/platforms/netlify.js +7 -3
- package/dist/esm/plugins/deploy/platforms/node.js +8 -3
- package/dist/esm/plugins/deploy/platforms/vercel.js +7 -3
- package/dist/esm-node/index.js +1 -1
- package/dist/esm-node/plugins/deploy/dependencies/index.js +28 -18
- package/dist/esm-node/plugins/deploy/dependencies/utils.js +15 -22
- package/dist/esm-node/plugins/deploy/exports.js +4 -0
- package/dist/esm-node/plugins/deploy/platforms/netlify.js +7 -3
- package/dist/esm-node/plugins/deploy/platforms/node.js +8 -3
- package/dist/esm-node/plugins/deploy/platforms/vercel.js +7 -3
- package/dist/types/plugins/deploy/dependencies/index.d.ts +11 -1
- package/dist/types/plugins/deploy/dependencies/utils.d.ts +7 -1
- package/dist/types/plugins/deploy/exports.d.ts +1 -0
- package/package.json +29 -21
package/dist/cjs/index.js
CHANGED
|
@@ -147,7 +147,7 @@ const appTools = (options = {
|
|
|
147
147
|
},
|
|
148
148
|
async beforeRestart() {
|
|
149
149
|
(0, import_utils.cleanRequireCache)([
|
|
150
|
-
require.resolve("./analyze")
|
|
150
|
+
require.resolve("./plugins/analyze")
|
|
151
151
|
]);
|
|
152
152
|
},
|
|
153
153
|
async modifyFileSystemRoutes({ entrypoint, routes }) {
|
|
@@ -36,20 +36,10 @@ var import_utils = require("@modern-js/utils");
|
|
|
36
36
|
var import_pkg_types = require("pkg-types");
|
|
37
37
|
var import_mlly = require("mlly");
|
|
38
38
|
var import_utils2 = require("./utils");
|
|
39
|
-
const handleDependencies = async (appDir, serverRootDir,
|
|
39
|
+
const handleDependencies = async ({ appDir, serverRootDir, includeEntries, traceFiles = import_utils2.traceFiles, entryFilter, modifyPackageJson, copyWholePackage }) => {
|
|
40
40
|
const base = "/";
|
|
41
41
|
const entryFiles = await (0, import_utils2.findEntryFiles)(serverRootDir, entryFilter);
|
|
42
|
-
const
|
|
43
|
-
if ((0, import_node_path.isAbsolute)(item)) {
|
|
44
|
-
return item;
|
|
45
|
-
}
|
|
46
|
-
try {
|
|
47
|
-
return require.resolve(item);
|
|
48
|
-
} catch (error) {
|
|
49
|
-
}
|
|
50
|
-
return item;
|
|
51
|
-
});
|
|
52
|
-
const fileTrace = await (0, import_utils2.traceFiles)(entryFiles.concat(includeEntries), serverRootDir, base);
|
|
42
|
+
const fileTrace = await traceFiles(entryFiles.concat(includeEntries), serverRootDir, base);
|
|
53
43
|
const currentProjectModules = import_node_path.default.join(appDir, "node_modules");
|
|
54
44
|
const tracedFiles = Object.fromEntries(await Promise.all([
|
|
55
45
|
...fileTrace.reasons.entries()
|
|
@@ -143,9 +133,18 @@ const handleDependencies = async (appDir, serverRootDir, include, entryFilter) =
|
|
|
143
133
|
}
|
|
144
134
|
tracedPackage.versions[pkgJSON.version] = tracedPackageVersion;
|
|
145
135
|
}
|
|
146
|
-
tracedFile.path.startsWith(tracedFile.pkgPath) && tracedPackageVersion.path === tracedFile.pkgPath && tracedPackageVersion.files.push(tracedFile.path);
|
|
147
136
|
tracedFile.pkgName = pkgName;
|
|
148
137
|
tracedFile.pkgVersion = pkgJSON.version;
|
|
138
|
+
const shouldCopyWholePackage = copyWholePackage === null || copyWholePackage === void 0 ? void 0 : copyWholePackage(pkgName);
|
|
139
|
+
if (tracedFile.path.startsWith(tracedFile.pkgPath) && // Merged package files are based on the version, not on paths, to handle some boundary cases
|
|
140
|
+
tracedPackageVersion.pkgJSON.version === tracedFile.pkgVersion) {
|
|
141
|
+
if (shouldCopyWholePackage) {
|
|
142
|
+
const allFiles = await (0, import_utils2.readDirRecursive)(tracedFile.pkgPath);
|
|
143
|
+
tracedPackageVersion.files.push(...allFiles);
|
|
144
|
+
} else {
|
|
145
|
+
tracedPackageVersion.files.push(tracedFile.path);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
149
148
|
}
|
|
150
149
|
const multiVersionPkgs = {};
|
|
151
150
|
const singleVersionPackages = [];
|
|
@@ -163,7 +162,11 @@ const handleDependencies = async (appDir, serverRootDir, include, entryFilter) =
|
|
|
163
162
|
await Promise.all(singleVersionPackages.map((pkgName) => {
|
|
164
163
|
const pkg = tracedPackages[pkgName];
|
|
165
164
|
const version = Object.keys(pkg.versions)[0];
|
|
166
|
-
return (0, import_utils2.writePackage)(
|
|
165
|
+
return (0, import_utils2.writePackage)({
|
|
166
|
+
pkg,
|
|
167
|
+
version,
|
|
168
|
+
projectDir: serverRootDir
|
|
169
|
+
});
|
|
167
170
|
}));
|
|
168
171
|
const projectPkgJson = await (0, import_pkg_types.readPackageJSON)(serverRootDir).catch(() => ({}));
|
|
169
172
|
for (const [pkgName, pkgVersions] of Object.entries(multiVersionPkgs)) {
|
|
@@ -190,7 +193,12 @@ const handleDependencies = async (appDir, serverRootDir, include, entryFilter) =
|
|
|
190
193
|
for (const [version, parentPkgs] of versionEntires) {
|
|
191
194
|
const pkg = tracedPackages[pkgName];
|
|
192
195
|
const pkgDestPath = `.modernjs/${pkgName}@${version}/node_modules/${pkgName}`;
|
|
193
|
-
await (0, import_utils2.writePackage)(
|
|
196
|
+
await (0, import_utils2.writePackage)({
|
|
197
|
+
pkg,
|
|
198
|
+
version,
|
|
199
|
+
projectDir: serverRootDir,
|
|
200
|
+
_pkgPath: pkgDestPath
|
|
201
|
+
});
|
|
194
202
|
await (0, import_utils2.linkPackage)(pkgDestPath, `${pkgName}`, serverRootDir);
|
|
195
203
|
for (const parentPkg of parentPkgs) {
|
|
196
204
|
const parentPkgName = parentPkg.replace(/@[^@]+$/, "");
|
|
@@ -199,7 +207,7 @@ const handleDependencies = async (appDir, serverRootDir, include, entryFilter) =
|
|
|
199
207
|
}
|
|
200
208
|
}
|
|
201
209
|
const outputPkgPath = import_node_path.default.join(serverRootDir, "package.json");
|
|
202
|
-
|
|
210
|
+
const newPkgJson = {
|
|
203
211
|
name: `${projectPkgJson.name || "modernjs-project"}-prod`,
|
|
204
212
|
version: projectPkgJson.version || "0.0.0",
|
|
205
213
|
private: true,
|
|
@@ -209,7 +217,9 @@ const handleDependencies = async (appDir, serverRootDir, include, entryFilter) =
|
|
|
209
217
|
Object.keys(pkg.versions)[0]
|
|
210
218
|
])
|
|
211
219
|
].sort(([a], [b]) => a.localeCompare(b)))
|
|
212
|
-
}
|
|
220
|
+
};
|
|
221
|
+
const finalPkgJson = (modifyPackageJson === null || modifyPackageJson === void 0 ? void 0 : modifyPackageJson(newPkgJson)) || newPkgJson;
|
|
222
|
+
await import_utils.fs.writeJSON(outputPkgPath, finalPkgJson);
|
|
213
223
|
};
|
|
214
224
|
// Annotate the CommonJS export names for ESM import in node:
|
|
215
225
|
0 && (module.exports = {
|
|
@@ -50,7 +50,8 @@ function applyPublicCondition(pkg) {
|
|
|
50
50
|
pkg.exports = pkg === null || pkg === void 0 ? void 0 : (_pkg_publishConfig1 = pkg.publishConfig) === null || _pkg_publishConfig1 === void 0 ? void 0 : _pkg_publishConfig1.exports;
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
|
-
const writePackage = async (
|
|
53
|
+
const writePackage = async (options) => {
|
|
54
|
+
const { pkg, version, projectDir, _pkgPath } = options;
|
|
54
55
|
const pkgPath = _pkgPath || pkg.name;
|
|
55
56
|
for (const src of pkg.versions[version].files) {
|
|
56
57
|
if (src.includes("node_modules")) {
|
|
@@ -124,31 +125,23 @@ const findEntryFiles = async (rootDir, entryFilter) => {
|
|
|
124
125
|
const findPackageParents = (pkg, version, tracedFiles) => {
|
|
125
126
|
const versionFiles = pkg.versions[version].files.map((path2) => tracedFiles[path2]);
|
|
126
127
|
const parentPkgs = [
|
|
127
|
-
...new Set(versionFiles.flatMap((file) =>
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
128
|
+
...new Set(versionFiles.flatMap((file) => (
|
|
129
|
+
// Because it supports copyWholePackage configuration, not all files exist.
|
|
130
|
+
file === null || file === void 0 ? void 0 : file.parents.map((parentPath) => {
|
|
131
|
+
const parentFile = tracedFiles[parentPath];
|
|
132
|
+
if (!parentFile || parentFile.pkgName === pkg.name) {
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
return `${parentFile.pkgName}@${parentFile.pkgVersion}`;
|
|
136
|
+
}).filter(Boolean)
|
|
137
|
+
)))
|
|
134
138
|
];
|
|
135
|
-
return parentPkgs;
|
|
139
|
+
return parentPkgs.filter((parentPkg) => parentPkg);
|
|
136
140
|
};
|
|
137
141
|
const traceFiles = async (entryFiles, serverRootDir, base = "/") => {
|
|
138
142
|
return await (0, import_nft.nodeFileTrace)(entryFiles, {
|
|
139
143
|
base,
|
|
140
|
-
processCwd: serverRootDir
|
|
141
|
-
resolve: async (id, parent, job, isCjs) => {
|
|
142
|
-
if (id.startsWith("@modern-js/prod-server")) {
|
|
143
|
-
return require.resolve(id, {
|
|
144
|
-
paths: [
|
|
145
|
-
require.resolve("@modern-js/app-tools")
|
|
146
|
-
]
|
|
147
|
-
});
|
|
148
|
-
} else {
|
|
149
|
-
return (0, import_nft.resolve)(id, parent, job, isCjs);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
144
|
+
processCwd: serverRootDir
|
|
152
145
|
});
|
|
153
146
|
};
|
|
154
147
|
const resolveTracedPath = async (base, p) => import_utils.fs.realpath(import_path.default.resolve(base, p));
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var exports_exports = {};
|
|
20
|
+
__export(exports_exports, {
|
|
21
|
+
handleDependencies: () => import_dependencies.handleDependencies
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(exports_exports);
|
|
24
|
+
var import_dependencies = require("./dependencies");
|
|
25
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
26
|
+
0 && (module.exports = {
|
|
27
|
+
handleDependencies
|
|
28
|
+
});
|
|
@@ -126,9 +126,13 @@ const createNetlifyPreset = (appContext, modernConfig, needModernServer) => {
|
|
|
126
126
|
if (!needModernServer) {
|
|
127
127
|
return;
|
|
128
128
|
}
|
|
129
|
-
await (0, import_dependencies.handleDependencies)(
|
|
130
|
-
|
|
131
|
-
|
|
129
|
+
await (0, import_dependencies.handleDependencies)({
|
|
130
|
+
appDir: appDirectory,
|
|
131
|
+
serverRootDir: funcsDirectory,
|
|
132
|
+
includeEntries: [
|
|
133
|
+
require.resolve("@modern-js/prod-server")
|
|
134
|
+
]
|
|
135
|
+
});
|
|
132
136
|
}
|
|
133
137
|
};
|
|
134
138
|
};
|
|
@@ -80,9 +80,14 @@ const createNodePreset = (appContext, config) => {
|
|
|
80
80
|
const filter = (filePath) => {
|
|
81
81
|
return !filePath.startsWith(staticDirectory);
|
|
82
82
|
};
|
|
83
|
-
await (0, import_dependencies.handleDependencies)(
|
|
84
|
-
|
|
85
|
-
|
|
83
|
+
await (0, import_dependencies.handleDependencies)({
|
|
84
|
+
appDir: appDirectory,
|
|
85
|
+
serverRootDir: outputDirectory,
|
|
86
|
+
includeEntries: [
|
|
87
|
+
require.resolve("@modern-js/prod-server")
|
|
88
|
+
],
|
|
89
|
+
entryFilter: filter
|
|
90
|
+
});
|
|
86
91
|
}
|
|
87
92
|
};
|
|
88
93
|
};
|
|
@@ -138,9 +138,13 @@ const createVercelPreset = (appContext, modernConfig, needModernServer) => {
|
|
|
138
138
|
if (!needModernServer) {
|
|
139
139
|
return;
|
|
140
140
|
}
|
|
141
|
-
await (0, import_dependencies.handleDependencies)(
|
|
142
|
-
|
|
143
|
-
|
|
141
|
+
await (0, import_dependencies.handleDependencies)({
|
|
142
|
+
appDir: appDirectory,
|
|
143
|
+
serverRootDir: funcsDirectory,
|
|
144
|
+
includeEntries: [
|
|
145
|
+
require.resolve("@modern-js/prod-server")
|
|
146
|
+
]
|
|
147
|
+
});
|
|
144
148
|
}
|
|
145
149
|
};
|
|
146
150
|
};
|
package/dist/esm/index.js
CHANGED
|
@@ -3,17 +3,18 @@ import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
|
|
|
3
3
|
import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
|
|
4
4
|
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
5
5
|
import { _ as _ts_values } from "@swc/helpers/_/_ts_values";
|
|
6
|
-
import path
|
|
6
|
+
import path from "node:path";
|
|
7
7
|
import { fs as fse, pkgUp, semver } from "@modern-js/utils";
|
|
8
8
|
import { readPackageJSON } from "pkg-types";
|
|
9
9
|
import { parseNodeModulePath } from "mlly";
|
|
10
|
-
import { linkPackage, writePackage, isFile, findEntryFiles, traceFiles, findPackageParents, resolveTracedPath } from "./utils";
|
|
10
|
+
import { linkPackage, writePackage, isFile, findEntryFiles, traceFiles as defaultTraceFiles, findPackageParents, resolveTracedPath, readDirRecursive } from "./utils";
|
|
11
11
|
var handleDependencies = function() {
|
|
12
|
-
var _ref = _async_to_generator(function(
|
|
13
|
-
var
|
|
12
|
+
var _ref = _async_to_generator(function(param) {
|
|
13
|
+
var appDir, serverRootDir, includeEntries, _param_traceFiles, traceFiles, entryFilter, modifyPackageJson, copyWholePackage, base, entryFiles, fileTrace, currentProjectModules, tracedFiles, _, tracedPackages, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, tracedFile, pkgName, tracedPackage, pkgJSON, tracedPackageVersion, shouldCopyWholePackage, _tracedPackageVersion_files, allFiles, err, multiVersionPkgs, singleVersionPackages, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, tracedPackage1, versions, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, version, projectPkgJson, _iteratorNormalCompletion3, _didIteratorError3, _iteratorError3, _loop, _iterator3, _step3, err, outputPkgPath, newPkgJson, finalPkgJson;
|
|
14
14
|
return _ts_generator(this, function(_state) {
|
|
15
15
|
switch (_state.label) {
|
|
16
16
|
case 0:
|
|
17
|
+
appDir = param.appDir, serverRootDir = param.serverRootDir, includeEntries = param.includeEntries, _param_traceFiles = param.traceFiles, traceFiles = _param_traceFiles === void 0 ? defaultTraceFiles : _param_traceFiles, entryFilter = param.entryFilter, modifyPackageJson = param.modifyPackageJson, copyWholePackage = param.copyWholePackage;
|
|
17
18
|
base = "/";
|
|
18
19
|
return [
|
|
19
20
|
4,
|
|
@@ -21,16 +22,6 @@ var handleDependencies = function() {
|
|
|
21
22
|
];
|
|
22
23
|
case 1:
|
|
23
24
|
entryFiles = _state.sent();
|
|
24
|
-
includeEntries = include.map(function(item) {
|
|
25
|
-
if (isAbsolute(item)) {
|
|
26
|
-
return item;
|
|
27
|
-
}
|
|
28
|
-
try {
|
|
29
|
-
return require.resolve(item);
|
|
30
|
-
} catch (error) {
|
|
31
|
-
}
|
|
32
|
-
return item;
|
|
33
|
-
});
|
|
34
25
|
return [
|
|
35
26
|
4,
|
|
36
27
|
traceFiles(entryFiles.concat(includeEntries), serverRootDir, base)
|
|
@@ -42,12 +33,12 @@ var handleDependencies = function() {
|
|
|
42
33
|
return [
|
|
43
34
|
4,
|
|
44
35
|
Promise.all(_to_consumable_array(fileTrace.reasons.entries()).map(function() {
|
|
45
|
-
var _ref2 = _async_to_generator(function(
|
|
36
|
+
var _ref2 = _async_to_generator(function(param2) {
|
|
46
37
|
var _param, _path, reasons, filePath, baseDir, pkgName2, subpath, pkgPath, parsed, MODERN_UTILS_PATH, MODERN_UTILS_PATH_REGEX, match, packageJsonPath, _tmp, packageJson, parents, tracedFile2;
|
|
47
38
|
return _ts_generator(this, function(_state2) {
|
|
48
39
|
switch (_state2.label) {
|
|
49
40
|
case 0:
|
|
50
|
-
_param = _sliced_to_array(
|
|
41
|
+
_param = _sliced_to_array(param2, 2), _path = _param[0], reasons = _param[1];
|
|
51
42
|
if (reasons.ignored) {
|
|
52
43
|
return [
|
|
53
44
|
2
|
|
@@ -180,9 +171,9 @@ var handleDependencies = function() {
|
|
|
180
171
|
case 4:
|
|
181
172
|
_state.trys.push([
|
|
182
173
|
4,
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
174
|
+
11,
|
|
175
|
+
12,
|
|
176
|
+
13
|
|
186
177
|
]);
|
|
187
178
|
_iterator = Object.values(tracedFiles)[Symbol.iterator]();
|
|
188
179
|
_state.label = 5;
|
|
@@ -190,7 +181,7 @@ var handleDependencies = function() {
|
|
|
190
181
|
if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done))
|
|
191
182
|
return [
|
|
192
183
|
3,
|
|
193
|
-
|
|
184
|
+
10
|
|
194
185
|
];
|
|
195
186
|
tracedFile = _step.value;
|
|
196
187
|
pkgName = tracedFile.pkgName;
|
|
@@ -230,30 +221,54 @@ var handleDependencies = function() {
|
|
|
230
221
|
}
|
|
231
222
|
tracedPackage.versions[pkgJSON.version] = tracedPackageVersion;
|
|
232
223
|
}
|
|
233
|
-
tracedFile.path.startsWith(tracedFile.pkgPath) && tracedPackageVersion.path === tracedFile.pkgPath && tracedPackageVersion.files.push(tracedFile.path);
|
|
234
224
|
tracedFile.pkgName = pkgName;
|
|
235
225
|
tracedFile.pkgVersion = pkgJSON.version;
|
|
236
|
-
|
|
226
|
+
shouldCopyWholePackage = copyWholePackage === null || copyWholePackage === void 0 ? void 0 : copyWholePackage(pkgName);
|
|
227
|
+
if (!(tracedFile.path.startsWith(tracedFile.pkgPath) && // Merged package files are based on the version, not on paths, to handle some boundary cases
|
|
228
|
+
tracedPackageVersion.pkgJSON.version === tracedFile.pkgVersion))
|
|
229
|
+
return [
|
|
230
|
+
3,
|
|
231
|
+
9
|
|
232
|
+
];
|
|
233
|
+
if (!shouldCopyWholePackage)
|
|
234
|
+
return [
|
|
235
|
+
3,
|
|
236
|
+
8
|
|
237
|
+
];
|
|
238
|
+
return [
|
|
239
|
+
4,
|
|
240
|
+
readDirRecursive(tracedFile.pkgPath)
|
|
241
|
+
];
|
|
237
242
|
case 7:
|
|
243
|
+
allFiles = _state.sent();
|
|
244
|
+
(_tracedPackageVersion_files = tracedPackageVersion.files).push.apply(_tracedPackageVersion_files, _to_consumable_array(allFiles));
|
|
245
|
+
return [
|
|
246
|
+
3,
|
|
247
|
+
9
|
|
248
|
+
];
|
|
249
|
+
case 8:
|
|
250
|
+
tracedPackageVersion.files.push(tracedFile.path);
|
|
251
|
+
_state.label = 9;
|
|
252
|
+
case 9:
|
|
238
253
|
_iteratorNormalCompletion = true;
|
|
239
254
|
return [
|
|
240
255
|
3,
|
|
241
256
|
5
|
|
242
257
|
];
|
|
243
|
-
case
|
|
258
|
+
case 10:
|
|
244
259
|
return [
|
|
245
260
|
3,
|
|
246
|
-
|
|
261
|
+
13
|
|
247
262
|
];
|
|
248
|
-
case
|
|
263
|
+
case 11:
|
|
249
264
|
err = _state.sent();
|
|
250
265
|
_didIteratorError = true;
|
|
251
266
|
_iteratorError = err;
|
|
252
267
|
return [
|
|
253
268
|
3,
|
|
254
|
-
|
|
269
|
+
13
|
|
255
270
|
];
|
|
256
|
-
case
|
|
271
|
+
case 12:
|
|
257
272
|
try {
|
|
258
273
|
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
259
274
|
_iterator.return();
|
|
@@ -266,7 +281,7 @@ var handleDependencies = function() {
|
|
|
266
281
|
return [
|
|
267
282
|
7
|
|
268
283
|
];
|
|
269
|
-
case
|
|
284
|
+
case 13:
|
|
270
285
|
multiVersionPkgs = {};
|
|
271
286
|
singleVersionPackages = [];
|
|
272
287
|
_iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;
|
|
@@ -319,10 +334,14 @@ var handleDependencies = function() {
|
|
|
319
334
|
Promise.all(singleVersionPackages.map(function(pkgName2) {
|
|
320
335
|
var pkg = tracedPackages[pkgName2];
|
|
321
336
|
var version2 = Object.keys(pkg.versions)[0];
|
|
322
|
-
return writePackage(
|
|
337
|
+
return writePackage({
|
|
338
|
+
pkg,
|
|
339
|
+
version: version2,
|
|
340
|
+
projectDir: serverRootDir
|
|
341
|
+
});
|
|
323
342
|
}))
|
|
324
343
|
];
|
|
325
|
-
case
|
|
344
|
+
case 14:
|
|
326
345
|
_state.sent();
|
|
327
346
|
return [
|
|
328
347
|
4,
|
|
@@ -330,16 +349,16 @@ var handleDependencies = function() {
|
|
|
330
349
|
return {};
|
|
331
350
|
})
|
|
332
351
|
];
|
|
333
|
-
case
|
|
352
|
+
case 15:
|
|
334
353
|
projectPkgJson = _state.sent();
|
|
335
354
|
_iteratorNormalCompletion3 = true, _didIteratorError3 = false, _iteratorError3 = void 0;
|
|
336
|
-
_state.label =
|
|
337
|
-
case
|
|
355
|
+
_state.label = 16;
|
|
356
|
+
case 16:
|
|
338
357
|
_state.trys.push([
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
358
|
+
16,
|
|
359
|
+
21,
|
|
360
|
+
22,
|
|
361
|
+
23
|
|
343
362
|
]);
|
|
344
363
|
_loop = function() {
|
|
345
364
|
var _step_value, pkgName2, pkgVersions, versionEntires, _iteratorNormalCompletion4, _didIteratorError4, _iteratorError4, _iterator4, _step4, _step_value1, version2, parentPkgs, pkg, pkgDestPath, _iteratorNormalCompletion12, _didIteratorError12, _iteratorError12, _iterator12, _step12, parentPkg, parentPkgName, err2, err2;
|
|
@@ -347,8 +366,8 @@ var handleDependencies = function() {
|
|
|
347
366
|
switch (_state2.label) {
|
|
348
367
|
case 0:
|
|
349
368
|
_step_value = _sliced_to_array(_step3.value, 2), pkgName2 = _step_value[0], pkgVersions = _step_value[1];
|
|
350
|
-
versionEntires = Object.entries(pkgVersions).sort(function(
|
|
351
|
-
var _param = _sliced_to_array(
|
|
369
|
+
versionEntires = Object.entries(pkgVersions).sort(function(param2, param1) {
|
|
370
|
+
var _param = _sliced_to_array(param2, 2), v1 = _param[0], p1 = _param[1], _param1 = _sliced_to_array(param1, 2), v2 = _param1[0], p2 = _param1[1];
|
|
352
371
|
var _tracedPackages_pkgName_versions_v1, _tracedPackages_pkgName_versions, _tracedPackages_pkgName, _tracedPackages_pkgName_versions_v2, _tracedPackages_pkgName_versions1, _tracedPackages_pkgName1;
|
|
353
372
|
var shouldHoist1 = (_tracedPackages_pkgName = tracedPackages[pkgName2]) === 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;
|
|
354
373
|
var shouldHoist2 = (_tracedPackages_pkgName1 = tracedPackages[pkgName2]) === 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;
|
|
@@ -390,7 +409,12 @@ var handleDependencies = function() {
|
|
|
390
409
|
pkgDestPath = ".modernjs/".concat(pkgName2, "@").concat(version2, "/node_modules/").concat(pkgName2);
|
|
391
410
|
return [
|
|
392
411
|
4,
|
|
393
|
-
writePackage(
|
|
412
|
+
writePackage({
|
|
413
|
+
pkg,
|
|
414
|
+
version: version2,
|
|
415
|
+
projectDir: serverRootDir,
|
|
416
|
+
_pkgPath: pkgDestPath
|
|
417
|
+
})
|
|
394
418
|
];
|
|
395
419
|
case 3:
|
|
396
420
|
_state2.sent();
|
|
@@ -498,40 +522,40 @@ var handleDependencies = function() {
|
|
|
498
522
|
});
|
|
499
523
|
};
|
|
500
524
|
_iterator3 = Object.entries(multiVersionPkgs)[Symbol.iterator]();
|
|
501
|
-
_state.label =
|
|
502
|
-
case
|
|
525
|
+
_state.label = 17;
|
|
526
|
+
case 17:
|
|
503
527
|
if (!!(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done))
|
|
504
528
|
return [
|
|
505
529
|
3,
|
|
506
|
-
|
|
530
|
+
20
|
|
507
531
|
];
|
|
508
532
|
return [
|
|
509
533
|
5,
|
|
510
534
|
_ts_values(_loop())
|
|
511
535
|
];
|
|
512
|
-
case
|
|
536
|
+
case 18:
|
|
513
537
|
_state.sent();
|
|
514
|
-
_state.label =
|
|
515
|
-
case
|
|
538
|
+
_state.label = 19;
|
|
539
|
+
case 19:
|
|
516
540
|
_iteratorNormalCompletion3 = true;
|
|
517
541
|
return [
|
|
518
542
|
3,
|
|
519
|
-
|
|
543
|
+
17
|
|
520
544
|
];
|
|
521
|
-
case
|
|
545
|
+
case 20:
|
|
522
546
|
return [
|
|
523
547
|
3,
|
|
524
|
-
|
|
548
|
+
23
|
|
525
549
|
];
|
|
526
|
-
case
|
|
550
|
+
case 21:
|
|
527
551
|
err = _state.sent();
|
|
528
552
|
_didIteratorError3 = true;
|
|
529
553
|
_iteratorError3 = err;
|
|
530
554
|
return [
|
|
531
555
|
3,
|
|
532
|
-
|
|
556
|
+
23
|
|
533
557
|
];
|
|
534
|
-
case
|
|
558
|
+
case 22:
|
|
535
559
|
try {
|
|
536
560
|
if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
|
|
537
561
|
_iterator3.return();
|
|
@@ -544,26 +568,28 @@ var handleDependencies = function() {
|
|
|
544
568
|
return [
|
|
545
569
|
7
|
|
546
570
|
];
|
|
547
|
-
case
|
|
571
|
+
case 23:
|
|
548
572
|
outputPkgPath = path.join(serverRootDir, "package.json");
|
|
573
|
+
newPkgJson = {
|
|
574
|
+
name: "".concat(projectPkgJson.name || "modernjs-project", "-prod"),
|
|
575
|
+
version: projectPkgJson.version || "0.0.0",
|
|
576
|
+
private: true,
|
|
577
|
+
dependencies: Object.fromEntries(_to_consumable_array(Object.values(tracedPackages).map(function(pkg) {
|
|
578
|
+
return [
|
|
579
|
+
pkg.name,
|
|
580
|
+
Object.keys(pkg.versions)[0]
|
|
581
|
+
];
|
|
582
|
+
})).sort(function(param2, param1) {
|
|
583
|
+
var _param = _sliced_to_array(param2, 1), a = _param[0], _param1 = _sliced_to_array(param1, 1), b = _param1[0];
|
|
584
|
+
return a.localeCompare(b);
|
|
585
|
+
}))
|
|
586
|
+
};
|
|
587
|
+
finalPkgJson = (modifyPackageJson === null || modifyPackageJson === void 0 ? void 0 : modifyPackageJson(newPkgJson)) || newPkgJson;
|
|
549
588
|
return [
|
|
550
589
|
4,
|
|
551
|
-
fse.writeJSON(outputPkgPath,
|
|
552
|
-
name: "".concat(projectPkgJson.name || "modernjs-project", "-prod"),
|
|
553
|
-
version: projectPkgJson.version || "0.0.0",
|
|
554
|
-
private: true,
|
|
555
|
-
dependencies: Object.fromEntries(_to_consumable_array(Object.values(tracedPackages).map(function(pkg) {
|
|
556
|
-
return [
|
|
557
|
-
pkg.name,
|
|
558
|
-
Object.keys(pkg.versions)[0]
|
|
559
|
-
];
|
|
560
|
-
})).sort(function(param, param1) {
|
|
561
|
-
var _param = _sliced_to_array(param, 1), a = _param[0], _param1 = _sliced_to_array(param1, 1), b = _param1[0];
|
|
562
|
-
return a.localeCompare(b);
|
|
563
|
-
}))
|
|
564
|
-
})
|
|
590
|
+
fse.writeJSON(outputPkgPath, finalPkgJson)
|
|
565
591
|
];
|
|
566
|
-
case
|
|
592
|
+
case 24:
|
|
567
593
|
_state.sent();
|
|
568
594
|
return [
|
|
569
595
|
2
|
|
@@ -571,7 +597,7 @@ var handleDependencies = function() {
|
|
|
571
597
|
}
|
|
572
598
|
});
|
|
573
599
|
});
|
|
574
|
-
return function handleDependencies2(
|
|
600
|
+
return function handleDependencies2(_) {
|
|
575
601
|
return _ref.apply(this, arguments);
|
|
576
602
|
};
|
|
577
603
|
}();
|
|
@@ -5,7 +5,7 @@ import path from "path";
|
|
|
5
5
|
import os from "node:os";
|
|
6
6
|
import { fs as fse } from "@modern-js/utils";
|
|
7
7
|
import { parseNodeModulePath } from "mlly";
|
|
8
|
-
import { nodeFileTrace
|
|
8
|
+
import { nodeFileTrace } from "@vercel/nft";
|
|
9
9
|
function applyPublicCondition(pkg) {
|
|
10
10
|
var _pkg_publishConfig;
|
|
11
11
|
if (pkg === null || pkg === void 0 ? void 0 : (_pkg_publishConfig = pkg.publishConfig) === null || _pkg_publishConfig === void 0 ? void 0 : _pkg_publishConfig.exports) {
|
|
@@ -14,11 +14,12 @@ function applyPublicCondition(pkg) {
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
var writePackage = function() {
|
|
17
|
-
var _ref = _async_to_generator(function(
|
|
18
|
-
var pkgPath, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, src, subpath, dest, dirname, subpath1, dest1, dirname1, err, pkgJSON, packageJsonPath;
|
|
17
|
+
var _ref = _async_to_generator(function(options) {
|
|
18
|
+
var pkg, version, projectDir, _pkgPath, pkgPath, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, src, subpath, dest, dirname, subpath1, dest1, dirname1, err, pkgJSON, packageJsonPath;
|
|
19
19
|
return _ts_generator(this, function(_state) {
|
|
20
20
|
switch (_state.label) {
|
|
21
21
|
case 0:
|
|
22
|
+
pkg = options.pkg, version = options.version, projectDir = options.projectDir, _pkgPath = options._pkgPath;
|
|
22
23
|
pkgPath = _pkgPath || pkg.name;
|
|
23
24
|
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
|
24
25
|
_state.label = 1;
|
|
@@ -133,7 +134,7 @@ var writePackage = function() {
|
|
|
133
134
|
}
|
|
134
135
|
});
|
|
135
136
|
});
|
|
136
|
-
return function writePackage2(
|
|
137
|
+
return function writePackage2(options) {
|
|
137
138
|
return _ref.apply(this, arguments);
|
|
138
139
|
};
|
|
139
140
|
}();
|
|
@@ -318,15 +319,20 @@ var findPackageParents = function(pkg, version, tracedFiles) {
|
|
|
318
319
|
return tracedFiles[path2];
|
|
319
320
|
});
|
|
320
321
|
var parentPkgs = _to_consumable_array(new Set(versionFiles.flatMap(function(file) {
|
|
321
|
-
return
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
322
|
+
return (
|
|
323
|
+
// Because it supports copyWholePackage configuration, not all files exist.
|
|
324
|
+
file === null || file === void 0 ? void 0 : file.parents.map(function(parentPath) {
|
|
325
|
+
var parentFile = tracedFiles[parentPath];
|
|
326
|
+
if (!parentFile || parentFile.pkgName === pkg.name) {
|
|
327
|
+
return null;
|
|
328
|
+
}
|
|
329
|
+
return "".concat(parentFile.pkgName, "@").concat(parentFile.pkgVersion);
|
|
330
|
+
}).filter(Boolean)
|
|
331
|
+
);
|
|
328
332
|
})));
|
|
329
|
-
return parentPkgs
|
|
333
|
+
return parentPkgs.filter(function(parentPkg) {
|
|
334
|
+
return parentPkg;
|
|
335
|
+
});
|
|
330
336
|
};
|
|
331
337
|
var traceFiles = function() {
|
|
332
338
|
var _ref = _async_to_generator(function(entryFiles, serverRootDir) {
|
|
@@ -340,34 +346,7 @@ var traceFiles = function() {
|
|
|
340
346
|
4,
|
|
341
347
|
nodeFileTrace(entryFiles, {
|
|
342
348
|
base,
|
|
343
|
-
processCwd: serverRootDir
|
|
344
|
-
resolve: function() {
|
|
345
|
-
var _ref2 = _async_to_generator(function(id, parent, job, isCjs) {
|
|
346
|
-
return _ts_generator(this, function(_state2) {
|
|
347
|
-
if (id.startsWith("@modern-js/prod-server")) {
|
|
348
|
-
return [
|
|
349
|
-
2,
|
|
350
|
-
require.resolve(id, {
|
|
351
|
-
paths: [
|
|
352
|
-
require.resolve("@modern-js/app-tools")
|
|
353
|
-
]
|
|
354
|
-
})
|
|
355
|
-
];
|
|
356
|
-
} else {
|
|
357
|
-
return [
|
|
358
|
-
2,
|
|
359
|
-
resolve(id, parent, job, isCjs)
|
|
360
|
-
];
|
|
361
|
-
}
|
|
362
|
-
return [
|
|
363
|
-
2
|
|
364
|
-
];
|
|
365
|
-
});
|
|
366
|
-
});
|
|
367
|
-
return function(id, parent, job, isCjs) {
|
|
368
|
-
return _ref2.apply(this, arguments);
|
|
369
|
-
};
|
|
370
|
-
}()
|
|
349
|
+
processCwd: serverRootDir
|
|
371
350
|
})
|
|
372
351
|
];
|
|
373
352
|
case 1:
|
|
@@ -275,9 +275,13 @@ var createNetlifyPreset = function(appContext, modernConfig, needModernServer) {
|
|
|
275
275
|
}
|
|
276
276
|
return [
|
|
277
277
|
4,
|
|
278
|
-
handleDependencies(
|
|
279
|
-
|
|
280
|
-
|
|
278
|
+
handleDependencies({
|
|
279
|
+
appDir: appDirectory,
|
|
280
|
+
serverRootDir: funcsDirectory,
|
|
281
|
+
includeEntries: [
|
|
282
|
+
require.resolve("@modern-js/prod-server")
|
|
283
|
+
]
|
|
284
|
+
})
|
|
281
285
|
];
|
|
282
286
|
case 3:
|
|
283
287
|
_state.sent();
|
|
@@ -108,9 +108,14 @@ var createNodePreset = function(appContext, config) {
|
|
|
108
108
|
};
|
|
109
109
|
return [
|
|
110
110
|
4,
|
|
111
|
-
handleDependencies(
|
|
112
|
-
|
|
113
|
-
|
|
111
|
+
handleDependencies({
|
|
112
|
+
appDir: appDirectory,
|
|
113
|
+
serverRootDir: outputDirectory,
|
|
114
|
+
includeEntries: [
|
|
115
|
+
require.resolve("@modern-js/prod-server")
|
|
116
|
+
],
|
|
117
|
+
entryFilter: filter
|
|
118
|
+
})
|
|
114
119
|
];
|
|
115
120
|
case 1:
|
|
116
121
|
_state.sent();
|
|
@@ -209,9 +209,13 @@ var createVercelPreset = function(appContext, modernConfig, needModernServer) {
|
|
|
209
209
|
}
|
|
210
210
|
return [
|
|
211
211
|
4,
|
|
212
|
-
handleDependencies(
|
|
213
|
-
|
|
214
|
-
|
|
212
|
+
handleDependencies({
|
|
213
|
+
appDir: appDirectory,
|
|
214
|
+
serverRootDir: funcsDirectory,
|
|
215
|
+
includeEntries: [
|
|
216
|
+
require.resolve("@modern-js/prod-server")
|
|
217
|
+
]
|
|
218
|
+
})
|
|
215
219
|
];
|
|
216
220
|
case 1:
|
|
217
221
|
_state.sent();
|
package/dist/esm-node/index.js
CHANGED
|
@@ -1,21 +1,11 @@
|
|
|
1
|
-
import path
|
|
1
|
+
import path from "node:path";
|
|
2
2
|
import { fs as fse, pkgUp, semver } from "@modern-js/utils";
|
|
3
3
|
import { readPackageJSON } from "pkg-types";
|
|
4
4
|
import { parseNodeModulePath } from "mlly";
|
|
5
|
-
import { linkPackage, writePackage, isFile, findEntryFiles, traceFiles, findPackageParents, resolveTracedPath } from "./utils";
|
|
6
|
-
const handleDependencies = async (appDir, serverRootDir,
|
|
5
|
+
import { linkPackage, writePackage, isFile, findEntryFiles, traceFiles as defaultTraceFiles, findPackageParents, resolveTracedPath, readDirRecursive } from "./utils";
|
|
6
|
+
const handleDependencies = async ({ appDir, serverRootDir, includeEntries, traceFiles = defaultTraceFiles, entryFilter, modifyPackageJson, copyWholePackage }) => {
|
|
7
7
|
const base = "/";
|
|
8
8
|
const entryFiles = await findEntryFiles(serverRootDir, entryFilter);
|
|
9
|
-
const includeEntries = include.map((item) => {
|
|
10
|
-
if (isAbsolute(item)) {
|
|
11
|
-
return item;
|
|
12
|
-
}
|
|
13
|
-
try {
|
|
14
|
-
return require.resolve(item);
|
|
15
|
-
} catch (error) {
|
|
16
|
-
}
|
|
17
|
-
return item;
|
|
18
|
-
});
|
|
19
9
|
const fileTrace = await traceFiles(entryFiles.concat(includeEntries), serverRootDir, base);
|
|
20
10
|
const currentProjectModules = path.join(appDir, "node_modules");
|
|
21
11
|
const tracedFiles = Object.fromEntries(await Promise.all([
|
|
@@ -110,9 +100,18 @@ const handleDependencies = async (appDir, serverRootDir, include, entryFilter) =
|
|
|
110
100
|
}
|
|
111
101
|
tracedPackage.versions[pkgJSON.version] = tracedPackageVersion;
|
|
112
102
|
}
|
|
113
|
-
tracedFile.path.startsWith(tracedFile.pkgPath) && tracedPackageVersion.path === tracedFile.pkgPath && tracedPackageVersion.files.push(tracedFile.path);
|
|
114
103
|
tracedFile.pkgName = pkgName;
|
|
115
104
|
tracedFile.pkgVersion = pkgJSON.version;
|
|
105
|
+
const shouldCopyWholePackage = copyWholePackage === null || copyWholePackage === void 0 ? void 0 : copyWholePackage(pkgName);
|
|
106
|
+
if (tracedFile.path.startsWith(tracedFile.pkgPath) && // Merged package files are based on the version, not on paths, to handle some boundary cases
|
|
107
|
+
tracedPackageVersion.pkgJSON.version === tracedFile.pkgVersion) {
|
|
108
|
+
if (shouldCopyWholePackage) {
|
|
109
|
+
const allFiles = await readDirRecursive(tracedFile.pkgPath);
|
|
110
|
+
tracedPackageVersion.files.push(...allFiles);
|
|
111
|
+
} else {
|
|
112
|
+
tracedPackageVersion.files.push(tracedFile.path);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
116
115
|
}
|
|
117
116
|
const multiVersionPkgs = {};
|
|
118
117
|
const singleVersionPackages = [];
|
|
@@ -130,7 +129,11 @@ const handleDependencies = async (appDir, serverRootDir, include, entryFilter) =
|
|
|
130
129
|
await Promise.all(singleVersionPackages.map((pkgName) => {
|
|
131
130
|
const pkg = tracedPackages[pkgName];
|
|
132
131
|
const version = Object.keys(pkg.versions)[0];
|
|
133
|
-
return writePackage(
|
|
132
|
+
return writePackage({
|
|
133
|
+
pkg,
|
|
134
|
+
version,
|
|
135
|
+
projectDir: serverRootDir
|
|
136
|
+
});
|
|
134
137
|
}));
|
|
135
138
|
const projectPkgJson = await readPackageJSON(serverRootDir).catch(() => ({}));
|
|
136
139
|
for (const [pkgName, pkgVersions] of Object.entries(multiVersionPkgs)) {
|
|
@@ -157,7 +160,12 @@ const handleDependencies = async (appDir, serverRootDir, include, entryFilter) =
|
|
|
157
160
|
for (const [version, parentPkgs] of versionEntires) {
|
|
158
161
|
const pkg = tracedPackages[pkgName];
|
|
159
162
|
const pkgDestPath = `.modernjs/${pkgName}@${version}/node_modules/${pkgName}`;
|
|
160
|
-
await writePackage(
|
|
163
|
+
await writePackage({
|
|
164
|
+
pkg,
|
|
165
|
+
version,
|
|
166
|
+
projectDir: serverRootDir,
|
|
167
|
+
_pkgPath: pkgDestPath
|
|
168
|
+
});
|
|
161
169
|
await linkPackage(pkgDestPath, `${pkgName}`, serverRootDir);
|
|
162
170
|
for (const parentPkg of parentPkgs) {
|
|
163
171
|
const parentPkgName = parentPkg.replace(/@[^@]+$/, "");
|
|
@@ -166,7 +174,7 @@ const handleDependencies = async (appDir, serverRootDir, include, entryFilter) =
|
|
|
166
174
|
}
|
|
167
175
|
}
|
|
168
176
|
const outputPkgPath = path.join(serverRootDir, "package.json");
|
|
169
|
-
|
|
177
|
+
const newPkgJson = {
|
|
170
178
|
name: `${projectPkgJson.name || "modernjs-project"}-prod`,
|
|
171
179
|
version: projectPkgJson.version || "0.0.0",
|
|
172
180
|
private: true,
|
|
@@ -176,7 +184,9 @@ const handleDependencies = async (appDir, serverRootDir, include, entryFilter) =
|
|
|
176
184
|
Object.keys(pkg.versions)[0]
|
|
177
185
|
])
|
|
178
186
|
].sort(([a], [b]) => a.localeCompare(b)))
|
|
179
|
-
}
|
|
187
|
+
};
|
|
188
|
+
const finalPkgJson = (modifyPackageJson === null || modifyPackageJson === void 0 ? void 0 : modifyPackageJson(newPkgJson)) || newPkgJson;
|
|
189
|
+
await fse.writeJSON(outputPkgPath, finalPkgJson);
|
|
180
190
|
};
|
|
181
191
|
export {
|
|
182
192
|
handleDependencies
|
|
@@ -2,7 +2,7 @@ import path from "path";
|
|
|
2
2
|
import os from "node:os";
|
|
3
3
|
import { fs as fse } from "@modern-js/utils";
|
|
4
4
|
import { parseNodeModulePath } from "mlly";
|
|
5
|
-
import { nodeFileTrace
|
|
5
|
+
import { nodeFileTrace } from "@vercel/nft";
|
|
6
6
|
function applyPublicCondition(pkg) {
|
|
7
7
|
var _pkg_publishConfig;
|
|
8
8
|
if (pkg === null || pkg === void 0 ? void 0 : (_pkg_publishConfig = pkg.publishConfig) === null || _pkg_publishConfig === void 0 ? void 0 : _pkg_publishConfig.exports) {
|
|
@@ -10,7 +10,8 @@ function applyPublicCondition(pkg) {
|
|
|
10
10
|
pkg.exports = pkg === null || pkg === void 0 ? void 0 : (_pkg_publishConfig1 = pkg.publishConfig) === null || _pkg_publishConfig1 === void 0 ? void 0 : _pkg_publishConfig1.exports;
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
-
const writePackage = async (
|
|
13
|
+
const writePackage = async (options) => {
|
|
14
|
+
const { pkg, version, projectDir, _pkgPath } = options;
|
|
14
15
|
const pkgPath = _pkgPath || pkg.name;
|
|
15
16
|
for (const src of pkg.versions[version].files) {
|
|
16
17
|
if (src.includes("node_modules")) {
|
|
@@ -84,31 +85,23 @@ const findEntryFiles = async (rootDir, entryFilter) => {
|
|
|
84
85
|
const findPackageParents = (pkg, version, tracedFiles) => {
|
|
85
86
|
const versionFiles = pkg.versions[version].files.map((path2) => tracedFiles[path2]);
|
|
86
87
|
const parentPkgs = [
|
|
87
|
-
...new Set(versionFiles.flatMap((file) =>
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
88
|
+
...new Set(versionFiles.flatMap((file) => (
|
|
89
|
+
// Because it supports copyWholePackage configuration, not all files exist.
|
|
90
|
+
file === null || file === void 0 ? void 0 : file.parents.map((parentPath) => {
|
|
91
|
+
const parentFile = tracedFiles[parentPath];
|
|
92
|
+
if (!parentFile || parentFile.pkgName === pkg.name) {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
return `${parentFile.pkgName}@${parentFile.pkgVersion}`;
|
|
96
|
+
}).filter(Boolean)
|
|
97
|
+
)))
|
|
94
98
|
];
|
|
95
|
-
return parentPkgs;
|
|
99
|
+
return parentPkgs.filter((parentPkg) => parentPkg);
|
|
96
100
|
};
|
|
97
101
|
const traceFiles = async (entryFiles, serverRootDir, base = "/") => {
|
|
98
102
|
return await nodeFileTrace(entryFiles, {
|
|
99
103
|
base,
|
|
100
|
-
processCwd: serverRootDir
|
|
101
|
-
resolve: async (id, parent, job, isCjs) => {
|
|
102
|
-
if (id.startsWith("@modern-js/prod-server")) {
|
|
103
|
-
return require.resolve(id, {
|
|
104
|
-
paths: [
|
|
105
|
-
require.resolve("@modern-js/app-tools")
|
|
106
|
-
]
|
|
107
|
-
});
|
|
108
|
-
} else {
|
|
109
|
-
return resolve(id, parent, job, isCjs);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
104
|
+
processCwd: serverRootDir
|
|
112
105
|
});
|
|
113
106
|
};
|
|
114
107
|
const resolveTracedPath = async (base, p) => fse.realpath(path.resolve(base, p));
|
|
@@ -93,9 +93,13 @@ const createNetlifyPreset = (appContext, modernConfig, needModernServer) => {
|
|
|
93
93
|
if (!needModernServer) {
|
|
94
94
|
return;
|
|
95
95
|
}
|
|
96
|
-
await handleDependencies(
|
|
97
|
-
|
|
98
|
-
|
|
96
|
+
await handleDependencies({
|
|
97
|
+
appDir: appDirectory,
|
|
98
|
+
serverRootDir: funcsDirectory,
|
|
99
|
+
includeEntries: [
|
|
100
|
+
require.resolve("@modern-js/prod-server")
|
|
101
|
+
]
|
|
102
|
+
});
|
|
99
103
|
}
|
|
100
104
|
};
|
|
101
105
|
};
|
|
@@ -47,9 +47,14 @@ const createNodePreset = (appContext, config) => {
|
|
|
47
47
|
const filter = (filePath) => {
|
|
48
48
|
return !filePath.startsWith(staticDirectory);
|
|
49
49
|
};
|
|
50
|
-
await handleDependencies(
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
await handleDependencies({
|
|
51
|
+
appDir: appDirectory,
|
|
52
|
+
serverRootDir: outputDirectory,
|
|
53
|
+
includeEntries: [
|
|
54
|
+
require.resolve("@modern-js/prod-server")
|
|
55
|
+
],
|
|
56
|
+
entryFilter: filter
|
|
57
|
+
});
|
|
53
58
|
}
|
|
54
59
|
};
|
|
55
60
|
};
|
|
@@ -105,9 +105,13 @@ const createVercelPreset = (appContext, modernConfig, needModernServer) => {
|
|
|
105
105
|
if (!needModernServer) {
|
|
106
106
|
return;
|
|
107
107
|
}
|
|
108
|
-
await handleDependencies(
|
|
109
|
-
|
|
110
|
-
|
|
108
|
+
await handleDependencies({
|
|
109
|
+
appDir: appDirectory,
|
|
110
|
+
serverRootDir: funcsDirectory,
|
|
111
|
+
includeEntries: [
|
|
112
|
+
require.resolve("@modern-js/prod-server")
|
|
113
|
+
]
|
|
114
|
+
});
|
|
111
115
|
}
|
|
112
116
|
};
|
|
113
117
|
};
|
|
@@ -1 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
import type { PackageJson } from 'pkg-types';
|
|
2
|
+
import { traceFiles as defaultTraceFiles } from './utils';
|
|
3
|
+
export declare const handleDependencies: ({ appDir, serverRootDir, includeEntries, traceFiles, entryFilter, modifyPackageJson, copyWholePackage, }: {
|
|
4
|
+
appDir: string;
|
|
5
|
+
serverRootDir: string;
|
|
6
|
+
includeEntries: string[];
|
|
7
|
+
traceFiles?: ((entryFiles: string[], serverRootDir: string, base?: string) => Promise<import("@vercel/nft").NodeFileTraceResult>) | undefined;
|
|
8
|
+
entryFilter?: ((filePath: string) => boolean) | undefined;
|
|
9
|
+
modifyPackageJson?: ((pkgJson: PackageJson) => PackageJson) | undefined;
|
|
10
|
+
copyWholePackage?: ((pkgName: string) => boolean) | undefined;
|
|
11
|
+
}) => Promise<void>;
|
|
@@ -17,7 +17,13 @@ export type TracedFile = {
|
|
|
17
17
|
pkgName: string;
|
|
18
18
|
pkgVersion?: string;
|
|
19
19
|
};
|
|
20
|
-
|
|
20
|
+
interface WritePackageOptions {
|
|
21
|
+
pkg: TracedPackage;
|
|
22
|
+
version: string;
|
|
23
|
+
projectDir: string;
|
|
24
|
+
_pkgPath?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare const writePackage: (options: WritePackageOptions) => Promise<void>;
|
|
21
27
|
export declare const linkPackage: (from: string, to: string, projectRootDir: string) => Promise<void>;
|
|
22
28
|
interface ReadDirOptions {
|
|
23
29
|
filter?: (filePath: string) => boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { handleDependencies } from './dependencies';
|
package/package.json
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"modern",
|
|
16
16
|
"modern.js"
|
|
17
17
|
],
|
|
18
|
-
"version": "2.54.
|
|
18
|
+
"version": "2.54.5",
|
|
19
19
|
"jsnext:source": "./src/index.ts",
|
|
20
20
|
"types": "./dist/types/index.d.ts",
|
|
21
21
|
"main": "./dist/cjs/index.js",
|
|
@@ -43,6 +43,11 @@
|
|
|
43
43
|
"types": "./dist/types/exports/server.d.ts",
|
|
44
44
|
"jsnext:source": "./src/exports/server.ts",
|
|
45
45
|
"default": "./dist/cjs/exports/server.js"
|
|
46
|
+
},
|
|
47
|
+
"./deploy": {
|
|
48
|
+
"types": "./dist/types/plugins/deploy/exports.d.ts",
|
|
49
|
+
"jsnext:source": "./src/plugins/deploy/exports.ts",
|
|
50
|
+
"default": "./dist/cjs/plugins/deploy/exports.js"
|
|
46
51
|
}
|
|
47
52
|
},
|
|
48
53
|
"engines": {
|
|
@@ -58,6 +63,9 @@
|
|
|
58
63
|
],
|
|
59
64
|
"server": [
|
|
60
65
|
"./dist/types/exports/server.d.ts"
|
|
66
|
+
],
|
|
67
|
+
"deploy": [
|
|
68
|
+
"./dist/types/plugins/deploy/exports.d.ts"
|
|
61
69
|
]
|
|
62
70
|
}
|
|
63
71
|
},
|
|
@@ -69,9 +77,9 @@
|
|
|
69
77
|
"@babel/parser": "^7.22.15",
|
|
70
78
|
"@babel/traverse": "^7.23.2",
|
|
71
79
|
"@babel/types": "^7.23.0",
|
|
72
|
-
"@rsbuild/plugin-node-polyfill": "0.7.
|
|
73
|
-
"@rsbuild/shared": "0.7.
|
|
74
|
-
"@rsbuild/core": "0.7.
|
|
80
|
+
"@rsbuild/plugin-node-polyfill": "0.7.10",
|
|
81
|
+
"@rsbuild/shared": "0.7.10",
|
|
82
|
+
"@rsbuild/core": "0.7.10",
|
|
75
83
|
"@swc/helpers": "0.5.3",
|
|
76
84
|
"@vercel/nft": "^0.26.4",
|
|
77
85
|
"es-module-lexer": "^1.1.0",
|
|
@@ -80,23 +88,23 @@
|
|
|
80
88
|
"mlly": "^1.6.1",
|
|
81
89
|
"pkg-types": "^1.1.0",
|
|
82
90
|
"std-env": "^3.7.0",
|
|
83
|
-
"@modern-js/core": "2.54.
|
|
84
|
-
"@modern-js/node-bundle-require": "2.54.
|
|
85
|
-
"@modern-js/plugin-
|
|
86
|
-
"@modern-js/plugin-
|
|
87
|
-
"@modern-js/plugin": "2.54.
|
|
88
|
-
"@modern-js/
|
|
89
|
-
"@modern-js/
|
|
90
|
-
"@modern-js/
|
|
91
|
-
"@modern-js/server": "2.54.
|
|
92
|
-
"@modern-js/
|
|
93
|
-
"@modern-js/server-
|
|
94
|
-
"@modern-js/
|
|
95
|
-
"@modern-js/
|
|
96
|
-
"@modern-js/utils": "2.54.
|
|
91
|
+
"@modern-js/core": "2.54.5",
|
|
92
|
+
"@modern-js/node-bundle-require": "2.54.5",
|
|
93
|
+
"@modern-js/plugin-data-loader": "2.54.5",
|
|
94
|
+
"@modern-js/plugin-i18n": "2.54.5",
|
|
95
|
+
"@modern-js/plugin": "2.54.5",
|
|
96
|
+
"@modern-js/prod-server": "2.54.5",
|
|
97
|
+
"@modern-js/rsbuild-plugin-esbuild": "2.54.5",
|
|
98
|
+
"@modern-js/plugin-lint": "2.54.5",
|
|
99
|
+
"@modern-js/server": "2.54.5",
|
|
100
|
+
"@modern-js/server-core": "2.54.5",
|
|
101
|
+
"@modern-js/server-utils": "2.54.5",
|
|
102
|
+
"@modern-js/types": "2.54.5",
|
|
103
|
+
"@modern-js/uni-builder": "2.54.5",
|
|
104
|
+
"@modern-js/utils": "2.54.5"
|
|
97
105
|
},
|
|
98
106
|
"devDependencies": {
|
|
99
|
-
"@rsbuild/plugin-swc": "0.7.
|
|
107
|
+
"@rsbuild/plugin-swc": "0.7.10",
|
|
100
108
|
"@types/babel__traverse": "7.18.5",
|
|
101
109
|
"@types/jest": "^29",
|
|
102
110
|
"@types/node": "^14",
|
|
@@ -105,8 +113,8 @@
|
|
|
105
113
|
"tsconfig-paths": "^4.2.0",
|
|
106
114
|
"typescript": "^5",
|
|
107
115
|
"webpack": "^5.92.0",
|
|
108
|
-
"@scripts/
|
|
109
|
-
"@scripts/
|
|
116
|
+
"@scripts/build": "2.54.5",
|
|
117
|
+
"@scripts/jest-config": "2.54.5"
|
|
110
118
|
},
|
|
111
119
|
"sideEffects": false,
|
|
112
120
|
"publishConfig": {
|