const SCRIPT_TEMPLATES = Object.freeze({ "ns-bundle": "ns-bundle", "start-[PLATFORM]-bundle": "npm run ns-bundle --[PLATFORM] --run-app", "build-[PLATFORM]-bundle": "npm run ns-bundle --[PLATFORM] --build-app", "publish-ios-bundle": "npm run ns-bundle --ios --publish-app", "generate-android-snapshot": "generate-android-snapshot --targetArchs arm,arm64,ia32 --install" }); const DEPRECATED_SCRIPT_TEMPLATES = Object.freeze([ "clean-[PLATFORM]", "prewebpack-[PLATFORM]", "webpack-[PLATFORM]", "prestart-[PLATFORM]-bundle", "prebuild-[PLATFORM]-bundle", ]); const PLATFORMS = Object.freeze(["android", "ios"]); function addNpmScripts(scripts = {}) { Object.keys(SCRIPT_TEMPLATES).forEach(name => { addPlatformScript(scripts, name, SCRIPT_TEMPLATES[name]); }); } function removeDeprecatedNpmScripts(scripts) { return removeNpmScripts(scripts, DEPRECATED_SCRIPT_TEMPLATES); } function removeNpmScripts(scripts, scriptTemplates = Object.keys(SCRIPT_TEMPLATES)) { scriptTemplates.forEach(templateName => { removePlatformScripts(scripts, templateName); }); } function addPlatformScript(scripts, nameTemplate, commandTemplate) { PLATFORMS.forEach(platform => { const name = nameTemplate.replace(/\[PLATFORM\]/g, platform); const command = commandTemplate.replace(/\[PLATFORM\]/g, platform); if (!scripts[name]) { console.info(`Registering script: ${name}`); scripts[name] = command; } }); } function removePlatformScripts(scripts, nameTemplate) { PLATFORMS.forEach(platform => { const name = nameTemplate.replace(/\[PLATFORM\]/g, platform); delete scripts[name]; }); } function forceUpdateNpmScripts(scripts) { removeDeprecatedNpmScripts(scripts); removeNpmScripts(scripts); addNpmScripts(scripts); } module.exports = { addNpmScripts, removeDeprecatedNpmScripts, removeNpmScripts, forceUpdateNpmScripts, };