diff --git a/.gitignore b/.gitignore
index 09ca72d0dd..c8f253883b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,10 +17,7 @@ temp
.idea
mailpoet.zip
tests/javascript/testBundles
-assets/css/*.css
-assets/css/*.json
-assets/js/*.js
-assets/js/*.json
+assets/dist
.vagrant
lang
.mp_svn
diff --git a/RoboFile.php b/RoboFile.php
index 962ae702db..2d9c25f4ca 100644
--- a/RoboFile.php
+++ b/RoboFile.php
@@ -81,6 +81,9 @@ class RoboFile extends \Robo\Tasks {
}
function compileJs($opts = ['env' => null]) {
+ if(!is_dir('assets/dist/js')) {
+ mkdir('assets/dist/js', 0777, true);
+ }
$env = ($opts['env']) ?
sprintf('./node_modules/cross-env/dist/bin/cross-env.js NODE_ENV="%s"', $opts['env']) :
null;
@@ -88,8 +91,11 @@ class RoboFile extends \Robo\Tasks {
}
function compileCss($opts = ['env' => null]) {
+ if(!is_dir('assets/dist/css')) {
+ mkdir('assets/dist/css', 0777, true);
+ }
// Clean up folder from previous files
- array_map('unlink', glob("assets/css/*.*"));
+ array_map('unlink', glob("assets/dist/css/*.*"));
$css_files = array(
'assets/css/src/admin.styl',
@@ -106,12 +112,12 @@ class RoboFile extends \Robo\Tasks {
'--include-css',
'-u nib',
join(' ', $css_files),
- '-o assets/css/'
+ '-o assets/dist/css/'
)));
// Create manifest file
$manifest = [];
- foreach(glob('assets/css/*.css') as $style) {
+ foreach(glob('assets/dist/css/*.css') as $style) {
// Hash and rename styles if production environment
if($opts['env'] === 'production') {
$hashed_style = sprintf(
@@ -125,7 +131,7 @@ class RoboFile extends \Robo\Tasks {
$manifest[basename($style)] = basename($style);
}
}
- file_put_contents('assets/css/manifest.json', json_encode($manifest, JSON_PRETTY_PRINT));
+ file_put_contents('assets/dist/css/manifest.json', json_encode($manifest, JSON_PRETTY_PRINT));
return $compilation_result;
}
diff --git a/lib/Config/Capabilities.php b/lib/Config/Capabilities.php
index 60a05732e4..54b3a7ef9f 100644
--- a/lib/Config/Capabilities.php
+++ b/lib/Config/Capabilities.php
@@ -56,7 +56,7 @@ class Capabilities {
function enqueueMembersStyles() {
wp_enqueue_style(
'mailpoet-admin-global',
- Env::$assets_url . '/css/' . $this->renderer->getCssAsset('admin-global.css')
+ Env::$assets_url . '/dist/css/' . $this->renderer->getCssAsset('admin-global.css')
);
}
diff --git a/lib/Config/Renderer.php b/lib/Config/Renderer.php
index f3285ae19e..a1dbbd314c 100644
--- a/lib/Config/Renderer.php
+++ b/lib/Config/Renderer.php
@@ -32,8 +32,8 @@ class Renderer {
)
);
- $this->assets_manifest_js = $this->getAssetManifest(Env::$assets_path . '/js/manifest.json');
- $this->assets_manifest_css = $this->getAssetManifest(Env::$assets_path . '/css/manifest.json');
+ $this->assets_manifest_js = $this->getAssetManifest(Env::$assets_path . '/dist/js/manifest.json');
+ $this->assets_manifest_css = $this->getAssetManifest(Env::$assets_path . '/dist/css/manifest.json');
$this->setupDebug();
$this->setupTranslations();
$this->setupFunctions();
diff --git a/lib/Form/Util/Export.php b/lib/Form/Util/Export.php
index eb3f4713f7..77923c819a 100644
--- a/lib/Form/Util/Export.php
+++ b/lib/Form/Util/Export.php
@@ -61,7 +61,7 @@ class Export {
// CSS
$output[] = '';
// jQuery
@@ -71,10 +71,10 @@ class Export {
// JS
$output[] = '';
$output[] = '';
// (JS) variables...
diff --git a/lib/Form/Widget.php b/lib/Form/Widget.php
index 8e3f5b47f6..864bdb76d2 100644
--- a/lib/Form/Widget.php
+++ b/lib/Form/Widget.php
@@ -93,12 +93,12 @@ class Widget extends \WP_Widget {
function setupDependencies() {
wp_enqueue_style(
'mailpoet_public',
- Env::$assets_url . '/css/' . $this->renderer->getCssAsset('public.css')
+ Env::$assets_url . '/dist/css/' . $this->renderer->getCssAsset('public.css')
);
wp_enqueue_script(
'mailpoet_vendor',
- Env::$assets_url . '/js/' . $this->renderer->getJsAsset('vendor.js'),
+ Env::$assets_url . '/dist/js/' . $this->renderer->getJsAsset('vendor.js'),
array(),
Env::$version,
true
@@ -106,7 +106,7 @@ class Widget extends \WP_Widget {
wp_enqueue_script(
'mailpoet_public',
- Env::$assets_url . '/js/' . $this->renderer->getJsAsset('public.js'),
+ Env::$assets_url . '/dist/js/' . $this->renderer->getJsAsset('public.js'),
array('jquery'),
Env::$version,
true
@@ -148,7 +148,7 @@ EOL;
function setupAdminWidgetPageDependencies() {
wp_enqueue_script(
'mailpoet_vendor',
- Env::$assets_url . '/js/' . $this->renderer->getJsAsset('vendor.js'),
+ Env::$assets_url . '/dist/js/' . $this->renderer->getJsAsset('vendor.js'),
array(),
Env::$version,
true
@@ -156,7 +156,7 @@ EOL;
wp_enqueue_script(
'mailpoet_admin',
- Env::$assets_url . '/js/' . $this->renderer->getJsAsset('mailpoet.js'),
+ Env::$assets_url . '/dist/js/' . $this->renderer->getJsAsset('mailpoet.js'),
array(),
Env::$version,
true
diff --git a/lib/Twig/Assets.php b/lib/Twig/Assets.php
index 512f2b15a7..7bbf42a8d4 100644
--- a/lib/Twig/Assets.php
+++ b/lib/Twig/Assets.php
@@ -43,7 +43,7 @@ class Assets extends \Twig_Extension {
foreach($stylesheets as $stylesheet) {
$output[] = sprintf(
- '',
+ '',
$this->_globals['assets_url'],
$this->getAssetFilename($this->_globals['assets_manifest_css'], $stylesheet)
);
@@ -58,9 +58,10 @@ class Assets extends \Twig_Extension {
foreach($scripts as $script) {
$output[] = sprintf(
- '',
+ '',
$this->_globals['assets_url'],
- $this->getAssetFilename($this->_globals['assets_manifest_js'], $script)
+ strpos($script, 'lib/') === 0 ? 'js' : 'dist/js',
+ $this->getAssetFileName($this->_globals['assets_manifest_js'], $script)
);
}
diff --git a/tests/integration/Config/RendererTest.php b/tests/integration/Config/RendererTest.php
index 55c353331c..772227787a 100644
--- a/tests/integration/Config/RendererTest.php
+++ b/tests/integration/Config/RendererTest.php
@@ -18,8 +18,8 @@ class RendererTest extends \MailPoetTest {
})
);
$renderer->__construct();
- expect($renderer->assets_manifest_js)->equals(Env::$assets_path . '/js/manifest.json');
- expect($renderer->assets_manifest_css)->equals(Env::$assets_path . '/css/manifest.json');
+ expect($renderer->assets_manifest_js)->equals(Env::$assets_path . '/dist/js/manifest.json');
+ expect($renderer->assets_manifest_css)->equals(Env::$assets_path . '/dist/css/manifest.json');
}
function testItGetsAssetManifest() {
diff --git a/tests/integration/Twig/AssetsTest.php b/tests/integration/Twig/AssetsTest.php
index 1a9f12f91c..58da73b792 100644
--- a/tests/integration/Twig/AssetsTest.php
+++ b/tests/integration/Twig/AssetsTest.php
@@ -32,17 +32,17 @@ class AssetsTest extends \MailPoetTest {
);
expect($assets_extension->generateJavascript('script1.js', 'script2.js'))->equals(
- ''
+ ''
. "\n"
- . ''
+ . ''
);
}
function testItGeneratesJavascriptTagsForAssetsWhenManifestFileDoesNotExist() {
- expect($this->assets_extension->generateJavascript('script1.js', 'script2.js'))->equals(
- ''
+ expect($this->assets_extension->generateJavascript('lib/script1.js', 'script2.js'))->equals(
+ ''
. "\n"
- . ''
+ . ''
);
}
@@ -61,17 +61,17 @@ class AssetsTest extends \MailPoetTest {
);
expect($assets_extension->generateStylesheet('style1.css', 'style2.css'))->equals(
- ''
+ ''
. "\n"
- . ''
+ . ''
);
}
function testItGeneratesStylesheetTagsWhenManifestFileDoesNotExist() {
expect($this->assets_extension->generateStylesheet('style1.css', 'style2.css'))->equals(
- ''
+ ''
. "\n"
- . ''
+ . ''
);
}
diff --git a/webpack.config.js b/webpack.config.js
index 946689e223..56cc9d13db 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -27,7 +27,7 @@ const baseConfig = {
],
},
output: {
- path: path.join(__dirname, 'assets/js'),
+ path: path.join(__dirname, 'assets/dist/js'),
filename: (PRODUCTION_ENV) ? '[name].[hash:8].js' : '[name].js',
chunkFilename: (PRODUCTION_ENV) ? '[name].[hash:8].chunk.js' : '[name].chunk.js',
jsonpFunction: 'mailpoetJsonp'
@@ -57,7 +57,7 @@ const baseConfig = {
},
plugins: [
new webpackCleanPlugin([
- './assets/js/*.*',
+ './assets/dist/js/*.*',
]),
],
module: {