neutralino.config.json
neutralino.config.json
file contains the application configuration details. Every Neutralinojs app typically
loads the following keys from the config file.
applicationId
url
defaultMode
However, having a config file is not mandatory to start a Neutralinojs app since the Neutralinojs framework often loads reasonable defaults for all configuration options.
You can develop Neutralinojs apps with a well-structured configuration file. Or, you can start the framework without a configuration file using CLI arugments, as shown in the following code snippet:
# Loading a remote URL
./framework-bin --url=https://neutralino.js.org/docs
# Launches a local static web app
./framework-bin --url="/" --document-root="/resources/" --window-title="My web app" --enable-server --enable-native-api
Primary
The following configuraion values cannot be overridden in different Neutralinojs modes.
applicationId: string
Unique string to identify your application. Eg: js.neutralino.sample
version: string
Application version. Eg: 2.4.22
defaultMode: string
Mode of the application. Accepted values are window
, browser
, and cloud
.
General
You can override the following configuration values from different modes. For example, you can use a specific URL in root-level and another URL in window-mode-level, as shown below.
{
"url": "/"
"modes": {
"window": {
"url": "/#window-mode"
}
}
}
port: number
The port of your application. If the value is 0
, Neutralinojs will use a random available port.
enableServer: boolean
Enables or disables the background server (Disables static file servering feature and native API messaging).
If you load a remote URL to the webview, you can set this option to false
. Make sure to set this option to true
if you load resources from local sources. The default value is false
.
enableNativeAPI: boolean
Enables or disables the native API. If you want to use any native API functions, you can set this option to true
. The default value is false
.
singlePageServe: boolean
Activates SPA (Single Page App) serving. When this option is enabled, the static server module serves the primary
index.html
file for sub-directory requests only if another index.html
doesn't exist in a specific sub-directory.
The default value for this option is false
.
tokenSecurity: string
Neutralinojs uses a client-server communication pattern with a local WebSocket to handle native calls. This local server is protected with an auto-generated token. This option defines the security implementation for the token.
Accepts the following values:
-
one-time
(Recommended) : Server sends the access token only once, and the client persists it in thesessionStorage
. If another client (Eg: browser) tries to access the app,NE_RT_INVTOKN
error message will be shown instead of the application. Using this option is recommended since it reduces security issues. -
none
: Server sends the access token always, so any new client can see the application.
The default value becomes one-time
if this setting is not specified by the developer.
If you are using native APIs that can access your computer's internals such as os
, filesystem
, modules,
never use none
option since any new client can use those APIs.
url: string
The entry URL of the application. Neutralinojs will initially load this URL. This property accepts both relative and absolute URLs. See following examples.
"url": "/"
The above config loads http://localhost:<port>/
URL initially (internally /index.html
is loaded).
You can use remote urls too.
"url": "http://example.com"
documentRoot: string
Sets the document root for the static server. For example, if you need to use resources
directory as
the document root, you can use setup documentRoot
as follows.
{
"documentRoot": "/resources/",
"url": "/"
}
Make sure to configure url
properly with the document root. The following configuration is wrong, it
instructs the static server to fetch resources from ./resources/resources
.
{
"documentRoot": "/resources/",
"url": "/resources/"
}
However, you can use a sub-directory in URL, as shown below.
{
"documentRoot": "/",
"url": "/resources/"
}
exportAuthInfo: boolean
Exports authentication details to the ${NL_PATH}/.tmp/auth_info.json
file with the following JSON structure.
{
"port": "<port>",
"accessToken": "<access_token>"
}
You can use the above authentication details to connect with Neutralinojs from external processes by using WebSocket as an IPC mechanism.
enableExtensions: boolean
Enables/disables extensions. Learn more about this option here
extensions: object[]
An array of extension definitions. Learn more about this option here
nativeBlockList: string[]
An array of native methods needs to be blocked from the frontend of the application. The wildcard character *
is allowed
inside entries.
{
"nativeBlockList": ["os.execCommand"],
"nativeBlockList": ["app.*"]
}
nativeAllowList: string[]
An array of native methods needs to be allowed from the frontend of the application. The wildcard character *
is allowed
inside entries.
{
"nativeAllowList": ["os.getEnv"],
"nativeAllowList": ["storage.*"]
}
globalVariables: object
A key-value-based JavaScript object of custom global variables.
logging.enabled: boolean
Enables or disables the logging feature.
logging.writeToLogFile: boolean
Enables or disables log file. If this setting is false
, the framework won't write log to neutralinojs.log
,
and it will write logs to standard streams.
serverHeaders: object
Custom headers for the static server and Websocket handshake process. For example, the following configuration sends a custom header with every outgoing HTTP response.
{
"serverHeaders": {
"Test-Header-Option": "Value"
}
}
Window mode
The following configuration values are used when the application runs with the window mode.
modes.window.title: string
Title of the native window.
modes.window.width: number
Width of the native window.
modes.window.height: number
Height of the native window.
modes.window.minWidth: number
Minimum width of the native window.
modes.window.minHeight: number
Minimum height of the native window.
modes.window.maxWidth: number
Maximum width of the native window.
modes.window.maxHeight: number
Maximum height of the native window.
modes.window.x: number
Left position (x
) of the native window.
modes.window.y: number
Right position (y
) of the native window.
modes.window.center: boolean
Centers the native app window initially.
modes.window.transparent: boolean
Enables the transparent native window mode for the application instance. If the transparency mode is activated,
users can see through the webview if the webpage background uses transparent background colors. Partial transparency
can be activated using the rgba()
CSS color function. You can use this feature to create semi-transparent
windows, windows with custom shadows, and custom-shaped window frames.
The default value is false
for this option.
Unlike in other platforms, Windows native window becomes borderless (window controls will be hidden) with the activation of the transparent mode.
modes.window.fullScreen: boolean
Activates the full-screen mode.
modes.window.icon: string
Application icon's file name. You can directly point to an image file in the resources directory. We recommend you to choose a transparent PNG file.
modes.window.alwaysOnTop: boolean
Activates the top-most mode.
modes.window.enableInspector: boolean
Automatically opens the developer tools window.
modes.window.borderless: boolean
Activates the borderless mode.
modes.window.maximize: boolean
Launches the application maximized.
modes.window.resizable: boolean
Make the window resizable or not. The default value is true
.
modes.window.hidden: boolean
Make the window invisible. This setting can be used to develop background services.
modes.window.exitProcessOnClose: boolean
If this setting is true
, the app process will exit when the user clicks on the close button. Otherwise,
the framework will dispatch the windowClose
event.
modes.window.useSavedState: boolean
Save and load the primary window state (width, height, x, y, values and maximized status) automatically.
The default value is true
.
modes.window.extendUserAgentWith: string
Extends the default webview-specific user agent string with a custom suffix. If this value is not set, the webview sets the default user agent from the platform-specific rendering engine (i.e., WebKit on GNU/Linux).
Chrome mode
The following configuration values are used when the application starts with the chrome mode.
modes.chrome.width: number
Width of the chrome window.
modes.chrome.height: number
Height of the chrome window.
modes.chrome.args: string
Additional command-line arguments for the Chrome process. Read more about chrome mode from here
CLI
The following configuration values are used for the neu CLI.
cli.binaryName: string
Binary file name of your application. If it is myapp
, all binaries will use
myapp-<platform>_<arch>
format.
cli.resourcesPath: string
Path of your application resources.
cli.resourcesExclude: string
Regex pattern to exclude files from final app bundle. For example, the following configuration will exclude all the TypeScript source files from the final build:
{
"resourcesExclude" : ".*\\.ts$|.*\\.tsx$"
}
cli.extensionsPath: string
Path of your application extensions.
cli.extensionsExclude: string
Regex pattern to exclude files from the extensions directory of the final app package. For example, the following configuration will exclude .log
and .info
files:
{
"extensionsExclude" : ".*\\.log$|.*\\.info$"
}
cli.clientLibrary: string
Filename of the Neutralinojs JavaScript library.
cli.binaryVersion: string
Neutralinojs server version. Get nightly builds by using the nightly
tag.
cli.clientVersion: string
Neutralinojs client version. Get nightly builds by using the nightly
tag.
cli.autoReloadExclude: string
A JavaScript regular expression to exclude files from the auto-reload file watcher. For example, the following configuration will disable auto-reloading for SASS stylesheets (.scss
).
{
"autoReloadExclude": ".*\\.scss$"
}
Use |
character to set multiple regular expressions, as shown below.
{
"autoReloadExclude": ".*\\.scss$|.*\\.less$"
}
cli.frontendLibrary: object
Enables frontend development tools (HMR, etc) for the neu run --frontend-lib-dev
command. Learn more about frontend
framework integration from here
cli.distributionPath: string
Sets the build path for neu CLI. For example, if you need to get the built binaries in build
folder instead of dist
, you can set the distributionPath
as follows:
{
"distributionPath": "/build",
}
The default value for distributionPath
is /dist
.