| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- 'use strict'
- const fs = require('fs')
- const path = require('path')
- /**
- * Webpack 4 ��ʶ�� package.json �� exports ��·����@aws-sdk v3 ����ʹ�� exports��
- * �轫 @aws-sdk/<pkg>/<subpath> ӳ�䵽ʵ�� 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 }
|