Skip to content

babel-preset-react-app, babel 7 for component library #5443

Closed

Description

@bogdansoare

I'm using babel-preset-react-app to transpile a npm package with just babel that I'm consuming in a CRA app.

It worked well with babel-preset-react-app@3.1.1 and babel@6, but when I updated to babel-preset-react-app@5.0.3 and babel@7 the output build contained relative imports for babel stuff instead on inlining the functions

Before upgrade:

function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

import React, { Component } from 'react';

After upgrade:

import _objectWithoutProperties from "/Users/bogdansoare/Sites/platform_shared/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties";
import _classCallCheck from "/Users/bogdansoare/Sites/platform_shared/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck";
import _createClass from "/Users/bogdansoare/Sites/platform_shared/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass";
import React, { Component } from 'react';

The build command that I'm using is NODE_ENV=production babel src --out-dir build --copy-files

Am I doing something wrong with the new version of babel-preset-react-app ? Or it's a config issue from babel?

Activity

  1. simonedavico commented on Oct 16, 2018

    @simonedavico

    We are releasing a component library using the same method and struggled with this for a few hours as well. We are using the react-app preset in our .babelrc.

    We solved the issue by configuring the react-app preset to avoid generating absolute paths for @babel/runtime, like this:

    "presets:" [
      [ "react-app", { "absoluteRuntime": false } ]
    ]
    

    This requires having @babel/runtime as a dependency in our package.json.

  2. bogdansoare commented on Oct 16, 2018

    @bogdansoare
    ContributorAuthor

    @simonedavico awesome, thank you very much for this explanation 🙏

  3. iddan commented on Nov 17, 2018

    @iddan
    Contributor

    Can absoluteRuntime appear in docs?

  4. Timer commented on Nov 17, 2018

    @Timer
    Contributor

    Send a PR. 😄

  5. iddan commented on Nov 17, 2018

    @iddan
    Contributor

    Done #5847

  6. locked and limited conversation to collaborators on Jan 9, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions