Skip to main content

Folder Structure

Default Structure​

By default, all environment files are stored in environments folder as below.

.
└── environments
├── dev
│ ├── index.js
│ └── nginx.js
└── prod
├── index.js
└── nginx.js

You can configure path of environment files in kosko.toml. The default setting are:

kosko.toml
[paths.environment]
global = "environments/#{environment}"
component = "environments/#{environment}/#{component}"

Larger Project​

If you have tens or hundreds of components, moving environment files closer to your components might be better, so you don't need to jump between components and environments folder frequently.

Configuration​

You can configure paths.environment.component in kosko.toml to change the path of component environment files as below.

kosko.toml
[paths.environment]
component = "components/#{component}/#{environment}"

And the updated folder structure will be like this.

.
├── components
│ └── nginx
│ ├── dev.js
│ ├── index.js
│ └── prod.js
└── environments
├── dev.js
└── prod.js

TypeScript​

Type definitions can also be moved to components folder. For example, you can move type of component variables to components/<component>/types.ts, and import them in typings/@kosko__env/index.d.ts.

typings/@kosko__env/index.d.ts
import NginxEnvironment from "../../components/nginx/types";
import "@kosko/env";

declare module "@kosko/env" {
interface GlobalEnvironment {
imageRegistry: string;
}

interface ComponentEnvironment {
[key: string]: unknown;
nginx: NginxEnvironment;
}

interface Environment {
global(): GlobalEnvironment;

component<K extends string>(
name: K
): GlobalEnvironment & ComponentEnvironment[K];
}
}