This library loads, validates, and normalizes the Netlify configuration.
Netlify can be configured:
- In the build settings.
- In a
netlify.toml
file in the repository root directory or sitebase
directory.
npm install @netlify/config
options
: object?
Return value: Promise<object>
import { resolveConfig } from '@netlify/config'
const exampleFunction = async function () {
const { config, configPath, buildDir, context, branch, token, siteInfo } = await resolveConfig(options)
// {
// "siteInfo": {
// "id": "418b94bc-93cd-411a-937a-ae4c734f17c4",
// "name": "mick",
// "build_settings": {
// "cmd": "",
// "dir": "",
// "env": { ... },
// "functions_dir": "",
// "base": "",
// },
// ...
// },
// "accounts": [
// {
// "name": "my team",
// "slug": "me",
// ...
// },
// ...
// ],
// "addons": [],
// "env": {
// "NODE_VERSION": { "sources": ["configFile"], "value": "16" },
// ...
// },
// "configPath": "/home/me/code/cv-website/netlify.toml",
// "buildDir": "/home/me/code/cv-website",
// "repositoryRoot": "/home/me/code/cv-website",
// "config": {
// "functionsDirectory": "/home/me/code/cv-website/netlify/functions",
// "functionsDirectoryOrigin": "default",
// "functions": { "*": { "node_bundler": "esbuild" } },
// "plugins": [
// {
// "package": "@netlify/plugin-sitemap",
// "inputs": {},
// "origin": "config"
// }
// ],
// "build": {
// "publish": "/home/me/code/cv-website/build",
// "publishOrigin": "default",
// "command": "gulp build",
// "commandOrigin": "config",
// "functions": "/home/me/code/cv-website/netlify/functions"
// }
// },
// "context": "production",
// "branch": "main",
// "token": "564194bc-12cd-511a-037a-be4c734f17c4"
// }
}
The options
are an optional object
with the following properties.
Those options
are automatically set when using @netlify/config
in the Netlify production CI or with Netlify CLI.
Type: boolean
Default value: false
unless the NETLIFY_BUILD_DEBUG
environment variable is set.
Prints debugging information showing the configuration being resolved.
Type: boolean
Default value: false
Do not send requests to the Netlify API to retrieve site settings.
Type: boolean
Default value: false
When using debug
, returns the logs
instead of printing them on the console.
Type: string
Path to the netlify.toml
. It is either an absolute path or a path relative to the cwd
.
If not specified, it is searched in the following directories (by highest priority order):
-
base
directory repositoryRoot
- current directory
- any parent directory
Otherwise, no netlify.toml
is used.
Type: string
Default value: see cwd
Repository root directory. This is used in the following cases:
- Searching for the
netlify.toml
(seeconfig
) - When a
base
directory was specified, its path is relative to the repository root directory - The
functions
,edge_handlers
andpublish
directories are relative to the repository root directory or (if specified) thebase
directory - Determining the build directory
If not specified, it is automatically guessed by looking for any .git
directory from the cwd
, and up. If
none is found, the cwd
is used instead.
Type: string
Default value: process.cwd()
Current directory. This is used in the following cases:
- Searching for the
netlify.toml
(seeconfig
) - Searching for the
repositoryRoot
- In a monorepo, when stepping inside a specific package in the console, that package is automatically used as
base
directory
Type: string
Default value: environment variable CONTEXT
, or "production"
The netlify.toml
can contain contexts.{CONTEXT}
properties, which are like build
properties but only applied when
{CONTEXT}
matches.
Type: string
Default value: environment variable BRANCH
, current git
branch, "main"
or "master"
.
Same as context
but using a git
branch name.
Type: string
Default value: environment variable NETLIFY_AUTH_TOKEN
Netlify API token.
This is used to retrieve siteInfo
.
Type: string
Default value: api.netlify.com
Host of the Netlify API.
Type: string
Default value: https
Scheme/protocol of the Netlify API.
Type: string
Default value: /api/v1
Base path prefix of the Netlify API.
Type: string
Default value: environment variable NETLIFY_SITE_ID
Netlify Site ID.
This is used to retrieve siteInfo
, accounts
and addons
.
Type: object
Environment variable to use, in addition to the current process.env
. This is used as the default values of other
options.
Type: string
Default value: "require"
What is calling @netlify/config
. Can be:
-
"buildbot"
: Netlify production CI -
"cli"
: Netlify CLI -
"require"
: anything else
This is used for the following cases:
- if
mode
isbuildbot
,siteInfo
,accounts
andaddons
are not retrieved because they are also passed using another internal option.
Type: string
Configuration object used as default. This is an object serialized with JSON.
Type: object
Configuration object overriding any properties. This is a JavaScript object.
Type: array
Array of changes to apply to the configuration. Each change must be an object with three properties:
-
keys
: array of keys targetting the property to change -
value
: new value of that property -
event
: build event when this change was applied, e.g.onPreBuild
The return value is a Promise
resolving to an object
with the following properties.
Type: object
Resolved configuration object.
Type: string?
Absolute path to the netlify.toml
, if this file exists.
Type: string
Absolute path to the _headers
, even if this file does not exist.
Type: string
Absolute path to the _redirects
, even if this file does not exist.
Type: string
Absolute path to the build directory.
The build directory is the current directory in which most build operations, including the build command, execute. It is
usually either the repositoryRoot
or (if specified) the base
directory.
Type: string
The computed value of repositoryRoot
.
Type: string
Resolved context. See the context
option.
Type: string
Resolved git branch. See the branch
option.
Type: object
Netlify Site information retrieved using the getSite
Netlify API endpoint. This is used to retrieve Build settings set
in the Netlify App: plugins, Build command, Publish directory, Functions directory, Base directory, Environment
variables.
This might be empty depending on the options passed.
Type: object[]
Netlify accounts retrieved using the listAccountsForUser
Netlify API endpoint. This is used to retrieve account-level
environment variables.
This might be empty depending on the options passed.
Type: object[]
Netlify addons retrieved using the listServiceInstancesForSite
Netlify API endpoint. This is used to retrieve
addon-specific environment variables.
This might be empty depending on the options passed.
Type: string
Netlify API token. This takes into account the token
option but also some Netlify-specific environment
variables.
Type: NetlifyClient?
Netlify JavaScript client instance used to retrieve siteInfo
,
accounts
and addons
.
Type: object?
When the buffer
option is used, this contains two arrays stdout
and stderr
with the logs.
Type: object?
Site's environment variables. Each environment variable value is an object with the following properties:
-
value
string
-
sources
string[]
among:-
general
: general environment variables set for all sites -
account
: environment variables set in the Netlify UI for a specific account -
addons
: addon-specific environment variables -
ui
: environment variables set in the Netlify UI for a specific site -
configFile
: environment variables set innetlify.toml
-
$ netlify-config
Like resolveConfig()
, but in the CLI. The return value is printed on stdout
.
The CLI flags use the same options.