Skip to content

Instantly share code, notes, and snippets.

@shanewholloway
Last active September 13, 2017 16:16
Show Gist options
  • Save shanewholloway/0300fe7a4f6ce1b200275b880f79a2d2 to your computer and use it in GitHub Desktop.
Save shanewholloway/0300fe7a4f6ce1b200275b880f79a2d2 to your computer and use it in GitHub Desktop.
Rollup 0.49.3 regression bundling React — works in 0.49.2
node_modules/
*/node_modules/
*/build
*/dist
./yarn.lock
./package-lock.json

Working with React 15.6.1, I discovered a regression when bundling with Rollup 0.49.3 in the form of a RangeError: Maximum call stack size exceeded exception. This gist bundles without error using Rollup 0.49.2.

Versions

  • Mac OS X 10.12.6 using node 8.4 and 8.5
  • docker using node:8.4 and node:8.5 image

Instructions

$ npm install && npm run build

Or for Docker repros:

  • $ docker build -f ./Dockerfile.node84 .
  • $ docker build -f ./Dockerfile.node85 .

Output

$ node --version
v8.4.0

$ node ./rollup_build.js
Error during rollup build: RangeError: Maximum call stack size exceeded
    at Set.values (native)
    at Function.from (native)
    at Node.hasEffectsWhenMutated (/Users/sholloway/sandbox/2017-09-12-rollup-react/node_modules/rollup/dist/rollup.js:6900:10)
    at Node.hasEffectsWhenMutated (/Users/sholloway/sandbox/2017-09-12-rollup-react/node_modules/rollup/dist/rollup.js:7091:21)
    at declaration.declaration.included.declaration.isParam.declaration.isGlobal.declaration.isExternal.declaration.isNamespace.declaration.assignedExpressions.Array.from.some.node (/Users/sholloway/sandbox/2017-09-12-rollup-react/node_modules/rollup/dist/rollup.js:6900:74)
    at Array.some (<anonymous>)
    at Node.hasEffectsWhenMutated (/Users/sholloway/sandbox/2017-09-12-rollup-react/node_modules/rollup/dist/rollup.js:6900:55)
    at Node.hasEffectsWhenMutated (/Users/sholloway/sandbox/2017-09-12-rollup-react/node_modules/rollup/dist/rollup.js:7091:21)
    at declaration.declaration.included.declaration.isParam.declaration.isGlobal.declaration.isExternal.declaration.isNamespace.declaration.assignedExpressions.Array.from.some.node (/Users/sholloway/sandbox/2017-09-12-rollup-react/node_modules/rollup/dist/rollup.js:6900:74)
    at Array.some (<anonymous>)
FROM node:8.4
ADD . /app
RUN cd /app \
&& npm install \
&& npm run build
FROM node:8.5
ADD . /app
RUN cd /app \
&& npm install \
&& npm run build
{
"private": true,
"devDependencies": {
"http-server": "^0.10.0",
"react": "^15.6.1",
"react-dom": "^15.6.1",
"rollup": "0.49.3",
"rollup-plugin-commonjs": "^8.2.1",
"rollup-plugin-node-resolve": "^3.0.0",
"rollup-plugin-replace": "^2.0.0"
},
"scripts": {
"start": "http-server -c-1 .",
"build": "node ./rollup_build.js"
}
}
const rollup = require('rollup')
const build = (input, output) =>
rollup.rollup(input)
.then(bundle =>
bundle.write(output)
.then(()=>bundle))
const rpi = {
resolve: require('rollup-plugin-node-resolve'),
commonjs: require('rollup-plugin-commonjs'),
replace: require('rollup-plugin-replace'),
}
const input = {
input: 'vendor.js',
plugins: [
rpi.resolve(),
rpi.commonjs(),
rpi.replace({ 'process.env.NODE_ENV': process.env.NODE_ENV || '"development"' }),
],
}
const output = {
name: 'MyVendorBundle',
file: 'bundle.vendor.js',
format: 'iife',
}
build(input, output)
.catch(err => console.error('Error during rollup build:', err))
import React from 'react'
window.React = React
import * as ReactDOM from 'react-dom'
window.ReactDOM = ReactDOM
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment