5

私はパッケージに取り組んでおり、本当に起動できる必要があります

php artisan asset:publish --bench="vendor/package"

開発中に自動的にコマンドを実行します。

パッケージ内の JavaScript または CSS ファイルに変更を加えるたびに、そのコマンドを記述するのは非常に時間がかかります。

サービス プロバイダーで Artisan に電話をかけようとしました

public function boot()
{       
    Artisan::call('asset:publish', array('--bench' => 'arni-gudjonsson/webber'));
    ...
}

私は得た

ErrorException: Runtime Notice: Non-static method Illuminate\Foundation\Artisan::call() should not be called statically, assuming $this from incompatible context

Artisan は Web 経由で呼び出されるように設計されていませんか? 誰かアドバイスはありますか?

4

7 に答える 7

4

Guardは、このようなタスクに使用できます。たとえば、以下は私の Guardfile の一部で、アセットが変更されるたびにパッケージからアセットを自動的に公開します。

guard :shell do
    watch(%r{^workbench/vendor/package/public/.+\..+$}) {
        `php artisan asset:publish --bench="vendor/package"`
    }
end

Sass を自動的にコンパイルしたり、livereload をセットアップしたりすることもできます。開始するには、 Jeffrey Way のスクリーンキャストをご覧ください。

于 2013-04-30T19:35:10.540 に答える
3

Grunt をシェルの watch コマンドで使用すると、これを実現できます。

$ npm install grunt-shell

vendor/yourname/yourpackage/Gruntfile.js 内:

    shell: {                           
        assets: {                      
            options: {                 
                stdout: true
            },
            command: 'cd ../../..; php artisan asset:publish yourname/yourpackage'
        },
        views: {                      
            options: {                
                stdout: true
            },
            command: 'cd ../../..; php artisan view:publish yourname/yourpackage;'
        }
    },
    watch: {
        assets: {
            files: ['./public/**/*.js', './public/**/*.css'],
            tasks: ['shell:assets']
        },
        views: {
            files: ['./src/views/**/*.php', './src/views/**/*.md'],
            tasks: ['shell:views']                          
        }
    }

...

grunt.loadNpmTasks('grunt-shell');
grunt.loadNpmTasks('grunt-contrib-watch');

grunt.registerTask('default', ['watch']);

次に、ウォッチを開始します。

$ grunt watch

これは、less や uglify などの他の面倒なコマンドがアセットをパブリックにコンパイルした後、自然に機能し、アセットを変更してパブリッシュをトリガーします。

于 2014-04-06T12:28:47.730 に答える
0

ところで、5.1 の正しい方法:

\Artisan::call('vendor:publish', [ '--tag' => ['public'], '--provider' => 'Some\Your\ServiceProvider', '--force' => true ]);

于 2015-11-06T17:48:47.133 に答える
-1

のcssおよびjsファイルを直接編集してみてください

{app_root}/public/bundles/{bundle}/{css|js}

ディレクトリに移動し、完了したら、変更したファイルをバンドルのパブリック ディレクトリにコピーして戻します。これはおそらく間違った方法ですが、うまくいきます。別のオプションは、タスクを作成して実行することです

Command::run(array('タスク名'));

公式ドキュメントにはいくつかの例があります。

于 2013-04-04T13:05:02.693 に答える