最初に
Laravel5.2の、laravel-elixirでjavascriptを圧縮した時、ライセンス表示削除されてしまうことが分かった。
もっとスマートで簡潔な方法があるとお思うが、力業で表示する方法をメモ代わりに書く。
よし、改造だ
gulpfile.js
var elixir = require('laravel-elixir');
/*
|--------------------------------------------------------------------------
| Elixir Asset Management
|--------------------------------------------------------------------------
|
| Elixir provides a clean, fluent API for defining some basic Gulp tasks
| for your Laravel application. By default, we are compiling the Sass
| file for our application, as well as publishing vendor resources.
|
*/
elixir(function(mix) {
mix.sass('app.scss');
});
上記gulpfile.jsが初期の状態。
gulpfile.js
var elixir = require('laravel-elixir');
elixir(function(mix) {
mix.script([
"jquery.js",
"bootstrap.js",
]);
});
仮に、上記のように書いて、下記コマンドを実行すると、
gulp --production
綺麗に、ライセンスコメント部まで消されてしまう。
gulpfile.js(改)
var elixir = require('laravel-elixir');
// ▼▼▼ 追加開始
var gulp = require("gulp");
var $ = elixir.Plugins;
var config = elixir.config;
var gulpTaskEx = function(paths, babel) {
this.log(paths.src, paths.output);
return (
gulp
.src(paths.src.path)
.pipe($.if(config.sourcemaps, $.sourcemaps.init()))
.pipe($.concat(paths.output.name))
.pipe($.if(babel, $.babel(babel)))
.on('error', function(e) {
new Elixir.Notification().error(e, 'Babel Compilation Failed!!');
this.emit('end');
})
.pipe($.if(config.production, $.uglify({ preserveComments: 'some', compress: { drop_console: true }})))
.pipe($.if(config.sourcemaps, $.sourcemaps.write('.')))
.pipe(gulp.dest(paths.output.baseDir))
.pipe(new elixir.Notification('Scripts Merged!!'))
);
};
elixir.extend('scriptsEx', function(scripts, output, baseDir) {
var paths = new elixir.GulpPaths()
.src(scripts, baseDir || config.get('assets.js.folder'))
.output(output || config.get('public.js.outputFolder'), 'all.js');
new elixir.Task('scriptsEx', function() {
return gulpTaskEx.call(this, paths);
})
.watch(paths.src.path)
.ignore(paths.output.path);
});
// ▲▲▲ 追加終了
elixir(function(mix) {
// mix.script から mix.scriptExへ変更
mix.scriptEx([
"jquery.js",
"bootstrap.js",
]);
});
それで、力業で改造したのが、上記gulpfile.js(改)がそれにあたる。
laravel-elixir内にある、scripts.jsのscriptsの内容をそのままコピーしただけで、
laravel-elixir/scripts.js
.pipe($.if(config.production, $.uglify({ compress: { drop_console: true }})))
を改造したのと、”script"から"scriptEx"メソッドに変えて追加したただけ。
gulpfile.js(改)のgulpTaskEx内より
.pipe($.if(config.production, $.uglify({ preserveComments: 'some', compress: { drop_console: true }})))
これにより、圧縮時、ライセンスの表示がされるようになる。
以上で終わり