babel-plugin-transform-commonjs
babel-plugin-transform-commonjs copied to clipboard
Support for re-exporting ES6 modules
IN example:
module.exports = require('./lib/index.js');
OUT actual:
import _libIndexJs from "./lib/index.js";
var module = {
exports: {}
};
var exports = module.exports;
module.exports = _libIndexJs;
export default module.exports;
OUT expected:
export * from "./lib/index.js";
Source Code: https://unpkg.com/[email protected]/index.js
import { graphql } from 'react-relay'
// Uncaught SyntaxError: The requested module 'node_modules/react-relay/index.js' does not provide an export named 'graphql'
Would be cool to support named exports too
Source code: https://unpkg.com/[email protected]/lib/index.js
IN example:
var ReactRelayContext = require("./ReactRelayContext");
var ReactRelayFragmentContainer = require("./ReactRelayFragmentContainer");
var ReactRelayPaginationContainer = require("./ReactRelayPaginationContainer");
var ReactRelayQueryRenderer = require("./ReactRelayQueryRenderer");
var ReactRelayRefetchContainer = require("./ReactRelayRefetchContainer");
var RelayRuntime = require("relay-runtime");
module.exports = {
QueryRenderer: ReactRelayQueryRenderer,
MutationTypes: RelayRuntime.MutationTypes,
RangeOperations: RelayRuntime.RangeOperations,
ReactRelayContext: ReactRelayContext,
applyOptimisticMutation: RelayRuntime.applyOptimisticMutation,
commitLocalUpdate: RelayRuntime.commitLocalUpdate,
commitMutation: RelayRuntime.commitMutation,
createFragmentContainer: ReactRelayFragmentContainer.createContainer,
createPaginationContainer: ReactRelayPaginationContainer.createContainer,
createRefetchContainer: ReactRelayRefetchContainer.createContainer,
fetchQuery: RelayRuntime.fetchQuery,
graphql: RelayRuntime.graphql,
requestSubscription: RelayRuntime.requestSubscription
};
OUT actual:
import _relayRuntime from "relay-runtime";
import _ReactRelayRefetchContainer from "./ReactRelayRefetchContainer";
import _ReactRelayQueryRenderer from "./ReactRelayQueryRenderer";
import _ReactRelayPaginationContainer from "./ReactRelayPaginationContainer";
import _ReactRelayFragmentContainer from "./ReactRelayFragmentContainer";
import _ReactRelayContext from "./ReactRelayContext";
var module = {
exports: {}
};
var exports = module.exports;
var ReactRelayContext = _ReactRelayContext;
var ReactRelayFragmentContainer = _ReactRelayFragmentContainer;
var ReactRelayPaginationContainer = _ReactRelayPaginationContainer;
var ReactRelayQueryRenderer = _ReactRelayQueryRenderer;
var ReactRelayRefetchContainer = _ReactRelayRefetchContainer;
var RelayRuntime = _relayRuntime;
module.exports = {
QueryRenderer: ReactRelayQueryRenderer,
MutationTypes: RelayRuntime.MutationTypes,
RangeOperations: RelayRuntime.RangeOperations,
ReactRelayContext: ReactRelayContext,
applyOptimisticMutation: RelayRuntime.applyOptimisticMutation,
commitLocalUpdate: RelayRuntime.commitLocalUpdate,
commitMutation: RelayRuntime.commitMutation,
createFragmentContainer: ReactRelayFragmentContainer.createContainer,
createPaginationContainer: ReactRelayPaginationContainer.createContainer,
createRefetchContainer: ReactRelayRefetchContainer.createContainer,
fetchQuery: RelayRuntime.fetchQuery,
graphql: RelayRuntime.graphql,
requestSubscription: RelayRuntime.requestSubscription
};
export default module.exports;
OUT expected:
import _relayRuntime from "relay-runtime";
import _ReactRelayRefetchContainer from "./ReactRelayRefetchContainer";
import _ReactRelayQueryRenderer from "./ReactRelayQueryRenderer";
import _ReactRelayPaginationContainer from "./ReactRelayPaginationContainer";
import _ReactRelayFragmentContainer from "./ReactRelayFragmentContainer";
import _ReactRelayContext from "./ReactRelayContext";
var module = {
exports: {}
};
var exports = module.exports;
var ReactRelayContext = _ReactRelayContext;
var ReactRelayFragmentContainer = _ReactRelayFragmentContainer;
var ReactRelayPaginationContainer = _ReactRelayPaginationContainer;
var ReactRelayQueryRenderer = _ReactRelayQueryRenderer;
var ReactRelayRefetchContainer = _ReactRelayRefetchContainer;
var RelayRuntime = _relayRuntime;
module.exports = {
QueryRenderer: ReactRelayQueryRenderer,
MutationTypes: RelayRuntime.MutationTypes,
RangeOperations: RelayRuntime.RangeOperations,
ReactRelayContext: ReactRelayContext,
applyOptimisticMutation: RelayRuntime.applyOptimisticMutation,
commitLocalUpdate: RelayRuntime.commitLocalUpdate,
commitMutation: RelayRuntime.commitMutation,
createFragmentContainer: ReactRelayFragmentContainer.createContainer,
createPaginationContainer: ReactRelayPaginationContainer.createContainer,
createRefetchContainer: ReactRelayRefetchContainer.createContainer,
fetchQuery: RelayRuntime.fetchQuery,
graphql: RelayRuntime.graphql,
requestSubscription: RelayRuntime.requestSubscription
};
export const { // <====== NAMED EXPORTS ADDED
QueryRenderer,
MutationTypes,
RangeOperations,
ReactRelayContext,
applyOptimisticMutation,
commitLocalUpdate,
commitMutation,
createFragmentContainer,
createPaginationContainer,
createRefetchContainer,
fetchQuery,
graphql,
requestSubscription,
} = module.exports;
export default module.exports;
Is it possible/doable?
See also rollup-plugin-commonjs and its namedExports
option for inspiration.
Any progress so far?