10

Are there any existing solutions for run-time bundling of ES6 modules?

I'm looking to simplify JavaScript code development in a MVC5 web app. We're having issues with large, unwieldy JS files, so I'm hoping to get a module loader system in place. So far, I'm not finding any existing bundle transformers for ES6 or another module loader format. I'd be fine with using TypeScript or nodejs require style. I prefer not to use require.js style, though.

Perhaps there's a good reason this solution doesn't exist already. Maybe the dependency resolution processing is too much for a run-time bundling solution. But, I figure it's worth a shot to ask.

Solutions Considered

Prebuilt Web Client

Ultimately, this is where I want to be, but I need a stop-gap solution for now. I know how to put together a build system for an HTML client using grunt/gulp/webpack. But I don't want to have to tell developers to run webpack -w or something similar during development. Nor do I want to tell them to rebuild a solution for every JS change. They should be able to modify the file, refresh the browser, and see the change.

Directory Structure

This is the route I'll probably end up going with. Basically, this JS codebase consists of jQuery widgets and plain JS (helpers/common functions). So, if I structure the code in this directory structure and include the js dir, it should get me most of the way there:

  • js (DIR)
    • app-start.js
      • helpers (DIR)
      • widgets (DIR)

Widgets should be fine. Helpers, I can see issues where one function/class depends on another. Though, since a function call should never start with a helper (only a widget), this should work fine, assuming no globals are used (or maybe one global like 'App').

Community
  • 1
  • 1
Ken
  • 834
  • 9
  • 25
  • I don't know if this is an "answer" (largely because I think I tried it and had some qualms) but here is a nuget package that builds up js & css dependencies at runtime. https://github.com/Shazwazza/ClientDependency – James White Oct 09 '16 at 15:41

0 Answers0