@forge/bundler
7.0.2-next.3-experimental-09496167.0.2-next.10
out/dependencies.js~
out/dependencies.jsModified+26−10
Index: package/out/dependencies.js
===================================================================
--- package/out/dependencies.js
+++ package/out/dependencies.js
@@ -1,6 +1,8 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
+exports.DEFAULT_COPY_DEPENDENCIES_OPTIONS = void 0;
+exports.getProductionDependencies = getProductionDependencies;
exports.copyProductionDependencies = copyProductionDependencies;
const tslib_1 = require("tslib");
const fs_1 = require("fs");
const promises_1 = require("fs/promises");
@@ -24,13 +26,17 @@
}
}
return null;
}
-function transplantDir(source, destination, directory) {
- const relative = path_1.default.relative(source, directory);
- return path_1.default.join(destination, relative);
+exports.DEFAULT_COPY_DEPENDENCIES_OPTIONS = {
+ exclude: ['@forge/react', '@forge/bridge']
+};
+async function getProductionDependencies(moduleDir, options) {
+ const result = new Map();
+ await enumerateProductionDependencies(moduleDir, options ?? {}, moduleDir, result, new Set());
+ return result;
}
-async function copyProductionDependencies(moduleDir, target, options) {
+async function enumerateProductionDependencies(moduleDir, options, root, result, visited) {
const packageDef = await readPackageJSON(moduleDir);
if (!packageDef) {
return;
}
@@ -40,15 +46,25 @@
continue;
}
const source = await dependencyDir(moduleDir, dependency);
if (source) {
- const destination = transplantDir(moduleDir, target, source);
- if ((0, fs_1.existsSync)(destination)) {
+ const destination = path_1.default.relative(root, source);
+ if (visited.has(destination)) {
continue;
}
- await (0, fs_extra_1.copy)(source, destination, {
- filter: (src) => path_1.default.basename(src) !== common_1.NODE_MODULES_DIR
- });
- await copyProductionDependencies(source, destination, options);
+ visited.add(destination);
+ for (const entry of await (0, promises_1.readdir)(source)) {
+ if (entry === common_1.NODE_MODULES_DIR) {
+ continue;
+ }
+ result.set(path_1.default.join(destination, entry), path_1.default.join(source, entry));
+ }
+ await enumerateProductionDependencies(source, options, root, result, visited);
}
}
}
+async function copyProductionDependencies(moduleDir, target, options) {
+ const dependencies = await getProductionDependencies(moduleDir, options);
+ for (const [destination, source] of dependencies.entries()) {
+ await (0, fs_extra_1.copy)(source, path_1.default.join(target, destination));
+ }
+}