( packageName, outputNodeModulesDir, bundledPackages, fromDir = repoRoot )
| 221 | } |
| 222 | |
| 223 | function copyDependencyTree( |
| 224 | packageName, |
| 225 | outputNodeModulesDir, |
| 226 | bundledPackages, |
| 227 | fromDir = repoRoot |
| 228 | ) { |
| 229 | if (bundledPackages.has(packageName)) { |
| 230 | return; |
| 231 | } |
| 232 | |
| 233 | const packageDir = resolvePackageDir(packageName, fromDir); |
| 234 | const packageJsonPath = path.join(packageDir, 'package.json'); |
| 235 | const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')); |
| 236 | bundledPackages.add(packageName); |
| 237 | |
| 238 | copyDirectory(packageDir, path.join(outputNodeModulesDir, packageName)); |
| 239 | |
| 240 | for (const dependency of Object.keys(packageJson.dependencies || {})) { |
| 241 | copyDependencyTree(dependency, outputNodeModulesDir, bundledPackages, packageDir); |
| 242 | } |
| 243 | |
| 244 | for (const dependency of Object.keys(packageJson.optionalDependencies || {})) { |
| 245 | copyDependencyTree(dependency, outputNodeModulesDir, bundledPackages, packageDir); |
| 246 | } |
| 247 | } |
| 248 | |
| 249 | function resolvePackageDir(packageName, fromDir) { |
| 250 | let currentDir = fromDir; |
no test coverage detected