UNPKG

@servicenow/sdk

Version:
338 lines (207 loc) 11.3 kB
--- tags: [NowConfig, now.config.json, config, configuration, scope, project settings, nowconfig] --- # now.config.json The `now.config.json` file is the project configuration for a Fluent SDK application. It lives at the project root and defines the application scope, build settings, source directories, dependencies, and runtime policies. Every Fluent project requires this file. ## Required Properties ### `scope` Scope of the application (example: 'x_myapp' or 'sn_myapp') - **Type:** `string` - **Pattern:** `^((x|sn)_[a-z0-9_]+|global)$` - **Min length:** 4 - **Max length:** 18 ### `scopeId` Scope ID of the application (example: 'fc1b5713c3db3110d6489a038a40dd85') - **Type:** `string` - **Pattern:** `^([0-9a-f]{32}|global$)` - **Max length:** 32 ## Properties ### `active` Is the application active - **Type:** `boolean` ### `appOutputDir` Location to output built application for packaging during fluent build command - **Type:** `string` - **Default:** `"dist/app"` ### `applicationRuntimePolicy` Application Runtime Policy mode. Set to 'tracking' or 'enforcing' to enable policy records. Defaults to 'none' if not specified. - **Type:** `"none"` | `"tracking"` | `"enforcing"` ### `clientDir` Directory containing client files of the application, such as HTML and TypeScript files. Set to empty to disable the client build. - **Type:** `string` - **Default:** `"src/client"` ### `description` Description of the application - **Type:** `string` ### `excludeFilePatterns` Glob patterns matched against incoming file basenames (not full paths) during transform. Files that match are discarded and not written to the metadata directory. - **Type:** `string[]` ### `fluentDir` Directory containing .now.ts fluent files of the application - **Type:** `string` - **Default:** `"src/fluent"` - **Min length:** 1 ### `generatedDir` Directory relative to 'fluentDir' where Fluent will generate files, such as keys.ts - **Type:** `string` - **Default:** `"generated"` - **Min length:** 1 ### `guidedSetupGuid` SysID of the Guided Setup to start when the application is upgraded - **Type:** `string` - **Pattern:** `^[0-9a-f]{32}$` ### `ignoreTransformTableList` List of tables to ignore when transforming entities to ServiceNow tables - **Type:** `string[]` ### `installedAsDependency` App was installed as a dependency - **Type:** `boolean` - **Default:** `false` ### `jsLevel` JavaScript level for the application - **Type:** `"es_latest"` | `"helsinki_es5"` | `"traditional"` - **Default:** `"es_latest"` ### `logo` SysID of the app logo - **Type:** `string` - **Pattern:** `^[0-9a-f]{32}$` ### `menu` SysID of the application's primary menu for default table modules - **Type:** `string` - **Pattern:** `^[0-9a-f]{32}$` ### `metadataDir` Directory containing metadata xml for the app - **Type:** `string` - **Default:** `"metadata"` ### `name` Name of the application (example: 'MyApp') - **Type:** `string` - **Min length:** 3 - **Max length:** 100 ### `networkPolicies` Network access policies for the application (sys_arp_network_policy) - **Type:** `object[]` ### `npmUpdateCheck` - **Type:** `number` | `boolean` - **Default:** `10` ### `packOutputDir` Location to output the zip file during build process, to be later installed on the instance during install command - **Type:** `string` - **Default:** `"target"` ### `packageResolverVersion` Rhino module resolver version. Must be 2.0.0+ for Global apps - **Type:** `"1.0.0"` | `"2.0.0"` - **Default:** `"1.0.0"` ### `serverModulesDir` Directory containing modular files to be built into sys_modules - **Type:** `string` - **Default:** `"src/server"` ### `serverModulesExcludePatterns` Patterns to exclude when building server modules - **Type:** `string[]` - **Default:** `["**/*.test.ts","**/*.test.js","**/*.d.ts"]` ### `serverModulesIncludePatterns` Patterns to include when building server modules - **Type:** `string[]` - **Default:** `["**/*.ts","**/*.tsx","**/*.js","**/*.jsx","**/*.cts","**/*.cjs","**/*.mts","**/*.mjs","**/*.json"]` ### `staticContentDir` Directory containing static asset files of the application - **Type:** `string` - **Default:** `"dist/static"` - **Min length:** 1 ### `defaultLanguage` BCP 47 language tag for table/column documentation defaults. Used to resolve labels from multi-language documentation arrays (e.g., 'en', 'es', 'fr', 'en-US', 'zh-Hans'). - **Type:** `string` - **Default:** `"en"` - **Pattern:** `^[a-z]{2,3}(-[a-zA-Z0-9]{2,8})*$` - **Min length:** 2 ### `tableDefaultLanguage` > **Deprecated.** Use [`defaultLanguage`](#defaultlanguage) instead. This property is still accepted and will automatically migrate to `defaultLanguage`, but will produce a deprecation warning. ### `tableOutputFormat` Artifact type built for table definitions. Traditional bootstrap or separate component records. - **Type:** `"bootstrap"` | `"component"` - **Default:** `"bootstrap"` ### `trustedModules` List of npm module patterns to mark as trusted. Trusted modules will have external_source set to false. Valid patterns: fully qualified package names (e.g., `lodash`, `@servicenow/sdk`) or organization prefixes with wildcard (e.g., `@servicenow/*`). Blanket wildcards like '*' are not allowed. - **Type:** `string[]` - **Default:** `[]` ### `tsconfigPath` Path to tsconfig file to be used for transpilation of server module typescript. ServiceNow SDK will emit build errors following the referenced tsconfig. (example: './src/server/tsconfig.json') - **Type:** `string` ### `type` Whether this project represents a scoped/global app package or a set of record changes - **Type:** `"package"` - **Default:** `"package"` ## `accessControls` Manage scoping restrictions and access to the application | Property | Type | Default | Description | |----------|------|---------|-------------| | `canEditInStudio` | `boolean` | `true` | Can the application be opened in developer studio | | `hideOnUI` | `boolean` | `false` | Application hidden in UI | | `private` | `boolean` | `false` | Mark the application as private | | `restrictTableAccess` | `boolean` | `false` | Restrict design time access to tables from outside the application | | `runtimeAccessTracking` | `"none"` \| `"permissive"` \| `"enforcing"` | `"permissive"` | Runtime access tracking for the application | | `scopedAdministration` | `boolean` | `false` | If true, System Admins will be prevented from accessing the application | | `trackable` | `boolean` | `true` | Mark the application as trackable | | `uninstallBlocked` | `boolean` | `false` | Uninstall blocked for the application | | `userRole` | `string` | | Role required for end users to access the application and its tables | ## `dependencies` Reference dependencies on other ServiceNow application tables and entities, organized by scope Keys match the pattern `^((x|sn)_[a-z0-9_]+|global)$`. Each entry can include: | Property | Type | Default | Description | |----------|------|---------|-------------| | `roles` | `"*"` \| `string[]` | | Role definitions from sys_user_role (list of role names or '*' for all) | | `tables` | `"*"` \| `string[]` | | Table definitions from sys_db_object (list of table names or '*' for all) | Additional keys are also accepted. > **Deprecated sub-property:** `dependencies.applications` — DEPRECATED: Use flat scope structure instead. Move scopes directly under 'dependencies'. ## `licensing` If this application is licensable, set the subscription requirement and model. | Property | Type | Default | Description | |----------|------|---------|-------------| | `enforceLicense` | `"none"` \| `"log"` \| `"enforce"` | `"log"` | Subscription requirement for the application | | `licensable` | `boolean` | `true` | Mark package as licensable | | `licenseCategory` | `"none"` \| `"general"` \| `"beta"` | `"none"` | License category for the application | | `licenseModel` | `"none"` \| `"fulfiller"` \| `"producer"` \| `"capacity"` \| `"mixed"` \| `"app_use"` | `"none"` | License model for the application | | `subscriptionEntitlement` | `string` | | SysID of the subscription entitlement for the application | ## `linter` Enable/Disable internal Fluent linting behavior. | Property | Type | Default | Description | |----------|------|---------|-------------| | `module.enabled` | `boolean` | `true` | Whether the module linter is enabled | ## `modulePaths` Mapping between file glob patterns to resolve imported file paths to valid runtime paths. This is needed if your Fluent files are importing modules from a different location than the runtime modules. For example, if you have a custom TypeScript setup that transpiles modules from a 'src' directory to a 'dist' directory, you would need to specify that mapping here. Keys match the pattern `.*`. Values are `string`. ## `performancePolicy` Performance (resource limit) configuration (sys_app_resource_limit_template). Only one per scope. | Property | Type | Default | Description | |----------|------|---------|-------------| | `$id` | `string` | | Unique sys_id for the record | | `apiTransactionLimit` | `integer` | `30` | API Transaction Quota percentage (1-100) | | `eventHandlerLimit` | `integer` | `20` | Event Handler Quota percentage (1-100) | | `interactiveTransactionLimit` | `integer` | `30` | Interactive Transaction Quota percentage (1-100) | | `mode` | `"disabled"` \| `"logOnly"` \| `"enforced"` | | Enforcement mode for quota thresholds. Auto-derived from applicationRuntimePolicy if not explicitly set: 'none'disabled, 'tracking'logOnly, 'enforcing'enforced | | `name` | `string` | | Configuration name | | `scheduledJobLimit` | `integer` | `20` | Scheduled Job Quota percentage (1-100) | ## `scripts` Define scripts that are executed with the SDK task runner. The task functions are async and are passed APIs for cross-environment compatibility. Use prebuild to run a script before the build process for custom build tasks. Keys match the pattern `.*`. Values are `string`. ## `staticContentPaths` Mapping of source files to static output paths. Keys match the pattern `.*`. Values are `string`. ## `taxonomy` Configuration for taxonomy-based file organization | Property | Type | Default | Description | |----------|------|---------|-------------| | `fallbackFolderName` | `string` | | Folder name to use when a table doesn't have a mapping (lowercase, no spaces or special chars) | | `mapping` | `object` | | Maps table names to their folder path for organization. Resulting files will be placed in '{generatedDir}/{path}' | ## `wildcardPolicy` Wildcard/exemption policy for the application (sys_arp_segment_policy). Only one per scope. | Property | Type | Default | Description | |----------|------|---------|-------------| | `$id` | `string` | | Unique sys_id for the record | | `active` | `boolean` | `false` | Whether the policy is active | | `arl` | `object` | | ARL (Application Resource Limit) pillar configuration | | `network` | `object` | | Network pillar configuration | | `record` | `boolean` | `false` | Enable Record pillar access | | `scripting` | `object` | | Scripting pillar configuration | | `shortDescription` | `string` | | Human-readable description of the policy |