Skip to content

Instantly share code, notes, and snippets.

@dy
Last active August 29, 2015 14:14
Show Gist options
  • Save dy/c410f1bd7bd56bae0362 to your computer and use it in GitHub Desktop.
Save dy/c410f1bd7bd56bae0362 to your computer and use it in GitHub Desktop.
Ideal JS builder

Ideal js components builder

Goal

Come up with a tool solving ideally building task and allowing user to focus on component logic not shims or polyfills.

Tasks

  • Build component efficiently for different target environments: jquery, web-component, node, browser, UMD etc. Take into account best-practices.
  • Ensure that the result contains no redundant code: clones, analogous modules, unnecessary exports with subbranches, polyfills, env shims, null-like modules, unnecessary wrappers.
  • Provide advanced-compilable exports.
  • Polyfill & shim the environment.
  • Assess code quality: antipatterns, clones, rule-3. Give recommendations.

Features

  • Harness environmental functions, if possible, similar to dependencies (like $.css instead of mucss).
  • Remove empty or avoidable requirements (like debug).
  • Autopolyfill: provide absent environmental variables (like classList on elements).
  • Normalize environment: provide shims (node-builtins for browsers, document, window etc for Node).
  • Resolve analogous modules (mucss/css + dom/css = dom/css).
  • Remove unused exports from inner modules, like (mucss.offsets).
  • Wrap result for target environment: UMD, jQuery-plugin, web-component, ...
  • Detect code clones, automatically collapses them.
  • Assess quality: clones, antipatterns, complexity, nasa-rules.
  • Autotest that merge result is ok: prepare tests for target environments.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment