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: {