8.7 发布—WinterCG 兼容性第一部分
了解更多

nativescript.config.ts 是配置项目的中心位置。它允许您配置项目结构、应用程序 ID、运行时相关标志等等。

关于 .ts 扩展名的说明

您也可以将配置文件编写为普通的 .js 文件。我们建议即使您的项目未使用 TypeScript 也要坚持使用 .ts 扩展名,因为大多数编辑器会在 .ts 文件中提供自动完成。

默认情况下,配置看起来类似于以下内容

ts
import { NativeScriptConfig } from '@nativescript/core'

export default {
  id: 'org.nativescript.app',
  appPath: 'app',
  appResourcesPath: 'App_Resources',
  android: {
    v8Flags: '--expose_gc',
    markingMode: 'none',
  },
} as NativeScriptConfig

配置参考

id

ts
id: string = 'com.mycompany.myapp'

控制应用程序的 ID,此设置可以通过 ios.idandroid.id 为每个平台覆盖。

main

ts
main: string = './src/custom-main.ts'

设置应用程序的入口点。此值通常在 package.jsonmain 字段中设置。

appPath

ts
appPath: string = 'custom-src'

指定应用程序源代码的位置,通常是 srcapp

appResourcesPath

ts
appResourcesPath: string = '../shared/app_resources'

指定应用程序资源的位置,通常是 App_Resources

webpackConfigPath

ts
webpackConfigPath: string = 'custom-webpack.config.js'

指定 webpack 配置 位置。默认情况下,它是根目录下的 webpack.config.js

profiling

ts
profiling: 'counters' | 'timeline' | 'lifecycle' = "timeline"

启用分析器日志。在大多数情况下,进行分析时,您将使用 timeline

cssParser

ts
cssParser: 'rework' | 'nativescript' | 'css-tree' = "css-tree"

设置 NativeScript 将使用的默认 CSS 解析器,默认情况下它使用 css-tree

ignoredNativeDependencies

ts
ignoredNativeDependencies: string[] = ['@nativescript/imagepicker']

在将原生依赖项附加到构建时要忽略的 npm 包名称列表。

cli

ts
cli: Object = {}

参见 CLI 配置参考

android

ts
android: Object = {}

参见 Android 配置参考

ios

ts
ios: Object = {}

参见 iOS 配置参考

hooks

ts
hooks: Array = []

参见 Hooks 配置参考

CLI 配置参考

cli.packageManager

注意

yarn2 处于实验阶段,可在 [email protected] 或更高版本中使用。

ts
cli.packageManager: 'npm' | 'yarn' | 'pnpm' | 'yarn2' = 'yarn';

设置此项目使用的包管理器。

默认为使用 CLI 设置的包管理器 (ns package-manager set yarn),如果未设置则为 npm

cli.pathsToClean

ts
pathsToClean?: string[];

覆盖运行 ns clean 命令时要清除的文件或路径。

cli.additionalPathsToClean

ts
additionalPathsToClean?: string[];

运行 ns clean 命令时要清除的附加文件或路径,这些路径将附加到默认路径列表。

Android 配置参考

android.id

ts
android.id: string = 'com.mycompany.myapp.android';

控制 Android 应用程序的 ID,此设置会覆盖在 id 中设置的值。

另请参见 ios.id.

android.discardUncaughtJsExceptions

ts
android.discardUncaughtJsExceptions: boolean = true;

丢弃任何未捕获的 JS 异常。这在生产环境中可能很有用,在生产环境中您不希望应用程序在抛出意外 JS 异常时崩溃。

android.v8Flags

ts
android.v8Flags: string = "--expose_gc --trace=true";

传递给 v8 运行时的标志。--expose_gc 是运行时正常工作所必需的

有关 可用 v8 标志的列表,请参见此 Gist.

android.codeCache

ts
android.codeCache: boolean = true;

启用 v8 代码缓存。

android.gcThrottleTime

ts
android.gcThrottleTime: number = 20; // in ms

定期 (以 ms 为单位) 触发 gc。默认为 0 (禁用)。

android.markingMode

ts
android.markingMode: 'none' | 'full';

设置默认 gc 标记模式,默认为 none

已弃用的值

full 已弃用,不建议使用。

android.handleTimeZoneChanges

ts
android.handleTimeZoneChanges: boolean = true;

在时区更改时通知应用程序,默认为 false

android.maxLogcatObjectSize

ts
android.maxLogcatObjectSize: number = 9999;

设置单个输出字符串的最大长度。默认为 1024

android.forceLog

ts
android.forceLog: boolean = true;

在发布模式下启用日志记录。默认为 false

android.memoryCheckInterval

ts
android.memoryCheckInterval: number; // in ms

设置 freeMemoryRatio 检查的频率。

android.freeMemoryRatio

ts
android.freeMemoryRatio: number;

内存百分比 (0.01.0),在达到此百分比之前,它会强制执行 GC。默认为 0 (禁用)。

如果设置了此值,还需要设置 memoryCheckInterval

android.enableLineBreakpoints

ts
android.enableLineBreakpoints: boolean;

用于高级调试。

android.enableMultithreadedJavascript

ts
android.enableMultithreadedJavascript: boolean;

启用多线程 JavaScript 引擎。默认为 false

iOS 配置参考

ios.id

ts
ios.id: string = 'com.mycompany.myapp.ios';

控制 iOS 应用程序的 Bundle Identifier,此设置会覆盖在 id 中设置的值。

另请参见 android.id.

ios.discardUncaughtJsExceptions

ts
ios.discardUncaughtJsExceptions: boolean = true;

丢弃任何未捕获的 JS 异常。这在生产环境中可能很有用,在生产环境中您不希望应用程序在抛出意外 JS 异常时崩溃。

ios.SPMPackages

实验性

SPM 包在 [email protected] 或更高版本中可用,并且处于实验阶段。

ts
ios.SPMPackages: Array<{
  name: string;
  libs: Array<string>;
  repositoryURL: string;
  version: string;
}>

允许定义应安装到项目中的 Swift Package Manager 依赖项。与 Cocoapods 依赖项类似,此处列出的任何依赖项都将与项目一起构建。这意味着您可以通过 ns typings ios 为它们生成类型,以便在 TypeScript 中使用。

示例

ts
// ...
ios: {
  SPMPackages: [
    {
      name: 'swift-numerics',
      libs: ['Numerics'],
      repositoryURL: 'https://github.com/apple/swift-numerics.git',
      version: '1.0.0',
    },
  ]
}

Hooks 配置参考

ts
hooks: [
  {
    type: 'before-<hookName>' | 'after-<hookName>',
    script: './path/to/script.js',
  },
]

允许定义项目持久化 Hook。

可用 Hook (以 before-after- 为前缀)

  • buildAndroidPlugin - 构建 Android 插件的 aar 文件,在 prepareNativeApp 期间运行
  • buildAndroid - 构建 Android 应用程序
  • buildIOS - 构建 iOS 应用程序
  • checkEnvironment - 验证项目环境,在 ns doctorns clean 和大多数构建命令期间运行
  • checkForChanges - 在 watch 期间发生更改
  • install - 应用程序已安装到设备/模拟器
  • prepare - 编译 webpack 并准备平台文件夹中的原生应用程序
  • prepareNativeApp - 准备实际的原生应用程序,在 prepare/watch Hook 期间运行
  • resolveCommand - 解析命令和参数,在所有 CLI 命令之前运行
  • watch - 为实时同步设置观察器,在 prepare Hook 期间运行
  • watchPatterns - 设置观察模式,在 watch Hook 期间运行