Skip to content

Upcoming v12 #2625

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 6 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 0 additions & 70 deletions .babelrc.js

This file was deleted.

10 changes: 1 addition & 9 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,17 +71,13 @@ jobs:
- with-workspace
- run: npm run prettier:check
- run: npm run lint
- run: npm run check-types
- run: npm run test:types

unit:
executor: docker-with-node
steps:
- with-workspace
- run: npm run test:cover-unit
- store_test_results:
path: reports
- store_artifacts:
path: ./reports/unit-results.xml

size:
executor: docker-with-node
Expand All @@ -94,10 +90,6 @@ jobs:
steps:
- with-workspace
- run: npm run test:cover-integration
- store_test_results:
path: reports
- store_artifacts:
path: ./reports/integration-results.xml

# Do not use the workspace for the release step
release:
Expand Down
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
dist
gh-pages
webpack-build-log.json

# Esdoc dirs
out
Expand Down
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ dist
coverage
out
typings
rollup.config.js
106 changes: 106 additions & 0 deletions MIGRATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
<!-- shared header START -->

<p align="center">
<a href="https://www.contentful.com/developers/docs/references/content-management-api/">
<img alt="Contentful Logo" title="Contentful" src="images/contentful-icon.png" width="150">
</a>
</p>

<h1 align='center'>Content Management API</h1>

<h3 align="center">Migration</h3>

<p align="center">
<a href="README.md">Readme</a> ·
<a href="MIGRATION.md">Migration</a> · ·
<a href="CONTRIBUTING.md">Contributing</a>
</p>

<p align="center">
<a href="https://www.contentful.com/slack/">
<img src="https://img.shields.io/badge/-Join%20Community%20Slack-2AB27B.svg?logo=slack&maxAge=31557600" alt="Join Contentful Community Slack">
</a>
</p>

<!-- shared header END -->

# Migration information

- [Migration information](#migration-information)
- [Migration to version 12.x](#migration-to-version-12x)
- [Breaking changes](#breaking-changes)
- [Node.js core modules](#nodejs-core-modules)
- [Pre-bundled code](#pre-bundled-code)
- [Webpack 5](#webpack-5)
- [Rollup](#rollup)
- [Improvements](#improvements)
- [Tree shaking](#tree-shaking)
- [Module support and package configuration](#module-support-and-package-configuration)
- [Testing framework](#testing-framework)
- [Security](#security)
- [Removal of eval](#removal-of-eval)

From version 3.0.0 onwards, you can access documentation for a specific version by visiting `https://contentful.github.io/contentful-management.js/contentful-management/<VERSION>`.

You can upgrade to a major version using `npm update contentful`

## Migration to version 12.x

Version 12.0.0 introduces full ESM support by default, with CJS variants still available for legacy environments. This version is a significant step forward in modernizing our build and improving performance while maintaining wide compatibility across various environments.

### Breaking changes

#### Node.js core modules

We no longer bundle Node.js core modules. If you’re bundling for the browser, you may need to configure your bundler to provide fallbacks or empty functions, particularly for the fs module. This change was introduced in version 12.x and may affect projects using Node.js-specific modules in the browser.

#### Pre-bundled code

Pre-bundled code for Node.js is no longer provided. If your setup relies on pre-bundled packages, you may need to adjust your build configuration.

##### Webpack 5

To make our project bundle properly for the browser with Webpack 5, you need to add this to your configuration:

```js
module.exports = {
resolve: {
fallback: {
os: false,
zlib: false,
tty: false,
},
},
}
```

##### Rollup

To make our project bundle properly for the browser with Rollup, you need to add this to your configuration:

```js
nodeResolve({ browser: true, preferBuiltins: false })
```

### Improvements

#### Tree shaking

Tree shaking is significantly improved, ensuring that only the necessary parts of the library are included in your final bundle.
Smaller browser bundles

Browser bundle sizes have been reduced by nearly threefold, from 128KB to 45KB, contributing to faster load times and improved performance.

#### Module support and package configuration

The package now uses "type": "module" in package.json to define the default module format as ESM, while also providing support for CJS through the exports field. This allows us to support a wide range of environments including Node.js (with and without TypeScript, both CJS and ESM), AngularJS, GatsbyJS, Next.js, Nuxt, React Native (Expo), Rollup, Svelte, Vite, Webpack, and more.

#### Testing framework

We’ve migrated our internal test environment from Jest to Vitest, aligning with modern testing frameworks and tools.

## Security

### Removal of eval

We have completely removed the use of eval in our exported code, improving security and compatibility with strict environments.
Loading