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

Laravel Elixir - Execute cmd on watch update

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

这可以用 Elixir 完成吗?如果可以,有人能指出我正确的方向吗?

问候

如果有人在看,这很好用:

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

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

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 文件的更改并运行发布资产任务。我的设置为仅发布 "public" 标记的文件,还有一个快速说明,您需要为其中任何一个安装 gulp-shell 实用程序 (https://www.npmjs.com/package/gulp-shell)这些。