【问题标题】:Laravel Elixir - Execute cmd on watch updateLaravel Elixir - 在手表更新时执行 cmd
【发布时间】:2015-02-17 19:30:40
【问题描述】:

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

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

问候

【问题讨论】:

    标签: laravel-elixir


    【解决方案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)。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 你也可以删除"cd ../../../ ; gulp",然后在另一个终端运行 gulp watch
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      相关资源
      最近更新 更多