puppeteer/website/versioned_docs/version-19.6.0/guides/configuration.mdx
release-please[bot] e13e9647fc
chore: release main (#9501)
🤖 I have created a release *beep* *boop*
---


<details><summary>puppeteer: 19.6.0</summary>

##
[19.6.0](https://github.com/puppeteer/puppeteer/compare/puppeteer-v19.5.2...puppeteer-v19.6.0)
(2023-01-23)


### Miscellaneous Chores

* **puppeteer:** Synchronize puppeteer versions


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * puppeteer-core bumped from 19.5.2 to 19.6.0
</details>

<details><summary>puppeteer-core: 19.6.0</summary>

##
[19.6.0](https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v19.5.2...puppeteer-core-v19.6.0)
(2023-01-23)


### Features

* **chromium:** roll to Chromium 110.0.5479.0 (r1083080)
([#9500](https://github.com/puppeteer/puppeteer/issues/9500))
([06e816b](06e816bbfa)),
closes [#9470](https://github.com/puppeteer/puppeteer/issues/9470)
* **page:** Adding support for referrerPolicy in `page.goto`
([#9561](https://github.com/puppeteer/puppeteer/issues/9561))
([e3d69ec](e3d69ec554))


### Bug Fixes

* firefox revision resolution should not update chrome revision
([#9507](https://github.com/puppeteer/puppeteer/issues/9507))
([f59bbf4](f59bbf4014)),
closes [#9461](https://github.com/puppeteer/puppeteer/issues/9461)
* improve screenshot method types
([#9529](https://github.com/puppeteer/puppeteer/issues/9529))
([6847f88](6847f8835f))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
2023-01-23 17:48:02 +01:00

138 lines
3.2 KiB
Plaintext

# Configuration
```mdx-code-block
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
```
All defaults in Puppeteer can be customized in two ways:
1. [Configuration files](#configuration-files) (**recommended**)
2. [Environment variables](#environment-variables)
:::caution
Note that some options are only customizable through environment variables (such
as `HTTPS_PROXY`).
:::
:::caution
Puppeteer's configuration files and environment variables are ignored by `puppeteer-core`.
:::
## Configuration files
Configuration files are the **recommended** choice for configuring Puppeteer.
Puppeteer will look up the file tree for any of the following formats:
- `.puppeteerrc.cjs`,
- `.puppeteerrc.js`,
- `.puppeteerrc` (YAML/JSON),
- `.puppeteerrc.json`,
- `.puppeteerrc.yaml`,
- `puppeteer.config.js`, and
- `puppeteer.config.cjs`
Puppeteer will also read a `puppeteer` key from your application's
`package.json`.
See the [`Configuration`](../api/puppeteer.configuration) interface for possible
options.
:::caution
After adding a configuration file, you may need to remove and reinstall
`puppeteer` for it to take effect if the changes affect installation.
:::
### Examples
#### Changing the default cache directory
Starting in v19.0.0, Puppeteer stores browsers in `~/.cache/puppeteer` to
globally cache browsers between installation. This can cause problems if
`puppeteer` is packed during some build step and moved to a fresh location. The
following configuration can solve this issue (reinstall `puppeteer` to take
effect):
```js title="project-directory/.puppeteerrc.cjs"
const {join} = require('path');
/**
* @type {import("puppeteer").Configuration}
*/
module.exports = {
// Changes the cache location for Puppeteer.
cacheDirectory: join(__dirname, '.cache', 'puppeteer'),
};
```
:::note
Notice this is only possible with CommonJS configuration files as information
about the ambient environment is needed (in this case, `__dirname`).
:::
#### Enabling experiments
By default, experiments are turned off, but they can be individually turned on
using the [`experiments`](../api/puppeteer.configuration.experiments) key.
For example, if you want to enable ARM-native macOS chromium, you can use
<Tabs>
<TabItem value="CommonJS">
```js title=".puppeteerrc.cjs"
/**
* @type {import("puppeteer").Configuration}
*/
module.exports = {
experiments: {
macArmChromiumEnabled: true,
},
};
```
</TabItem>
<TabItem value="JSON">
```json title=".puppeteerrc.json"
{
"experiments": {
"macArmChromiumEnabled": true
}
}
```
</TabItem>
<TabItem value="YAML">
```yaml title=".puppeteerrc.yaml"
experiments:
macArmChromiumEnabled: true
```
</TabItem>
</Tabs>
## Environment variables
Along with configuration files, Puppeteer looks for certain
[environment variables](https://en.wikipedia.org/wiki/Environment_variable) for
customizing behavior. Environment variables will always override configuration
file options when applicable.
The following options are _environment-only_ options
- `HTTP_PROXY`, `HTTPS_PROXY`, `NO_PROXY` - defines HTTP proxy settings that are
used to download and run the browser.
All other options can be found in the documentation for the
[`Configuration`](../api/puppeteer.configuration) interface.