Skip to content

ESM version is never used #6321

Closed
Closed
@akanass

Description

@akanass

Bug Report

Current Behavior
ES5 version is always used in client project when we build it with rollup or webpack even if we set mainFields to es2015 to take package.json attribute like in previous version.

CJS version is always used in node project even if we want to use module in latest node runtime.

This is due to the exports attribute in package.json which only declares node and default values.

Expected behavior
ESM version should be used when client project is built and we are using rxjs with import in javascript or typescript code and we want to build a script compatible with HTML <script type="module"> in HTML

ESM version should be used in node project if in package.json we set type:module attribute and we used it in latest runtime.

Reproduction
In a client project,

import { ajax, AjaxConfig, AjaxResponse } from 'rxjs/ajax';
import { Observable } from 'rxjs';

After that, you have to build the client project and you will see that only ES5 version is taken and not ESM version even if we set mainFields to es2015 in webpack or rollup config.

In a Node project,

import { Observable } from 'rxjs';

Build your project and in package.json set type:module and you will see that only CJS version is taken.

Environment

  • RxJS version: 7.0.0

Possible Solution

You can see all possibilities here and we have to make a proposition to change package.json:exports attribute

You can see examples in the link provided before and they are explaining how to manage node and module version.

If we don't change the exports attribute, we should allow build system to take the good version we want using main, module or es2015 attributes from package.json like it was possible in previous version especially for client project.

Metadata

Metadata

Assignees

No one assigned

    Labels

    8.xIssues and PRs for version 8.xAGENDA ITEMFlagged for discussion at core team meetings

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions