Laravel Elixir - 在手表更新时执行cmd

时间:2015-02-17 19:30:41

标签: laravel-elixir

我正在尝试为包开发创建一个简单的工作流程,并希望有人能够朝着正确的方向努力。简而言之,一旦更新了css文件,我希望能够运行命令(php artisan vendor:publish --force)来自动发布文件。

这可以用Elixir完成,如果是这样,任何人都能指出我正确的方向吗?

问候

2 个答案:

答案 0 :(得分:1)

这对于让我走上正轨非常有用,但我发现了一个稍微简单的解决方案,我认为我会分享:

var elixir = require('laravel-elixir');
var gulp = require("gulp");
var shell = require("gulp-shell");

elixir(function(mix) {
    mix.task('publish_assets', ['resources/assets/**/*.scss', 'resources/assets/**/*.js']);
});

gulp.task('publish_assets', shell.task([
    "php ../../../../artisan vendor:publish --tag=public --force"
]));

它监视所有js和sass文件的更改并运行发布资产任务。我的目标只是发布公众"标记文件以及快速注释,您需要为其中任何一个安装gulp-shell实用程序(https://www.npmjs.com/package/gulp-shell)。

答案 1 :(得分:0)

如果有人在寻找,这很有效:

var gulp = require("gulp");
var shell = require("gulp-shell");
var elixir = require("laravel-elixir");

elixir.extend("publish", function() {
    var baseDir = this.assetsDir;
    gulp.task("publish_assets", function() {
        gulp.src("").pipe( shell( [
            "php ../../../artisan vendor:publish --force",
            "cd ../../../ ; gulp"
        ]));
    });
    this.registerWatcher("publish_assets", [
        baseDir + '**/*.scss',
        baseDir + '**/*.js'
    ]);
    return this.queueTask("publish_assets");
});