ericcornelissen/webmangler

Extract built-in plugins into separate packages

Closed this issue · 0 comments

Architecture Change

Description

As the project grows it is becoming clear that all plugins should be build as separate packages. Hence, the (core's) build-in mangler plugins and language plugins should be extracted into separate packages. These separate packages should then become dependencies of the WebMangler core, which should still provide the BuiltInManglers, RecommendedManglers, and BuiltInLanguageSupport plugins.

Doing this will have a couple of advantages, mostly related to clear separation of concerns - both for the source and for tests. This will also help with the efforts of #113 (clearer unit boundaries) and #124 (it's easier to run mutation test for smaller projects).

Progress

Mangler Plugins

  • CssClassMangler -> packages/mangler-css-classes (#144)
  • CssVariableMangler -> packages/mangler-css-variables (#144)
  • HtmlAttributeMangler -> packages/mangler-html-attributes (#144)
  • HtmlIdMangler -> packages/mangler-html-ids (#144)

Language Plugins

  • CssLanguagePlugin -> packages/language-css (#136)
  • HtmlLanguagePlugin -> packages/language-html (#136)
  • JavaScriptLanguagePlugin -> packages/language-js (#136)