mirror of
https://github.com/flarum/core.git
synced 2025-07-24 02:01:19 +02:00
Webpack (#1367)
* Replace gulp with webpack and npm scripts for JS compilation * Set up Travis CI to commit compiled JS * Restructure `js` directory; only one instance of npm, forum/admin are "submodules" * Refactor JS initializers into Application subclasses * Maintain partial compatibility API (importing from absolute paths) for extensions * Remove minification responsibility from PHP asset compiler * Restructure `less` directory
This commit is contained in:
@@ -107,8 +107,8 @@ abstract class AbstractFrontend
|
||||
$root = __DIR__.'/../..';
|
||||
$name = $this->getName();
|
||||
|
||||
$view->getJs()->addFile("$root/js/$name/dist/app.js");
|
||||
$view->getCss()->addFile("$root/less/$name/app.less");
|
||||
$view->getJs()->addFile("$root/js/dist/$name.js");
|
||||
$view->getCss()->addFile("$root/less/$name.less");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -11,11 +11,7 @@
|
||||
|
||||
namespace Flarum\Frontend\Asset;
|
||||
|
||||
use Exception;
|
||||
use Illuminate\Cache\Repository;
|
||||
use MatthiasMullie\Minify;
|
||||
use s9e\TextFormatter\Configurator;
|
||||
use s9e\TextFormatter\Configurator\JavaScript\Minifiers\FirstAvailable;
|
||||
|
||||
class JsCompiler extends RevisionCompiler
|
||||
{
|
||||
@@ -42,14 +38,6 @@ class JsCompiler extends RevisionCompiler
|
||||
*/
|
||||
protected function format($string)
|
||||
{
|
||||
if (! $this->watch) {
|
||||
$key = 'js.'.sha1($string);
|
||||
|
||||
$string = $this->cache->rememberForever($key, function () use ($string) {
|
||||
return $this->minify($string);
|
||||
});
|
||||
}
|
||||
|
||||
return $string.";\n";
|
||||
}
|
||||
|
||||
@@ -60,59 +48,4 @@ class JsCompiler extends RevisionCompiler
|
||||
{
|
||||
return $this->watch;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $source
|
||||
* @return string
|
||||
*/
|
||||
protected function minify($source)
|
||||
{
|
||||
set_time_limit(60);
|
||||
|
||||
try {
|
||||
$source = $this->minifyWithClosureCompilerService($source);
|
||||
} catch (Exception $e) {
|
||||
$source = $this->minifyWithFallback($source);
|
||||
}
|
||||
|
||||
return $source;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $source
|
||||
* @return string
|
||||
*/
|
||||
protected function minifyWithClosureCompilerService($source)
|
||||
{
|
||||
// The minifier may need some classes bundled with the Configurator so we autoload it
|
||||
class_exists(Configurator::class);
|
||||
|
||||
$minifier = new FirstAvailable;
|
||||
|
||||
$remoteCache = $minifier->add('RemoteCache');
|
||||
$remoteCache->url = 'http://s9e-textformatter.rhcloud.com/flarum-minifier/';
|
||||
|
||||
$hostedMinifer = $minifier->add('HostedMinifier');
|
||||
$hostedMinifer->url = 'http://s9e-textformatter.rhcloud.com/flarum-minifier/';
|
||||
$hostedMinifer->httpClient->timeout = 30;
|
||||
|
||||
$ccs = $minifier->add('ClosureCompilerService');
|
||||
$ccs->compilationLevel = 'SIMPLE_OPTIMIZATIONS';
|
||||
$ccs->httpClient->timeout = 30;
|
||||
|
||||
$minifier->add('MatthiasMullieMinify');
|
||||
|
||||
return $minifier->minify($source);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $source
|
||||
* @return string
|
||||
*/
|
||||
protected function minifyWithFallback($source)
|
||||
{
|
||||
$minifier = new Minify\JS($source);
|
||||
|
||||
return $minifier->minify();
|
||||
}
|
||||
}
|
||||
|
@@ -22,23 +22,12 @@ class LocaleJsCompiler extends JsCompiler
|
||||
|
||||
public function compile()
|
||||
{
|
||||
$output = "
|
||||
System.register('locale', [], function(_export) {
|
||||
return {
|
||||
execute: function() {
|
||||
_export('default', function(app) {
|
||||
app.translator.translations = ".json_encode($this->translations).";\n";
|
||||
$output = 'flarum.core.app.translator.translations='.json_encode($this->translations).";\n";
|
||||
|
||||
foreach ($this->files as $filename) {
|
||||
$output .= file_get_contents($filename);
|
||||
}
|
||||
|
||||
$output .= '
|
||||
});
|
||||
}
|
||||
};
|
||||
});';
|
||||
|
||||
return $this->format($output);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user