The nativescript.config.ts
is a central place to configure your project. It allows you to configure your project structure, application id, runtime related flags and more.
Note about the .ts
extension
You can author the config file as plain .js
file as well. We recommend sticking with the .ts
extension even if your project doesn't use TypeScript, because most editors will provide autocompletion in the .ts
file.
By default a config looks somewhat like the following
tsimport { NativeScriptConfig } from '@nativescript/core'
export default {
id: 'org.nativescript.app',
appPath: 'app',
appResourcesPath: 'App_Resources',
android: {
v8Flags: '--expose_gc',
markingMode: 'none',
},
} as NativeScriptConfig
Configuration Reference id ts
id: string = 'com.mycompany.myapp'
Controls the Application ID of your app, this setting can be overridden per platform via ios.id and android.id.
main tsmain: string = './src/custom-main.ts'
Sets the entry point to your app. This value is usually set in package.json in the main
field.
appPath: string = 'custom-src'
Specifies where your app source is located, usually src
or app
.
appResourcesPath: string = '../shared/app_resources'
Specifies where your app resources are located, usually App_Resources
.
webpackConfigPath: string = 'custom-webpack.config.js'
Specifies the webpack config location. The default is webpack.config.js
in the root.
projectName: string = 'projectName'
Specifies the name of the project. The default is the basename of the project directory.
profiling tsprofiling: 'counters' | 'timeline' | 'lifecycle' = "timeline"
Enable profiler logs. In most cases when profiling, you would use timeline
.
cssParser: 'rework' | 'nativescript' | 'css-tree' = "css-tree"
Set the default CSS parser that NativeScript will use, by default it uses css-tree
.
ignoredNativeDependencies: string[] = ['@nativescript/imagepicker']
A list of npm package names to ignore when attaching native dependencies to the build.
cli See CLI Configuration Reference
android See Android Configuration Reference
ios See iOS Configuration Reference
hooks See Hooks Configuration Reference
CLI Configuration Reference cli.packageManager tscli.packageManager: 'npm' | 'yarn' | 'pnpm' | 'yarn2' = 'yarn';
Sets the package manager to use for this project.
Defaults to the package manager set with the CLI (ns package-manager set yarn
), or npm
if not set.
pathsToClean?: string[];
Overrides the files or paths to clean when running the ns clean
command.
additionalPathsToClean?: string[];
Additional files or paths to clean when running the ns clean
command, the paths are appended to the default list of paths.
android.id: string = 'com.mycompany.myapp.android';
Controls the Application ID of your Android app, this setting overrides the value set in id.
See also ios.id.
android.discardUncaughtJsExceptions tsandroid.discardUncaughtJsExceptions: boolean = true;
Discard any uncaught JS exceptions. This can be useful in production environments where you don't want your app to crash in case an unexpected JS exception is thrown.
android.v8Flags tsandroid.v8Flags: string = "--expose_gc --trace=true";
Flags passed to the v8 runtime. --expose_gc
is required for the runtime to function properly.
For a list of available v8 flags see this Gist.
android.codeCache tsandroid.codeCache: boolean = true;
Enables the v8 code-cache.
android.gcThrottleTime tsandroid.gcThrottleTime: number = 20; // in ms
Trigger a gc periodically (in ms
). Defaults to 0
(disabled).
android.markingMode: 'none' | 'full';
Sets the default gc marking mode, defaults to none
.
Deprecated value
full
has been deprecated and it's not recommended.
android.handleTimeZoneChanges: boolean = true;
Notify the app when the timezone changes, defaults to false
.
android.maxLogcatObjectSize: number = 9999;
Sets the max length of a single output string. Defaults to 1024
.
android.forceLog: boolean = true;
Enable logging in Release mode. Defaults to false
.
android.memoryCheckInterval: number; // in ms
Sets the frequency of the freeMemoryRatio
check.
android.freeMemoryRatio: number;
Percentage of memory (0.0
to 1.0
) before it forces a GC. Defaults to 0
(disabled).
When set, it also requires memoryCheckInterval to be set.
android.enableLineBreakpoints tsandroid.enableLineBreakpoints: boolean;
Used for advanced debugging.
android.enableMultithreadedJavascript tsandroid.enableMultithreadedJavascript: boolean;
Enable the multithreaded JavaScript engine. Defaults to false
.
ios.id: string = 'com.mycompany.myapp.ios';
Controls the Bundle Identifier of your iOS app, this setting overrides the value set in id.
See also android.id.
ios.discardUncaughtJsExceptions tsios.discardUncaughtJsExceptions: boolean = true;
Discard any uncaught JS exceptions. This can be useful in production environments where you don't want your app to crash in case an unexpected JS exception is thrown.
ios.SPMPackages tsios.SPMPackages: Array<{
name: string;
libs: Array<string>;
repositoryURL: string;
version: string;
/**
* (8.9+) If you have more targets (like widgets for example),
* you can list their names here to include the Swift Package with them.
*/
targets?: string[];
}>
Allows defining Swift Package Manager dependencies that should be installed into the project. Any dependencies listed here, similar to Cocoapods dependencies will be built with the project. This means you can generate typings for them via ns typings ios
for TypeScript usage.
// ...
ios: {
SPMPackages: [
{
name: 'swift-numerics',
libs: ['Numerics'],
repositoryURL: 'https://github.com/apple/swift-numerics.git',
version: '1.0.0',
},
]
}
ios.NativeSource ts
ios.NativeSource: Array<{
name: string;
path: string;
}>
Include any native source code from anywhere in the project (or workspace). Glob patterns are fully supported.
Example .swift
files anywhere within the project src
directory:// ...
ios: {
NativeSource: [
{
name: 'ProjectPlatformSrc',
path: './src/**/*.swift'
}
],
}
This will create a file reference folder named ProjectPlatformSrc
within the generated Xcode project containing any .swift files found anywhere within the project src
directory.
.swift
files anywhere within the project src
directory, including any (Swift, Obj-C impl/headers, as well as any module.modulemap files) within a workspace packages
or libs
dir:// ...
ios: {
NativeSource: [
{
name: 'ProjectPlatformSrc',
path: './src/**/*.swift'
},
{
name: 'Auth',
path: '../../packages/**/*.{swift,m,h,modulemap}'
},
{
name: 'Purchasing',
path: '../../libs/**/*.{swift,m,h,modulemap}'
}
],
}
Hooks Configuration Reference ts
hooks: [
{
type: 'before-<hookName>' | 'after-<hookName>',
script: './path/to/script.js',
},
]
Allows defining project-persistent hooks.
Available hooks (prefix with before-
or after-
):
buildAndroidPlugin
- Builds aar file for Android plugin, runs during prepareNativeApp
buildAndroid
- Builds Android appbuildIOS
- Builds iOS appcheckEnvironment
- Validate project env, runs during ns doctor
, ns clean
, and most build commandscheckForChanges
- Changes occurred during watch
install
- Application installed to device/emulatorprepare
- Compiles webpack and prepares native app in platforms folderprepareNativeApp
- Preparing the actual native app, runs during prepare
/watch
hookresolveCommand
- Resolves command and arguments, runs before all CLI commandswatch
- Set up watchers for live sync, runs during prepare
hookwatchPatterns
- Set up watch patterns, runs during watch
hookRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4