Come up with a tool solving ideally building task and allowing user to focus on component logic not shims or polyfills.
- 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.
- Harness environmental functions, if possible, similar to dependencies (like
$.css
instead ofmucss
). - 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.