Skip to content

Commit 61338d0

Browse files
authored
Merge pull request #1 from magefan/520-rocketjavascript-2.1.0
520 rocketjavascript 2.1.0
2 parents 78b255b + 7a4b51f commit 61338d0

File tree

4 files changed

+268
-1
lines changed

4 files changed

+268
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?php
2+
namespace Magefan\RocketJavaScript\Plugin\Deploy\Package\Bundle;
3+
4+
use Magento\Deploy\Package\Bundle\RequireJs;
5+
6+
class RequireJsPlugin
7+
{
8+
protected $scopeConfig;
9+
10+
public function __construct(\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig)
11+
{
12+
$this->scopeConfig = $scopeConfig;
13+
}
14+
15+
public function aroundAddFile(RequireJs $subject, callable $proceed, $filePath, $sourcePath, $contentType) {
16+
17+
$jsOptimization = $this->scopeConfig->getValue('mfrocketjavascript/general/enable_javaScript_bundling_optimization', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
18+
if ($jsOptimization) {
19+
$includeInBundling = $this->scopeConfig->getValue('mfrocketjavascript/general/included_in_bundling', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
20+
$allowedFiles = str_replace("\r","\n", $includeInBundling);
21+
$allowedFiles = explode("\n", $allowedFiles);
22+
23+
foreach ($allowedFiles as $key => $allowedFile) {
24+
$allowedFiles[$key] = trim($allowedFile);
25+
if (empty($allowedFiles[$key])) {
26+
unset($allowedFiles[$key]);
27+
}
28+
}
29+
30+
foreach ($allowedFiles as $allowed) {
31+
$allowedFiles[] = str_replace('.min.js', '.js', $allowed);
32+
}
33+
34+
$include = false;
35+
foreach ($allowedFiles as $allowedFile) {
36+
if (strpos($sourcePath, $allowedFile) !== false) {
37+
$include = true;
38+
break;
39+
}
40+
}
41+
42+
if (!$include) {
43+
return true;
44+
}
45+
46+
}
47+
return $proceed($filePath, $sourcePath, $contentType);
48+
}
49+
}

etc/adminhtml/system.xml

+11-1
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,20 @@
2323
<frontend_model>Magefan\RocketJavaScript\Block\Adminhtml\System\Config\Form\Info</frontend_model>
2424
</field>
2525
<field id="enabled" showInDefault="1" showInStore="1" showInWebsite="1" sortOrder="20" translate="label" type="select">
26-
<label>Enabled</label>
26+
<label>Enabled Deferred JavaScript</label>
2727
<comment>If enabled all JavaScript on storefront will be moved to the end of the page.</comment>
2828
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
2929
</field>
30+
<field id="enable_javaScript_bundling_optimization" showInDefault="1" showInStore="1" showInWebsite="1" sortOrder="30" translate="label" type="select">
31+
<label>Enable JavaScript Bundling Optimization</label>
32+
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
33+
</field>
34+
<field id="included_in_bundling" showInDefault="1" showInStore="1" showInWebsite="1" sortOrder="40" translate="label" type="textarea">
35+
<label>Included In Bundling</label>
36+
<depends>
37+
<field id="enable_javaScript_bundling_optimization">1</field>
38+
</depends>
39+
</field>
3040
</group>
3141
</section>
3242
</system>

etc/config.xml

+201
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,201 @@
1+
<?xml version="1.0"?>
2+
<!--
3+
/**
4+
* Copyright © Magefan ([email protected]). All rights reserved.
5+
* See LICENSE.txt for license details (http://opensource.org/licenses/osl-3.0.php).
6+
*
7+
* Glory to Ukraine! Glory to the heroes!
8+
*/
9+
-->
10+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
11+
<default>
12+
<mfrocketjavascript>
13+
<general>
14+
<included_in_bundling>jquery/jquery.mobile.custom.min.js
15+
mage/dataPost.min.js
16+
mage/bootstrap.min.js
17+
mage/translate-inline.min.js
18+
mage/utils/arrays.min.js
19+
mage/utils/arrays.js
20+
FormData.min.js
21+
MutationObserver.min.js
22+
jquery/jquery.metadata.min.js
23+
mage/loader.min.js
24+
Magento_Wishlist/js/add-to-wishlist.min.js
25+
Magento_PageCache/js/page-cache.min.js
26+
Magento_Cookie/js/require-cookie.min.js
27+
Magento_Ui/js/core/app.min.js
28+
mage/dropdown.min.js
29+
Magento_Search/form-mini.min.js
30+
magnifier/magnify.min.js
31+
Magento_ProductVideo/js/fotorama-add-video-events.min.js
32+
Magento_Review/js/error-placement.min.js
33+
Magento_Review/js/validate-review.min.js
34+
Magento_Catalog/js/upsell-products.min.js
35+
mage/cookies.min.js
36+
MagePal_GoogleTagManager/js/datalayer.min.js
37+
Magento_Ui/js/block-loader.min.js
38+
Magento_Review/js/process-reviews.min.js
39+
Magento_Customer/js/section-config.min.js
40+
Magento_Customer/js/customer-data.min.js
41+
Magento_Customer/js/invalidation-processor.min.js
42+
Magento_Catalog/js/product/view/provider.min.js
43+
magnifier/magnifier.min.js
44+
Magento_Catalog/js/gallery.min.js
45+
Magento_Ui/js/core/renderer/types.min.js
46+
Magento_Ui/js/core/renderer/layout.min.js
47+
Plumrocket_SocialLoginFree/js/sharepopup.min.js
48+
Magento_Catalog/js/view/compare-products.min.js
49+
Magento_Checkout/js/view/minicart.min.js
50+
Magento_Ui/js/lib/core/collection.min.js
51+
Magento_Tax/js/view/checkout/minicart/subtotal/totals.min.js
52+
Magento_Msrp/js/view/checkout/minicart/subtotal/totals.min.js
53+
Magento_Catalog/js/view/image.min.js
54+
Magento_Review/js/view/review.min.js
55+
Plumrocket_SocialLoginFree/js/view/customer/authentication-popup.min.js
56+
Magento_Captcha/js/view/checkout/loginCaptcha.min.js
57+
Mirasvit_SearchAutocomplete/js/injection.min.js
58+
Mirasvit_SearchAutocomplete/js/autocomplete.min.js
59+
Mirasvit_SearchAutocomplete/js/provider.min.js
60+
Mirasvit_SearchAutocomplete/js/popular.min.js
61+
Magento_Customer/js/view/customer.min.js
62+
Magento_Theme/js/view/messages.min.js
63+
Magento_Catalog/js/storage-manager.min.js
64+
Magento_Ui/js/view/messages.min.js
65+
MSP_ReCaptcha/js/ui-messages-mixin.min.js
66+
Magento_Ui/js/lib/core/element/element.min.js
67+
mage/decorate.min.js
68+
mage/storage.min.js
69+
Magento_Catalog/js/product/storage/storage-service.min.js
70+
Magento_Checkout/js/sidebar.min.js
71+
mage/gallery/gallery.min.js //!!!!!
72+
Mirasvit_SearchAutocomplete/js/lib/jquery.highlight.min.js
73+
Magento_Ui/js/form/form.min.js
74+
Magento_Customer/js/action/login.min.js
75+
Magento_Customer/js/model/authentication-popup.min.js
76+
mage/url.min.js
77+
Magento_Ui/js/modal/alert.min.js
78+
Magento_Ui/js/model/messageList.min.js
79+
MSP_ReCaptcha/js/registry.min.js
80+
Magento_Ui/js/lib/core/element/links.min.js
81+
Magento_Captcha/js/view/checkout/defaultCaptcha.min.js
82+
Magento_Captcha/js/model/captchaList.min.js
83+
Magento_Catalog/js/product/storage/data-storage.min.js
84+
Magento_Catalog/js/product/storage/ids-storage-compare.min.js
85+
fotorama/fotorama.min.js
86+
Magento_Ui/js/lib/spinner.min.js
87+
mage/requirejs/resolver.min.js
88+
Magento_Ui/js/form/adapter.min.js
89+
Magento_Ui/js/model/messages.min.js
90+
Magento_Captcha/js/model/captcha.min.js
91+
Magento_Captcha/js/action/refresh.min.js
92+
Magento_Customer/js/invalidation-rules/website-rule.min.js
93+
Magento_Catalog/js/product/query-builder.min.js
94+
Magento_Theme/js/responsive.min.js
95+
Magento_Theme/js/theme.min.js
96+
jquery/jquery.validate.min.js
97+
js/responsive.min.js
98+
js/theme.min.js
99+
mage/translate.min.js
100+
Magefan_LazyLoad/js/jquery.unveil.min.js
101+
requirejs/domReady.min.js
102+
jquery/jquery.cookie.min.js
103+
Plumrocket_SocialLoginFree/js/pslogin.min.js
104+
Smartwave_Megamenu/js/sw_megamenu.min.js
105+
mage/tooltip.min.js
106+
Magento_Catalog/product/view/validation.min.js
107+
Amasty_Cart/js/amcart.min.js
108+
mage/mage.min.js
109+
Magento_Catalog/js/catalog-add-to-cart.min.js
110+
Magento_Catalog/js/price-box.min.js
111+
owl.carousel/owl.carousel.min.js
112+
mage/template.min.js
113+
Magento_Ui/js/modal/confirm.min.js
114+
mage/common.min.js
115+
jquery/jquery-migrate.min.js
116+
jquery/jquery.storageapi.min.js
117+
jquery/jquery-ui.min.js
118+
Magento_Catalog/js/price-utils.min.js
119+
underscore.min.js
120+
mage/apply/main.min.js
121+
Magento_Ui/js/lib/knockout/bootstrap.min.js
122+
mage/tabs.min.js
123+
matchMedia.min.js
124+
mage/smart-keyboard-handler.min.js
125+
mage/ie-class-fixer.min.js
126+
js/jquery.stellar.min.js
127+
knockoutjs/knockout.min.js
128+
knockoutjs/knockout-es5.min.js
129+
mage/collapsible.min.js
130+
mage/apply/scripts.min.js
131+
Magento_Ui/js/lib/knockout/template/engine.min.js
132+
Magento_Ui/js/lib/knockout/bindings/bootstrap.min.js
133+
Magento_Ui/js/lib/knockout/extender/observable_array.min.js
134+
Magento_Ui/js/lib/knockout/extender/bound-nodes.min.js
135+
knockoutjs/knockout-repeat.min.js
136+
knockoutjs/knockout-fast-foreach.min.js
137+
mage/utils/wrapper.min.js
138+
Magento_Ui/js/lib/core/events.min.js
139+
es6-collections.min.js
140+
Magento_Ui/js/lib/knockout/template/renderer.min.js
141+
Magento_Ui/js/lib/knockout/bindings/resizable.min.js
142+
Magento_Ui/js/lib/knockout/bindings/i18n.min.js
143+
Magento_Ui/js/lib/knockout/bindings/scope.min.js
144+
Magento_Ui/js/lib/knockout/bindings/range.min.js
145+
Magento_Ui/js/lib/knockout/bindings/mage-init.min.js
146+
Magento_Ui/js/lib/knockout/bindings/keyboard.min.js
147+
Magento_Ui/js/lib/knockout/bindings/optgroup.min.js
148+
Magento_Ui/js/lib/knockout/bindings/after-render.min.js
149+
Magento_Ui/js/lib/knockout/bindings/autoselect.min.js
150+
Magento_Ui/js/lib/knockout/bindings/datepicker.min.js
151+
Magento_Ui/js/lib/knockout/bindings/outer_click.min.js
152+
Magento_Ui/js/lib/knockout/bindings/fadeVisible.min.js
153+
Magento_Ui/js/lib/knockout/bindings/collapsible.min.js
154+
Magento_Ui/js/lib/knockout/bindings/staticChecked.min.js
155+
Magento_Ui/js/lib/knockout/bindings/simple-checked.min.js
156+
Magento_Ui/js/lib/knockout/bindings/bind-html.min.js
157+
Magento_Ui/js/lib/knockout/bindings/tooltip.min.js
158+
Magento_Ui/js/lib/knockout/template/observable_source.min.js
159+
Magento_Ui/js/lib/logger/console-logger.min.js
160+
Magento_Ui/js/lib/view/utils/async.min.js
161+
Magento_Ui/js/lib/registry/registry.min.js
162+
mage/utils/main.min.js
163+
Magento_Ui/js/lib/knockout/template/loader.min.js
164+
mage/calendar.min.js
165+
moment.min.js
166+
mage/validation/validation.min.js
167+
Magento_Ui/js/lib/core/storage/local.min.js
168+
Magento_Ui/js/lib/logger/logger.min.js
169+
Magento_Ui/js/lib/logger/entry-factory.min.js
170+
Magento_Ui/js/lib/logger/console-output-handler.min.js
171+
Magento_Ui/js/lib/logger/formatter.min.js
172+
Magento_Ui/js/lib/logger/message-pool.min.js
173+
Magento_Ui/js/lib/logger/levels-pool.min.js
174+
Magento_Ui/js/lib/logger/logger-utils.min.js
175+
Magento_Ui/js/lib/view/utils/dom-observer.min.js
176+
Magento_Ui/js/lib/view/utils/bindings.min.js
177+
jquery/jquery-ui-timepicker-addon.min.js
178+
mage/validation.min.js
179+
Magento_Ui/js/lib/logger/entry.min.js
180+
Magento_Ui/js/modal/modal.min.js
181+
mage/requirejs/text.min.js
182+
Magento_Ui/js/lib/core/class.min.js
183+
mage/utils/template.min.js
184+
mage/utils/compare.min.js
185+
mage/utils/misc.min.js
186+
mage/utils/objects.min.js
187+
mage/utils/strings.min.js
188+
Magento_Ui/js/lib/key-codes.min.js
189+
jquery.min.js
190+
mage/requirejs/static.min.js
191+
mage/requirejs/mixins.min.js
192+
requirejs-config.min.js
193+
fancybox/js/jquery.fancybox.min.js
194+
Magento_Catalog/js/jquery.zoom.min.js
195+
Magento_ProductVideo/js/load-player.min.js
196+
Magento_Catalog/js/product/storage/ids-storage.min.js
197+
Mirasvit_SearchAutocomplete/js/navigation.min.js</included_in_bundling>
198+
</general>
199+
</mfrocketjavascript>
200+
</default>
201+
</config>

etc/di.xml

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0"?>
2+
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
3+
<type name="Magento\Deploy\Package\Bundle\RequireJs">
4+
<plugin name="magefan_rocketjavascript_plugin_deploy_package_bundle_requirejs"
5+
type="Magefan\RocketJavaScript\Plugin\Deploy\Package\Bundle\RequireJsPlugin" sortOrder="10" />
6+
</type>
7+
</config>

0 commit comments

Comments
 (0)