UNPKG

11 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/util/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { asArray, DebugLogger, InvalidConfigurationError, log, deepAssign } from \"builder-util\"\nimport { statOrNull } from \"builder-util/out/fs\"\nimport { readJson } from \"fs-extra-p\"\nimport { Lazy } from \"lazy-val\"\nimport * as path from \"path\"\nimport { getConfig as _getConfig, loadParentConfig, orNullIfFileNotExist, ReadConfigRequest, validateConfig as _validateConfig } from \"read-config-file\"\nimport { Configuration } from \"../configuration\"\nimport { reactCra } from \"../presets/rectCra\"\n\n// https://github.com/electron-userland/electron-builder/issues/1847\nfunction mergePublish(config: Configuration, configFromOptions: Configuration) {\n // if config from disk doesn't have publish (or object), no need to handle, it will be simply merged by deepAssign\n const publish = Array.isArray(config.publish) ? configFromOptions.publish : null\n if (publish != null) {\n delete (configFromOptions as any).publish\n }\n\n deepAssign(config, configFromOptions)\n\n if (publish == null) {\n return\n }\n\n const listOnDisk = config.publish as Array<any>\n if (listOnDisk.length === 0) {\n config.publish = publish\n }\n else {\n // apply to first\n Object.assign(listOnDisk[0], publish)\n }\n}\n\nexport async function getConfig(projectDir: string, configPath: string | null, configFromOptions: Configuration | null | undefined, packageMetadata: Lazy<{ [key: string]: any } | null> = new Lazy(() => orNullIfFileNotExist(readJson(path.join(projectDir, \"package.json\"))))): Promise<Configuration> {\n const configRequest: ReadConfigRequest = {packageKey: \"build\", configFilename: \"electron-builder\", projectDir, packageMetadata}\n const configAndEffectiveFile = await _getConfig<Configuration>(configRequest, configPath)\n const config = configAndEffectiveFile == null ? {} : configAndEffectiveFile.result\n if (configFromOptions != null) {\n mergePublish(config, configFromOptions)\n }\n\n if (configAndEffectiveFile != null) {\n log.info({file: configAndEffectiveFile.configFile == null ? 'package.json (\"build\" field)' : configAndEffectiveFile.configFile}, \"loaded configuration\")\n }\n\n let extendsSpec = config.extends\n if (extendsSpec == null && extendsSpec !== null) {\n const metadata = await packageMetadata.value || {}\n const devDependencies = metadata.devDependencies\n const dependencies = metadata.dependencies\n if ((dependencies != null && \"react-scripts\" in dependencies) || (devDependencies != null && \"react-scripts\" in devDependencies)) {\n extendsSpec = \"react-cra\"\n config.extends = extendsSpec\n }\n else if (devDependencies != null && \"electron-webpack\" in devDependencies) {\n extendsSpec = \"electron-webpack/electron-builder.yml\"\n config.extends = extendsSpec\n }\n }\n\n if (extendsSpec == null) {\n return deepAssign(getDefaultConfig(), config)\n }\n\n let parentConfig: Configuration | null\n if (extendsSpec === \"react-cra\") {\n parentConfig = await reactCra(projectDir)\n log.info({preset: extendsSpec}, \"loaded parent configuration\")\n }\n else {\n const parentConfigAndEffectiveFile = await loadParentConfig<Configuration>(configRequest, extendsSpec)\n log.info({file: parentConfigAndEffectiveFile.configFile}, \"loaded parent configuration\")\n parentConfig = parentConfigAndEffectiveFile.result\n }\n\n // electron-webpack and electrify client config - want to exclude some files\n // we add client files configuration to main parent file matcher\n if (parentConfig.files != null && config.files != null && (Array.isArray(config.files) || typeof config.files === \"string\") && Array.isArray(parentConfig.files) && parentConfig.files.length > 0) {\n const mainFileSet = parentConfig.files[0]\n if (typeof mainFileSet === \"object\" && (mainFileSet.from == null || mainFileSet.from === \".\")) {\n mainFileSet.filter = asArray(mainFileSet.filter)\n mainFileSet.filter.push(...asArray(config.files as any))\n delete (config as any).files\n }\n }\n\n return deepAssign(getDefaultConfig(), parentConfig, config)\n}\n\nfunction getDefaultConfig(): Configuration {\n return {\n directories: {\n output: \"dist\",\n buildResources: \"build\",\n },\n }\n}\n\nconst schemeDataPromise = new Lazy(() => readJson(path.join(__dirname, \"..\", \"..\", \"scheme.json\")))\n\nexport async function validateConfig(config: Configuration, debugLogger: DebugLogger) {\n const extraMetadata = config.extraMetadata\n if (extraMetadata != null) {\n if (extraMetadata.build != null) {\n throw new InvalidConfigurationError(`--em.build is deprecated, please specify as -c\"`)\n }\n if (extraMetadata.directories != null) {\n throw new InvalidConfigurationError(`--em.directories is deprecated, please specify as -c.directories\"`)\n }\n }\n\n // noinspection JSDeprecatedSymbols\n if (config.npmSkipBuildFromSource === false) {\n config.buildDependenciesFromSource = false\n }\n\n await _validateConfig(config, schemeDataPromise, (message, errors) => {\n if (debugLogger.isEnabled) {\n debugLogger.add(\"invalidConfig\", JSON.stringify(errors, null, 2))\n }\n\n return `${message}\n\nHow to fix:\n1. Open https://electron.build/configuration/configuration\n2. Search the option name on the page.\n * Not found? The option was deprecated or not exists (check spelling).\n * Found? Check that the option in the appropriate place. e.g. \"title\" only in the \"dmg\", not in the root.\n`\n })\n}\n\nconst DEFAULT_APP_DIR_NAMES = [\"app\", \"www\"]\n\nexport async function computeDefaultAppDirectory(projectDir: string, userAppDir: string | null | undefined): Promise<string> {\n if (userAppDir != null) {\n const absolutePath = path.resolve(projectDir, userAppDir)\n const stat = await statOrNull(absolutePath)\n if (stat == null) {\n throw new InvalidConfigurationError(`Application directory ${userAppDir} doesn't exists`)\n }\n else if (!stat.isDirectory()) {\n throw new InvalidConfigurationError(`Application directory ${userAppDir} is not a directory`)\n }\n else if (projectDir === absolutePath) {\n log.warn({appDirectory: userAppDir}, `Specified application directory equals to project dir — superfluous or wrong configuration`)\n }\n return absolutePath\n }\n\n for (const dir of DEFAULT_APP_DIR_NAMES) {\n const absolutePath = path.join(projectDir, dir)\n const packageJson = path.join(absolutePath, \"package.json\")\n const stat = await statOrNull(packageJson)\n if (stat != null && stat.isFile()) {\n return absolutePath\n }\n }\n return projectDir\n}"],"sourceRoot":""}