Kosko comes with ECMAScript modules (ESM) support since v1.1. You can write components and environments in native ESM files. The following packages are updated for ESM support. Please make sure to update these packages before using ESM.
@kosko/cli
- 1.2.0@kosko/env
- 1.1.0@kosko/generate
- 1.1.0kosko
- 1.1.0@kosko/migrate
- 2.0.0@kosko/require
- 2.0.0@kosko/yaml
- 1.0.0
The biggest difference between CommonJS and ESM is that @kosko/env
is asynchronous in ESM. This is because import()
is asynchronous. But don't freak out, it won't break your current code at all. @kosko/env
is still synchronous in CommonJS.
When retrieving environments in ESM, you MUST add await
as the example below.
import env from "@kosko/env";
const globalParams = await env.global();
const componentParams = await env.component("demo");
Instead of module.exports
, export components or environments with export default
.
import { Deployment } from "kubernetes-models/apps/v1/Deployment";
import { Service } from "kubernetes-models/v1/Service";
export default [new Deployment({}), new Service({})];
For more details about how to enable ESM or programmatical usage, please check here.
Breaking Changes
@kosko/yaml
loadString
and getResourceModule
functions become asynchronous because of ESM support.
@kosko/migrate
migrate
and migrateString
functions become asynchronous because of the breaking changes of @kosko/yaml
package.
@kosko/require
resolve
function no longer allows resolve.AsyncOpts
as options, please use ResolveOptions
instead.
kubernetes-models
kubernetes-models is also updated for ESM support.
@kubernetes-models/base
- 1.2.0@kubernetes-models/cert-manager
- 1.1.0@kubernetes-models/contour
- 1.1.0@kubernetes-models/crd-generate
- 1.2.0@kubernetes-models/gke
- 1.1.0kubernetes-models
- 1.1.0@kubernetes-models/openapi-generate
- 1.2.0@kubernetes-models/prometheus-operator
- 1.1.0@kubernetes-models/read-input
- 1.1.0@kubernetes-models/sealed-secrets
- 1.1.0@kubernetes-models/string-util
- 1.1.0@kubernetes-models/validate
- 1.1.0