Merge pull request #1739 from mailpoet/move-assets-to-dist

Move generated assets to dist [MAILPOET-1687]
This commit is contained in:
M. Shull
2019-01-29 09:04:23 -05:00
committed by GitHub
10 changed files with 39 additions and 35 deletions

5
.gitignore vendored
View File

@@ -17,10 +17,7 @@ temp
.idea .idea
mailpoet.zip mailpoet.zip
tests/javascript/testBundles tests/javascript/testBundles
assets/css/*.css assets/dist
assets/css/*.json
assets/js/*.js
assets/js/*.json
.vagrant .vagrant
lang lang
.mp_svn .mp_svn

View File

@@ -81,6 +81,9 @@ class RoboFile extends \Robo\Tasks {
} }
function compileJs($opts = ['env' => null]) { function compileJs($opts = ['env' => null]) {
if(!is_dir('assets/dist/js')) {
mkdir('assets/dist/js', 0777, true);
}
$env = ($opts['env']) ? $env = ($opts['env']) ?
sprintf('./node_modules/cross-env/dist/bin/cross-env.js NODE_ENV="%s"', $opts['env']) : sprintf('./node_modules/cross-env/dist/bin/cross-env.js NODE_ENV="%s"', $opts['env']) :
null; null;
@@ -88,8 +91,11 @@ class RoboFile extends \Robo\Tasks {
} }
function compileCss($opts = ['env' => null]) { function compileCss($opts = ['env' => null]) {
if(!is_dir('assets/dist/css')) {
mkdir('assets/dist/css', 0777, true);
}
// Clean up folder from previous files // Clean up folder from previous files
array_map('unlink', glob("assets/css/*.*")); array_map('unlink', glob("assets/dist/css/*.*"));
$css_files = array( $css_files = array(
'assets/css/src/admin.styl', 'assets/css/src/admin.styl',
@@ -106,12 +112,12 @@ class RoboFile extends \Robo\Tasks {
'--include-css', '--include-css',
'-u nib', '-u nib',
join(' ', $css_files), join(' ', $css_files),
'-o assets/css/' '-o assets/dist/css/'
))); )));
// Create manifest file // Create manifest file
$manifest = []; $manifest = [];
foreach(glob('assets/css/*.css') as $style) { foreach(glob('assets/dist/css/*.css') as $style) {
// Hash and rename styles if production environment // Hash and rename styles if production environment
if($opts['env'] === 'production') { if($opts['env'] === 'production') {
$hashed_style = sprintf( $hashed_style = sprintf(
@@ -125,7 +131,7 @@ class RoboFile extends \Robo\Tasks {
$manifest[basename($style)] = basename($style); $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; return $compilation_result;
} }

View File

@@ -56,7 +56,7 @@ class Capabilities {
function enqueueMembersStyles() { function enqueueMembersStyles() {
wp_enqueue_style( wp_enqueue_style(
'mailpoet-admin-global', 'mailpoet-admin-global',
Env::$assets_url . '/css/' . $this->renderer->getCssAsset('admin-global.css') Env::$assets_url . '/dist/css/' . $this->renderer->getCssAsset('admin-global.css')
); );
} }

View File

@@ -32,8 +32,8 @@ class Renderer {
) )
); );
$this->assets_manifest_js = $this->getAssetManifest(Env::$assets_path . '/js/manifest.json'); $this->assets_manifest_js = $this->getAssetManifest(Env::$assets_path . '/dist/js/manifest.json');
$this->assets_manifest_css = $this->getAssetManifest(Env::$assets_path . '/css/manifest.json'); $this->assets_manifest_css = $this->getAssetManifest(Env::$assets_path . '/dist/css/manifest.json');
$this->setupDebug(); $this->setupDebug();
$this->setupTranslations(); $this->setupTranslations();
$this->setupFunctions(); $this->setupFunctions();

View File

@@ -61,7 +61,7 @@ class Export {
// CSS // CSS
$output[] = '<link rel="stylesheet" type="text/css" href="'. $output[] = '<link rel="stylesheet" type="text/css" href="'.
Env::$assets_url.'/css/public.css?mp_ver='.MAILPOET_VERSION. Env::$assets_url.'/dist/css/public.css?mp_ver='.MAILPOET_VERSION.
'" />'; '" />';
// jQuery // jQuery
@@ -71,10 +71,10 @@ class Export {
// JS // JS
$output[] = '<script type="text/javascript" src="'. $output[] = '<script type="text/javascript" src="'.
Env::$assets_url.'/js/vendor.js?mp_ver='.MAILPOET_VERSION. Env::$assets_url.'/dist/js/vendor.js?mp_ver='.MAILPOET_VERSION.
'"></script>'; '"></script>';
$output[] = '<script type="text/javascript" src="'. $output[] = '<script type="text/javascript" src="'.
Env::$assets_url.'/js/public.js?mp_ver='.MAILPOET_VERSION. Env::$assets_url.'/dist/js/public.js?mp_ver='.MAILPOET_VERSION.
'"></script>'; '"></script>';
// (JS) variables... // (JS) variables...

View File

@@ -93,12 +93,12 @@ class Widget extends \WP_Widget {
function setupDependencies() { function setupDependencies() {
wp_enqueue_style( wp_enqueue_style(
'mailpoet_public', 'mailpoet_public',
Env::$assets_url . '/css/' . $this->renderer->getCssAsset('public.css') Env::$assets_url . '/dist/css/' . $this->renderer->getCssAsset('public.css')
); );
wp_enqueue_script( wp_enqueue_script(
'mailpoet_vendor', 'mailpoet_vendor',
Env::$assets_url . '/js/' . $this->renderer->getJsAsset('vendor.js'), Env::$assets_url . '/dist/js/' . $this->renderer->getJsAsset('vendor.js'),
array(), array(),
Env::$version, Env::$version,
true true
@@ -106,7 +106,7 @@ class Widget extends \WP_Widget {
wp_enqueue_script( wp_enqueue_script(
'mailpoet_public', 'mailpoet_public',
Env::$assets_url . '/js/' . $this->renderer->getJsAsset('public.js'), Env::$assets_url . '/dist/js/' . $this->renderer->getJsAsset('public.js'),
array('jquery'), array('jquery'),
Env::$version, Env::$version,
true true
@@ -148,7 +148,7 @@ EOL;
function setupAdminWidgetPageDependencies() { function setupAdminWidgetPageDependencies() {
wp_enqueue_script( wp_enqueue_script(
'mailpoet_vendor', 'mailpoet_vendor',
Env::$assets_url . '/js/' . $this->renderer->getJsAsset('vendor.js'), Env::$assets_url . '/dist/js/' . $this->renderer->getJsAsset('vendor.js'),
array(), array(),
Env::$version, Env::$version,
true true
@@ -156,7 +156,7 @@ EOL;
wp_enqueue_script( wp_enqueue_script(
'mailpoet_admin', 'mailpoet_admin',
Env::$assets_url . '/js/' . $this->renderer->getJsAsset('mailpoet.js'), Env::$assets_url . '/dist/js/' . $this->renderer->getJsAsset('mailpoet.js'),
array(), array(),
Env::$version, Env::$version,
true true

View File

@@ -43,7 +43,7 @@ class Assets extends \Twig_Extension {
foreach($stylesheets as $stylesheet) { foreach($stylesheets as $stylesheet) {
$output[] = sprintf( $output[] = sprintf(
'<link rel="stylesheet" type="text/css" href="%s/css/%s" />', '<link rel="stylesheet" type="text/css" href="%s/dist/css/%s" />',
$this->_globals['assets_url'], $this->_globals['assets_url'],
$this->getAssetFilename($this->_globals['assets_manifest_css'], $stylesheet) $this->getAssetFilename($this->_globals['assets_manifest_css'], $stylesheet)
); );
@@ -58,9 +58,10 @@ class Assets extends \Twig_Extension {
foreach($scripts as $script) { foreach($scripts as $script) {
$output[] = sprintf( $output[] = sprintf(
'<script type="text/javascript" src="%s/js/%s"></script>', '<script type="text/javascript" src="%s/%s/%s"></script>',
$this->_globals['assets_url'], $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)
); );
} }

View File

@@ -18,8 +18,8 @@ class RendererTest extends \MailPoetTest {
}) })
); );
$renderer->__construct(); $renderer->__construct();
expect($renderer->assets_manifest_js)->equals(Env::$assets_path . '/js/manifest.json'); expect($renderer->assets_manifest_js)->equals(Env::$assets_path . '/dist/js/manifest.json');
expect($renderer->assets_manifest_css)->equals(Env::$assets_path . '/css/manifest.json'); expect($renderer->assets_manifest_css)->equals(Env::$assets_path . '/dist/css/manifest.json');
} }
function testItGetsAssetManifest() { function testItGetsAssetManifest() {

View File

@@ -32,17 +32,17 @@ class AssetsTest extends \MailPoetTest {
); );
expect($assets_extension->generateJavascript('script1.js', 'script2.js'))->equals( expect($assets_extension->generateJavascript('script1.js', 'script2.js'))->equals(
'<script type="text/javascript" src="' . $this->assets_url . '/js/script1.hash.js"></script>' '<script type="text/javascript" src="' . $this->assets_url . '/dist/js/script1.hash.js"></script>'
. "\n" . "\n"
. '<script type="text/javascript" src="' . $this->assets_url . '/js/script2.hash.js"></script>' . '<script type="text/javascript" src="' . $this->assets_url . '/dist/js/script2.hash.js"></script>'
); );
} }
function testItGeneratesJavascriptTagsForAssetsWhenManifestFileDoesNotExist() { function testItGeneratesJavascriptTagsForAssetsWhenManifestFileDoesNotExist() {
expect($this->assets_extension->generateJavascript('script1.js', 'script2.js'))->equals( expect($this->assets_extension->generateJavascript('lib/script1.js', 'script2.js'))->equals(
'<script type="text/javascript" src="' . $this->assets_url . '/js/script1.js"></script>' '<script type="text/javascript" src="' . $this->assets_url . '/js/lib/script1.js"></script>'
. "\n" . "\n"
. '<script type="text/javascript" src="' . $this->assets_url . '/js/script2.js"></script>' . '<script type="text/javascript" src="' . $this->assets_url . '/dist/js/script2.js"></script>'
); );
} }
@@ -61,17 +61,17 @@ class AssetsTest extends \MailPoetTest {
); );
expect($assets_extension->generateStylesheet('style1.css', 'style2.css'))->equals( expect($assets_extension->generateStylesheet('style1.css', 'style2.css'))->equals(
'<link rel="stylesheet" type="text/css" href="' . $this->assets_url . '/css/style1.hash.css" />' '<link rel="stylesheet" type="text/css" href="' . $this->assets_url . '/dist/css/style1.hash.css" />'
. "\n" . "\n"
. '<link rel="stylesheet" type="text/css" href="' . $this->assets_url . '/css/style2.hash.css" />' . '<link rel="stylesheet" type="text/css" href="' . $this->assets_url . '/dist/css/style2.hash.css" />'
); );
} }
function testItGeneratesStylesheetTagsWhenManifestFileDoesNotExist() { function testItGeneratesStylesheetTagsWhenManifestFileDoesNotExist() {
expect($this->assets_extension->generateStylesheet('style1.css', 'style2.css'))->equals( expect($this->assets_extension->generateStylesheet('style1.css', 'style2.css'))->equals(
'<link rel="stylesheet" type="text/css" href="' . $this->assets_url . '/css/style1.css" />' '<link rel="stylesheet" type="text/css" href="' . $this->assets_url . '/dist/css/style1.css" />'
. "\n" . "\n"
. '<link rel="stylesheet" type="text/css" href="' . $this->assets_url . '/css/style2.css" />' . '<link rel="stylesheet" type="text/css" href="' . $this->assets_url . '/dist/css/style2.css" />'
); );
} }

View File

@@ -27,7 +27,7 @@ const baseConfig = {
], ],
}, },
output: { output: {
path: path.join(__dirname, 'assets/js'), path: path.join(__dirname, 'assets/dist/js'),
filename: (PRODUCTION_ENV) ? '[name].[hash:8].js' : '[name].js', filename: (PRODUCTION_ENV) ? '[name].[hash:8].js' : '[name].js',
chunkFilename: (PRODUCTION_ENV) ? '[name].[hash:8].chunk.js' : '[name].chunk.js', chunkFilename: (PRODUCTION_ENV) ? '[name].[hash:8].chunk.js' : '[name].chunk.js',
jsonpFunction: 'mailpoetJsonp' jsonpFunction: 'mailpoetJsonp'
@@ -57,7 +57,7 @@ const baseConfig = {
}, },
plugins: [ plugins: [
new webpackCleanPlugin([ new webpackCleanPlugin([
'./assets/js/*.*', './assets/dist/js/*.*',
]), ]),
], ],
module: { module: {