jiuyiUniapp/service/node_modules/@react-native/community-cli-plugin/dist/commands/bundle/saveAssets.js

126 lines
3.5 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true,
});
exports.default = void 0;
var _assetCatalogIOS = require("./assetCatalogIOS");
var _filterPlatformAssetScales = _interopRequireDefault(
require("./filterPlatformAssetScales")
);
var _getAssetDestPathAndroid = _interopRequireDefault(
require("./getAssetDestPathAndroid")
);
var _getAssetDestPathIOS = _interopRequireDefault(
require("./getAssetDestPathIOS")
);
var _chalk = _interopRequireDefault(require("chalk"));
var _fs = _interopRequireDefault(require("fs"));
var _path = _interopRequireDefault(require("path"));
function _interopRequireDefault(e) {
return e && e.__esModule ? e : { default: e };
}
async function saveAssets(assets, platform, assetsDest, assetCatalogDest) {
if (assetsDest == null) {
console.warn("Warning: Assets destination folder is not set, skipping...");
return;
}
const filesToCopy = {};
const getAssetDestPath =
platform === "android"
? _getAssetDestPathAndroid.default
: _getAssetDestPathIOS.default;
const addAssetToCopy = (asset) => {
const validScales = new Set(
(0, _filterPlatformAssetScales.default)(platform, asset.scales)
);
asset.scales.forEach((scale, idx) => {
if (!validScales.has(scale)) {
return;
}
const src = asset.files[idx];
const dest = _path.default.join(
assetsDest,
getAssetDestPath(asset, scale)
);
filesToCopy[src] = dest;
});
};
if (platform === "ios" && assetCatalogDest != null) {
const catalogDir = _path.default.join(
assetCatalogDest,
"RNAssets.xcassets"
);
if (!_fs.default.existsSync(catalogDir)) {
console.error(
`${_chalk.default.red(
"error"
)}: Could not find asset catalog 'RNAssets.xcassets' in ${assetCatalogDest}. Make sure to create it if it does not exist.`
);
return;
}
console.info("Adding images to asset catalog", catalogDir);
(0, _assetCatalogIOS.cleanAssetCatalog)(catalogDir);
for (const asset of assets) {
if ((0, _assetCatalogIOS.isCatalogAsset)(asset)) {
const imageSet = (0, _assetCatalogIOS.getImageSet)(
catalogDir,
asset,
(0, _filterPlatformAssetScales.default)(platform, asset.scales)
);
(0, _assetCatalogIOS.writeImageSet)(imageSet);
} else {
addAssetToCopy(asset);
}
}
console.info("Done adding images to asset catalog");
} else {
assets.forEach(addAssetToCopy);
}
return copyAll(filesToCopy);
}
function copyAll(filesToCopy) {
const queue = Object.keys(filesToCopy);
if (queue.length === 0) {
return Promise.resolve();
}
console.info(`Copying ${queue.length} asset files`);
return new Promise((resolve, reject) => {
const copyNext = (error) => {
if (error) {
reject(error);
return;
}
if (queue.length === 0) {
console.info("Done copying assets");
resolve();
} else {
const src = queue.shift();
const dest = filesToCopy[src];
copy(src, dest, copyNext);
}
};
copyNext();
});
}
function copy(src, dest, callback) {
const destDir = _path.default.dirname(dest);
_fs.default.mkdir(
destDir,
{
recursive: true,
},
(err) => {
if (err) {
callback(err);
return;
}
_fs.default
.createReadStream(src)
.pipe(_fs.default.createWriteStream(dest))
.on("finish", callback);
}
);
}
var _default = (exports.default = saveAssets);