# arc.config.json

Source: https://dev.arcxp.com/pagebuilder-engine/pagebuilder-basics/arcconfigjson/

A new compiler options using a new configuration file arc.config.json introduced in Engine 4.1.8 and 5.0.4

This is an optional configuration file `arc.config.json` should be placed in the root of the bundle folder to further customize the compiler behavior.

## Example arc.config.json

```json
{
    "compiler": {
        "parallel": true,
        "contentSources": {
            "excludeModules": "*",
            "includeModules": [
                "typescript-logging"
            ]
        }
    }
}
```

## Properties

- `compiler.parallel` (default = false): when set to true, the pagebuilder-compiler will fork additional node processes to run webpack configurations in parallel using the parallel-webpack dependency. This will process builds faster. See [Improve local build speed with parallel build threads](https://dev.arcxp.com/pagebuilder-engine/developer-docs/improve-local-build-speed-with-parallel-build-threads/) for more information and build speed benchmarks we observed.
- `compiler.devtool` (omitted by default): when used with `compiler.parallel` set to one of the valid values for `devtool` webpack setting, it can change the source-map (used for the debugging process) generation behavior. See [webpack documentation about devtool](https://webpack.js.org/configuration/devtool/) for valid values and more information about them.
- `compiler.contentSources.excludeModules` (default = undefined): when the value is set to “`*`”, it will exclude all dependencies from node\_modules from being bundled into content sources. This setting is primarily used to dedupe dependencies and reduce the size of content sources within the deployed PageBuilder Engine lambda filesystem. See [Optimize large bundles’ build size with content source compilation dependency duplication](https://dev.arcxp.com/pagebuilder-engine/developer-docs/optimize-large-bundles-build-size-with-content-source-compilation-dependency-duplication/) guide for benchmarks we have seen in our tests.
- `compiler.contentSources.includeModules` (default = undefined): when used in conjunction with excludeModules: ”\*”, this setting will bundle specified dependencies into the content source. This setting is primarily used for edge cases where dependencies only work when bundled directly into the content source. This property accepts array of node module names. See [webpack documentation about devtool](https://webpack.js.org/configuration/devtool/) for valid values and more information about them.
- `compiler.skipDependencyTranspilation` (default = false): when set to true, skips Babel transpilation of the bundle’s prebuilt `node_modules` tree for bundles that don’t declare an `org` in `blocks.json` (org-declaring bundles already skip it by default). Can also be set via the `COMPILER_SKIP_DEPENDENCY_TRANSPILATION` environment variable, which takes precedence when set. See [Skip node\_modules transpilation](https://dev.arcxp.com/pagebuilder-engine/how-to-guides/migration-guides/adopting-webpack-5-in-your-bundle/#skip-node%5Fmodules-transpilation-opt-in) for benchmarks and the `transpileModules` escape hatch.
