123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589 |
- export interface CapacitorConfig {
- /**
- * The unique identifier of your packaged app.
- *
- * This is also known as the Bundle ID in iOS and the Application ID in
- * Android. It must be in reverse domain name notation, generally
- * representing a domain name that you or your company owns.
- *
- * @since 1.0.0
- */
- appId?: string;
- /**
- * The human-friendly name of your app.
- *
- * This should be what you'd see in the App Store, but can be changed after
- * within each native platform after it is generated.
- *
- * @since 1.0.0
- */
- appName?: string;
- /**
- * The directory of your compiled web assets.
- *
- * This directory should contain the final `index.html` of your app.
- *
- * @since 1.0.0
- */
- webDir?: string;
- /**
- * Whether to copy the Capacitor runtime bundle or not.
- *
- * If your app is not using a bundler, set this to `true`, then Capacitor
- * will create a `capacitor.js` file that you'll need to add as a script in
- * your `index.html` file.
- *
- * It's deprecated and will be removed in Capacitor 6
- *
- * @since 1.0.0
- * @deprecated 5.0.0
- * @default false
- */
- bundledWebRuntime?: boolean;
- /**
- * The build configuration (as defined by the native app) under which Capacitor
- * will send statements to the log system. This applies to log statements in
- * native code as well as statements redirected from JavaScript (`console.debug`,
- * `console.error`, etc.). Enabling logging will let statements render in the
- * Xcode and Android Studio windows but can leak information on device if enabled
- * in released builds.
- *
- * 'none' = logs are never produced
- * 'debug' = logs are produced in debug builds but not production builds
- * 'production' = logs are always produced
- *
- * @since 3.0.0
- * @default debug
- */
- loggingBehavior?: 'none' | 'debug' | 'production';
- /**
- * User agent of Capacitor Web View.
- *
- * @since 1.4.0
- */
- overrideUserAgent?: string;
- /**
- * String to append to the original user agent of Capacitor Web View.
- *
- * This is disregarded if `overrideUserAgent` is used.
- *
- * @since 1.4.0
- */
- appendUserAgent?: string;
- /**
- * Background color of the Capacitor Web View.
- *
- * @since 1.1.0
- */
- backgroundColor?: string;
- /**
- * Enable zooming within the Capacitor Web View.
- *
- * @default false
- * @since 6.0.0
- */
- zoomEnabled?: boolean;
- android?: {
- /**
- * Specify a custom path to the native Android project.
- *
- * @since 3.0.0
- * @default android
- */
- path?: string;
- /**
- * User agent of Capacitor Web View on Android.
- *
- * Overrides global `overrideUserAgent` option.
- *
- * @since 1.4.0
- */
- overrideUserAgent?: string;
- /**
- * String to append to the original user agent of Capacitor Web View for Android.
- *
- * Overrides global `appendUserAgent` option.
- *
- * This is disregarded if `overrideUserAgent` is used.
- *
- * @since 1.4.0
- */
- appendUserAgent?: string;
- /**
- * Background color of the Capacitor Web View for Android.
- *
- * Overrides global `backgroundColor` option.
- *
- * @since 1.1.0
- */
- backgroundColor?: string;
- /**
- * Enable zooming within the Capacitor Web View for Android.
- *
- * @default false
- * @since 6.0.0
- */
- zoomEnabled?: boolean;
- /**
- * Enable mixed content in the Capacitor Web View for Android.
- *
- * [Mixed
- * content](https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content)
- * is disabled by default for security. During development, you may need to
- * enable it to allow the Web View to load files from different schemes.
- *
- * **This is not intended for use in production.**
- *
- * @since 1.0.0
- * @default false
- */
- allowMixedContent?: boolean;
- /**
- * This enables a simpler keyboard which may have some limitations.
- *
- * This will capture JS keys using an alternative
- * [`InputConnection`](https://developer.android.com/reference/android/view/inputmethod/InputConnection).
- *
- * @since 1.0.0
- * @default false
- */
- captureInput?: boolean;
- /**
- * Always enable debuggable web content.
- *
- * This is automatically enabled during development.
- *
- * @since 1.0.0
- * @default false
- */
- webContentsDebuggingEnabled?: boolean;
- /**
- * The build configuration under which Capacitor will generate logs on Android.
- *
- * Overrides global `loggingBehavior` option.
- *
- * @since 3.0.0
- * @default debug
- */
- loggingBehavior?: 'none' | 'debug' | 'production';
- /**
- * Allowlist of plugins to include during `npx cap sync` for Android.
- *
- * Overrides global `includePlugins` option.
- *
- * @since 3.0.0
- */
- includePlugins?: string[];
- /**
- * Android flavor to use.
- *
- * If the app has flavors declared in the `build.gradle`
- * configure the flavor you want to run with `npx cap run` command.
- *
- * @since 3.1.0
- */
- flavor?: string;
- /**
- * Whether to give the webview initial focus.
- *
- * @since 3.5.1
- * @default true
- */
- initialFocus?: boolean;
- /**
- * The minimum supported webview version on Android supported by your app.
- *
- * The minimum supported cannot be lower than version `55`, which is required for Capacitor.
- *
- * If the device uses a lower WebView version, an error message will be shown on Logcat.
- * If `server.errorPath` is configured, the WebView will redirect to that file, so can be
- * used to show a custom error.
- *
- * @since 4.0.0
- * @default 60
- */
- minWebViewVersion?: number;
- /**
- * The minimum supported Huawei webview version on Android supported by your app.
- *
- * The minimum supported cannot be lower than version `10`, which is required for Capacitor.
- *
- * If the device uses a lower WebView version, an error message will be shown on Logcat.
- * If `server.errorPath` is configured, the WebView will redirect to that file, so can be
- * used to show a custom error.
- *
- * @since 4.6.4
- * @default 10
- */
- minHuaweiWebViewVersion?: number;
- buildOptions?: {
- /**
- * Path to your keystore
- *
- * @since 4.4.0
- */
- keystorePath?: string;
- /**
- * Password to your keystore
- *
- * @since 4.4.0
- */
- keystorePassword?: string;
- /**
- * Alias in the keystore to use
- *
- * @since 4.4.0
- */
- keystoreAlias?: string;
- /**
- * Password for the alias in the keystore to use
- *
- * @since 4.4.0
- */
- keystoreAliasPassword?: string;
- /**
- * Bundle type for your release build
- *
- * @since 4.4.0
- * @default "AAB"
- */
- releaseType?: 'AAB' | 'APK';
- /**
- * Program to sign your build with
- *
- * @since 5.1.0
- * @default "jarsigner"
- */
- signingType?: 'apksigner' | 'jarsigner';
- };
- /**
- * Use legacy [addJavascriptInterface](https://developer.android.com/reference/android/webkit/WebView#addJavascriptInterface(java.lang.Object,%20java.lang.String))
- * instead of the new and more secure [addWebMessageListener](https://developer.android.com/reference/androidx/webkit/WebViewCompat#addWebMessageListener(android.webkit.WebView,java.lang.String,java.util.Set%3Cjava.lang.String%3E,androidx.webkit.WebViewCompat.WebMessageListener))
- *
- * @since 4.5.0
- * @default false
- */
- useLegacyBridge?: boolean;
- };
- ios?: {
- /**
- * Specify a custom path to the native iOS project.
- *
- * @since 3.0.0
- * @default ios
- */
- path?: string;
- /**
- * iOS build scheme to use.
- *
- * Usually this matches your app's target in Xcode. You can use the
- * following command to list schemes:
- *
- * ```shell
- * xcodebuild -workspace ios/App/App.xcworkspace -list
- * ```
- *
- * @since 3.0.0
- * @default App
- */
- scheme?: string;
- /**
- * User agent of Capacitor Web View on iOS.
- *
- * Overrides global `overrideUserAgent` option.
- *
- * @since 1.4.0
- */
- overrideUserAgent?: string;
- /**
- * String to append to the original user agent of Capacitor Web View for iOS.
- *
- * Overrides global `appendUserAgent` option.
- *
- * This is disregarded if `overrideUserAgent` is used.
- *
- * @since 1.4.0
- */
- appendUserAgent?: string;
- /**
- * Background color of the Capacitor Web View for iOS.
- *
- * Overrides global `backgroundColor` option.
- *
- * @since 1.1.0
- */
- backgroundColor?: string;
- /**
- * Enable zooming within the Capacitor Web View for iOS.
- *
- * @default false
- * @since 6.0.0
- */
- zoomEnabled?: boolean;
- /**
- * Configure the scroll view's content inset adjustment behavior.
- *
- * This will set the
- * [`contentInsetAdjustmentBehavior`](https://developer.apple.com/documentation/uikit/uiscrollview/2902261-contentinsetadjustmentbehavior)
- * property on the Web View's
- * [`UIScrollView`](https://developer.apple.com/documentation/uikit/uiscrollview).
- *
- * @since 2.0.0
- * @default never
- */
- contentInset?: 'automatic' | 'scrollableAxes' | 'never' | 'always';
- /**
- * Configure whether the scroll view is scrollable.
- *
- * This will set the
- * [`isScrollEnabled`](https://developer.apple.com/documentation/uikit/uiscrollview/1619395-isscrollenabled)
- * property on the Web View's
- * [`UIScrollView`](https://developer.apple.com/documentation/uikit/uiscrollview).
- *
- * @since 1.0.0
- */
- scrollEnabled?: boolean;
- /**
- * Configure custom linker flags for compiling Cordova plugins.
- *
- * @since 1.0.0
- * @default []
- */
- cordovaLinkerFlags?: string[];
- /**
- * Allow destination previews when pressing on links.
- *
- * This will set the
- * [`allowsLinkPreview`](https://developer.apple.com/documentation/webkit/wkwebview/1415000-allowslinkpreview)
- * property on the Web View, instead of using the default value.
- *
- * @since 2.0.0
- */
- allowsLinkPreview?: boolean;
- /**
- * The build configuration under which Capacitor will generate logs on iOS.
- *
- * Overrides global `loggingBehavior` option.
- *
- * @since 3.0.0
- * @default debug
- */
- loggingBehavior?: 'none' | 'debug' | 'production';
- /**
- * Allowlist of plugins to include during `npx cap sync` for iOS.
- *
- * Overrides global `includePlugins` option.
- *
- * @since 3.0.0
- */
- includePlugins?: string[];
- /**
- * Sets WKWebView configuration for limitsNavigationsToAppBoundDomains.
- *
- * If the Info.plist file includes `WKAppBoundDomains` key, it's recommended to
- * set this option to true, otherwise some features won't work.
- * But as side effect, it blocks navigation outside the domains in the
- * `WKAppBoundDomains` list.
- * `localhost` (or the value configured as `server.hostname`) also needs to be
- * added to the `WKAppBoundDomains` list.
- *
- * @since 3.1.0
- * @default false
- */
- limitsNavigationsToAppBoundDomains?: boolean;
- /**
- * The content mode for the web view to use when it loads and renders web content.
- *
- * - 'recommended': The content mode that is appropriate for the current device.
- * - 'desktop': The content mode that represents a desktop experience.
- * - 'mobile': The content mode that represents a mobile experience.
- *
- * @since 4.0.0
- * @default recommended
- */
- preferredContentMode?: 'recommended' | 'desktop' | 'mobile';
- /**
- * Configure if Capacitor will handle local/push notifications.
- * Set to false if you want to use your own UNUserNotificationCenter to handle notifications.
- *
- * @since 4.5.0
- * @default true
- */
- handleApplicationNotifications?: boolean;
- /**
- * Using Xcode 14.3, on iOS 16.4 and greater, enable debuggable web content for release builds.
- *
- * If not set, it's `true` for development builds.
- *
- * @since 4.8.0
- * @default false
- */
- webContentsDebuggingEnabled?: boolean;
- };
- server?: {
- /**
- * Configure the local hostname of the device.
- *
- * It is recommended to keep this as `localhost` as it allows the use of
- * Web APIs that would otherwise require a [secure
- * context](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts)
- * such as
- * [`navigator.geolocation`](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/geolocation)
- * and
- * [`MediaDevices.getUserMedia`](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia).
- *
- * @since 1.0.0
- * @default localhost
- */
- hostname?: string;
- /**
- * Configure the local scheme on iOS.
- *
- * [Can't be set to schemes that the WKWebView already handles, such as http or https](https://developer.apple.com/documentation/webkit/wkwebviewconfiguration/2875766-seturlschemehandler)
- * This can be useful when migrating from
- * [`cordova-plugin-ionic-webview`](https://github.com/ionic-team/cordova-plugin-ionic-webview),
- * where the default scheme on iOS is `ionic`.
- *
- * @since 1.2.0
- * @default capacitor
- */
- iosScheme?: string;
- /**
- * Configure the local scheme on Android.
- *
- * Custom schemes on Android are unable to change the URL path as of Webview 117. Changing this value from anything other than `http` or `https` can result in your
- * application unable to resolve routing. If you must change this for some reason, consider using a hash-based url strategy, but there are no guarentees that this
- * will continue to work long term as allowing non-standard schemes to modify query parameters and url fragments is only allowed for compatibility reasons.
- * https://ionic.io/blog/capacitor-android-customscheme-issue-with-chrome-117
- *
- * @since 1.2.0
- * @default https
- */
- androidScheme?: string;
- /**
- * Load an external URL in the Web View.
- *
- * This is intended for use with live-reload servers.
- *
- * **This is not intended for use in production.**
- *
- * @since 1.0.0
- */
- url?: string;
- /**
- * Allow cleartext traffic in the Web View.
- *
- * On Android, all cleartext traffic is disabled by default as of API 28.
- *
- * This is intended for use with live-reload servers where unencrypted HTTP
- * traffic is often used.
- *
- * **This is not intended for use in production.**
- *
- * @since 1.5.0
- * @default false
- */
- cleartext?: boolean;
- /**
- * Set additional URLs the Web View can navigate to.
- *
- * By default, all external URLs are opened in the external browser (not
- * the Web View).
- *
- * **This is not intended for use in production.**
- *
- * @since 1.0.0
- * @default []
- */
- allowNavigation?: string[];
- /**
- * Specify path to a local html page to display in case of errors.
- * On Android the html file won't have access to Capacitor plugins.
- *
- * @since 4.0.0
- * @default null
- */
- errorPath?: string;
- };
- cordova?: {
- /**
- * Populates <access> tags in the config.xml with the origin set to
- * the values entered here.
- * If not provided, a single <access origin="*" /> tag gets included.
- * It only has effect on a few Cordova plugins that respect the whitelist.
- *
- * @since 3.3.0
- */
- accessOrigins?: string[];
- /**
- * Configure Cordova preferences.
- *
- * @since 1.3.0
- */
- preferences?: {
- [key: string]: string | undefined;
- };
- /**
- * List of Cordova plugins that need to be static but are not
- * already in the static plugin list.
- *
- * @since 3.3.0
- */
- staticPlugins?: string[];
- };
- /**
- * Configure plugins.
- *
- * This is an object with configuration values specified by plugin class
- * name.
- *
- * @since 1.0.0
- */
- plugins?: PluginsConfig;
- /**
- * Allowlist of plugins to include during `npx cap sync`.
- *
- * This should be an array of strings representing the npm package name of
- * plugins to include when running `npx cap sync`. If unset, Capacitor will
- * inspect `package.json` for a list of potential plugins.
- *
- * @since 3.0.0
- */
- includePlugins?: string[];
- }
- export interface PluginsConfig {
- /**
- * Plugin configuration by class name.
- *
- * @since 1.0.0
- */
- [key: string]: {
- [key: string]: any;
- } | undefined;
- /**
- * Capacitor Cookies plugin configuration
- *
- * @since 4.3.0
- */
- CapacitorCookies?: {
- /**
- * Enable CapacitorCookies to override the global `document.cookie` on native.
- *
- * @default false
- */
- enabled?: boolean;
- };
- /**
- * Capacitor Http plugin configuration
- *
- * @since 4.3.0
- */
- CapacitorHttp?: {
- /**
- * Enable CapacitorHttp to override the global `fetch` and `XMLHttpRequest` on native.
- *
- * @default false
- */
- enabled?: boolean;
- };
- }
|