Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

Is there a syntax using ES6 or ES7 or babel which will allow me to easily bundle together many groups of sub files?

E.g., given:

./action_creators/index.js
./action_creators/foo_actions.js
./action_creators/bar_actions.js

Have index.js import foo and bar actions, then re-export them, so I can

import {FooAction, BarAction} from './action_creators/index.js'

I don't want to have to remember / change references if I were to change which file I've organized the objects themselves into.

Yes, ES6 supports directly exporting imported modules:

export { name1, name2, …, nameN } from …;
export {FooAction, BarAction} from './action_creators/index.js'

You can also re-export all exports of the imported module using the * syntax:

export * from …;
export * from './action_creators/index.js';
                @Qwerty you cannot currently export as named namespaces like that. See github.com/tc39/proposal-export-ns-from for the proposal for it.  One thing you can do in the meantime is something like:  ``` import * as Something from './something'; export { Something } ```
– Jasmine Hegman
                Sep 15, 2018 at 17:25
                What happens if two subsequent lines of export * from ... export a named function with the same name? I mean, if export * from 'a'; and export * from 'b', both a and b define a function with the same name and export it, e.g.: export function fn() { ... }...
– tonix
                Dec 1, 2019 at 13:22
        

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.