linkorb/jsmin-php
PHP port of Douglas Crockford’s JSMin for minifying JavaScript. Provides a simple API to strip comments and whitespace, shrinking scripts for faster delivery. Lightweight, dependency-free and easy to integrate into Laravel or any PHP build/deploy workflow.
mix.js()).jsmin-* packages.jsmin (JavaScript) evolves.laravel-mix + terser) or Node.js tools (e.g., uglify-js via Laravel Exec).terser instead).composer require linkorb/jsmin-php
// app/Providers/AppServiceProvider.php
public function register() {
$this->app->singleton('jsmin', function () {
return new \JsMin(\File::get(public_path('script.js')));
});
}
Use via dependency injection in controllers:
public function generateScript() {
$minified = app('jsmin')->minify($userScript);
return response()->json(['script' => $minified]);
}
// app/Http/Middleware/MinifyJs.php
public function handle($request, Closure $next) {
$response = $next($request);
if ($response->headers->get('Content-Type') === 'application/javascript') {
$response->setContent(\JsMin::minify($response->getContent()));
}
return $response;
}
uglify-js:
Artisan::execute('node -e "require(\'uglify-js\').minify(\'script.js\').write(\'public/script.min.js\')');
JsMin class).jsmin changes.var_dump(\JsMin::minify($js)) to debug failures.uglify-js) for critical paths.ab -n 1000 -c 100 http://app/api/script
| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Malformed JS input | 500 errors in production | Validate JS syntax before minification |
| High traffic overload | Slow responses, timeouts | Cache results + queue async processing |
| Package dependency break | Build failures | Vendor the package or fork it |
| PHP version incompatibility | Runtime errors | Pin PHP version in composer.json |
README section for the minification service/middleware.phpunit test case for minification:
public function testJsMinification() {
$minified = \JsMin::minify("console.log('test');");
$this->assertStringContainsString("console.log('test')", $minified);
}
How can I help you explore Laravel packages today?