'use strict' const fs = require('fs') const path = require('path') /** * Webpack 4 ��ʶ�� package.json �� exports ��·����@aws-sdk v3 ����ʹ�� exports�� * �轫 @aws-sdk// ӳ�䵽ʵ�� dist �ļ������� browser �������� */ function pickExportTarget(exportConfig) { if (!exportConfig || typeof exportConfig !== 'object') { return null } const browser = exportConfig.browser if (browser) { if (typeof browser === 'string') { return browser } return browser.import || browser.require || browser.module } return exportConfig.module || exportConfig.import || exportConfig.require || exportConfig.node } function buildAwsSdkAliases(projectRoot) { const aliases = {} const awsSdkDir = path.join(projectRoot, 'node_modules', '@aws-sdk') if (!fs.existsSync(awsSdkDir)) { return aliases } for (const pkgName of fs.readdirSync(awsSdkDir)) { const pkgRoot = path.join(awsSdkDir, pkgName) const pkgJsonPath = path.join(pkgRoot, 'package.json') if (!fs.existsSync(pkgJsonPath)) { continue } let pkgJson try { pkgJson = require(pkgJsonPath) } catch (e) { continue } const exportsField = pkgJson.exports if (!exportsField || typeof exportsField !== 'object') { continue } for (const [subpath, exportConfig] of Object.entries(exportsField)) { if (subpath === '.' || subpath === './package.json') { continue } if (!subpath.startsWith('./')) { continue } const target = pickExportTarget(exportConfig) if (!target || typeof target !== 'string') { continue } const aliasKey = `@aws-sdk/${pkgName}/${subpath.slice(2)}` aliases[aliasKey] = path.resolve(pkgRoot, target) } } return aliases } module.exports = { buildAwsSdkAliases }