Extract initializations from WebPack & make load order more deterministic

[MAILPOET-1644]
This commit is contained in:
Jan Jakeš
2018-11-26 15:01:10 +01:00
parent 454c927eff
commit b8a161e1d4
7 changed files with 116 additions and 110 deletions

View File

@@ -0,0 +1,9 @@
// Initialize Editor dependencies that have side effect (meaning they
// not only define module but also modify/register something on load).
// This is to avoid undefined import order & messy WebPack config.
// Code can be gradually refactored to avoid side effects completely.
import 'form_editor/form_editor.js'; // side effect - calls document.observe()
import 'codemirror'; // side effect - has to be loaded here, used in 'editor.html'
import 'codemirror/mode/css/css'; // side effect - has to be loaded here, used in 'editor.html'

View File

@@ -0,0 +1,49 @@
// Initialize Editor dependencies that have side effect (meaning they
// not only define module but also modify/register something on load).
// This is to avoid undefined import order & messy WebPack config.
// Code can be gradually refactored to avoid side effects completely.
// dependencies
import 'sticky-kit'; // side effect - extends jQuery
import 'velocity-animate'; // side effect - assigns to window
// app
import 'newsletter_editor/initializer.jsx'; // side effect - calls Hooks.addAction()
import 'newsletter_editor/App'; // side effect - assigns to window
// components
import 'newsletter_editor/components/config.js'; // side effect - calls App.on()
import 'newsletter_editor/components/styles.js'; // side effect - calls App.on()
import 'newsletter_editor/components/sidebar.js'; // side effect - calls App.on()
import 'newsletter_editor/components/content.js'; // side effect - calls App.on()
import 'newsletter_editor/components/heading.js'; // side effect - calls App.on()
import 'newsletter_editor/components/save.js'; // side effect - calls App.on()
import 'newsletter_editor/components/communication.js'; // side effect - calls App.on()
// behaviors
import 'newsletter_editor/behaviors/BehaviorsLookup.js'; // side effect - assings to window and Marionette
import 'newsletter_editor/behaviors/ColorPickerBehavior.js'; // side effect - assigns to BehaviorsLookup
import 'newsletter_editor/behaviors/ContainerDropZoneBehavior.js'; // side effect - assigns to BehaviorsLookup
import 'newsletter_editor/behaviors/DraggableBehavior.js'; // side effect - assigns to BehaviorsLookup
import 'newsletter_editor/behaviors/HighlightContainerBehavior.js'; // side effect - assigns to BehaviorsLookup
import 'newsletter_editor/behaviors/HighlightEditingBehavior.js'; // side effect - assigns to BehaviorsLookup
import 'newsletter_editor/behaviors/MediaManagerBehavior.js'; // side effect - assigns to BehaviorsLookup
import 'newsletter_editor/behaviors/ResizableBehavior.js'; // side effect - assigns to BehaviorsLookup
import 'newsletter_editor/behaviors/SortableBehavior.js'; // side effect - assigns to BehaviorsLookup
import 'newsletter_editor/behaviors/ShowSettingsBehavior.js'; // side effect - assigns to BehaviorsLookup
import 'newsletter_editor/behaviors/TextEditorBehavior.js'; // side effect - assigns to BehaviorsLookup
// blocks
import 'newsletter_editor/blocks/container.js'; // side effect - calls App.on()
import 'newsletter_editor/blocks/button.js'; // side effect - calls App.on()
import 'newsletter_editor/blocks/image.js'; // side effect - calls App.on()
import 'newsletter_editor/blocks/divider.js'; // side effect - calls App.on()
import 'newsletter_editor/blocks/text.js'; // side effect - calls App.on()
import 'newsletter_editor/blocks/spacer.js'; // side effect - calls App.on()
import 'newsletter_editor/blocks/footer.js'; // side effect - calls App.on()
import 'newsletter_editor/blocks/header.js'; // side effect - calls App.on()
import 'newsletter_editor/blocks/automatedLatestContent.js'; // side effect - calls App.on()
import 'newsletter_editor/blocks/automatedLatestContentLayout.js'; // side effect - calls App.on()
import 'newsletter_editor/blocks/posts.js'; // side effect - calls App.on()
import 'newsletter_editor/blocks/social.js'; // side effect - calls App.on()

View File

@@ -0,0 +1,19 @@
// Initialize Editor dependencies that have side effect (meaning they
// not only define module but also modify/register something on load).
// This is to avoid undefined import order & messy WebPack config.
// Code can be gradually refactored to avoid side effects completely.
import 'subscribers/subscribers.jsx'; // side effect - renders ReactDOM to document
import 'newsletters/newsletters.jsx'; // side effect - renders ReactDOM to window
import 'segments/segments.jsx'; // side effect - renders ReactDOM to document
import 'forms/forms.jsx'; // side effect - renders ReactDOM to document
import 'settings/tabs.js'; // side effect - assigns to MailPoet.Router, executes code on doc ready
import 'help/help.jsx'; // side effect - renders ReactDOM to document
import 'intro.jsx'; // side effect - assigns to MailPoet.showIntro
import 'settings/reinstall_from_scratch.js'; // side effect - adds event handler to document
import 'subscribers/importExport/import.js'; // side effect - executes on doc ready, adds events
import 'subscribers/importExport/export.js'; // side effect - executes on doc ready
import 'welcome_wizard/wizard.jsx'; // side effect - renders ReactDOM to document
import 'settings/announcement.jsx'; // side effect - renders ReactDOM to document
import 'nps_poll.jsx'; // side effect - calls setImmediate()

View File

@@ -0,0 +1,10 @@
// Initialize Editor dependencies that have side effect (meaning they
// not only define module but also modify/register something on load).
// This is to avoid undefined import order & messy WebPack config.
// Code can be gradually refactored to avoid side effects completely.
import 'mailpoet'; // side effect - assigns MailPoet to window
import 'dismissible-notice.jsx'; // side effect - adds jQuery event
import 'jquery.serialize_object'; // side effect - extends jQuery
import 'parsleyjs'; // side effect - extends jQuery

View File

@@ -0,0 +1,9 @@
// Initialize Editor dependencies that have side effect (meaning they
// not only define module but also modify/register something on load).
// This is to avoid undefined import order & messy WebPack config.
// Code can be gradually refactored to avoid side effects completely.
import 'mailpoet'; // side effect - assigns MailPoet to window
import 'jquery.serialize_object'; // side effect - extends jQuery
import 'public.js'; // side effect - assigns to window, sets up form validation, etc.

View File

@@ -0,0 +1,9 @@
// Initialize Editor dependencies that have side effect (meaning they
// not only define module but also modify/register something on load).
// This is to avoid undefined import order & messy WebPack config.
// Code can be gradually refactored to avoid side effects completely.
import 'handlebars'; // no side effect - this just explicitly requires Handlebars
import 'handlebars_helpers'; // side effect - extends Handlebars, assigns to window
import 'wp-js-hooks'; // side effect - assigns to window