LoginSignup
0
0

More than 5 years have passed since last update.

Laravel5.2 laravel-elixirで圧縮時、ライセンス表示を保持したい時のメモ!

Posted at

最初に

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 }})))

これにより、圧縮時、ライセンスの表示がされるようになる。

以上で終わり

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0