1

Laravel 有以下内置npm run命令(其中包括):

npm run install
npm run watch

是否可以创建自定义npm run命令来运行自定义 PHP 脚本?例如,我想创建一个名为的命令,该命令npm run csv将运行一个将一堆 CSV 数据导入数据库的 PHP 脚本。

谢谢。


编辑:在提出问题并看到很多回复之后,很明显编写php artisan命令可能是更好的方法。因此,这就是我要做的。

谢谢大家的回复。至于我为什么不问这个问题,很简单:我不知道这是一个更好的方法。我对 Laravel 和学习仍然很陌生。谢谢。

4

4 回答 4

6

首先,您必须编写Artisan Console Command。然后你可以使用npm. 但这不是推荐的方式。您可以运行任何工匠命令,例如:

php artisan inspire

如果你想运行它,只需在's 脚本npm中添加这个命令。package.json例如:

{
   "scripts": {
       "inspire": "php artisan inspire"
   }
}

然后像这样运行命令:

npm run inspire
于 2018-09-27T10:29:15.037 回答
3

创建自己的工匠命令应该更干净。

https://laravel.com/docs/5.7/artisan#writing-commands

然后将您的 csv 导入代码放入 handle() 方法中。

你只需要运行: php artisan import-csv 或类似的东西

于 2018-09-27T10:36:36.840 回答
2

我喜欢 Laravel 的这一面。根据您要实现的目标,我可以就自定义工匠命令提出建议吗?:)

https://laravel.com/docs/5.7/artisan

推荐阅读,它非常适合您正在寻找的内容:D

于 2018-09-27T10:37:11.540 回答
1

无需使用 NPM 调用 PHP!为什么不创建自己的可执行文件?

使用 Laravel,有一个命令系统,因此您可以制作自己的artisan命令。但如果你想要更简单的东西,你可以这样做:

例子。我在我的项目中创建了一个名为bin/do_stuff

#!/usr/bin/env php
<?php
      echo "Easy as that!\n";

然后使其可执行:

chmod +x bin/do_stuff

然后你可以运行它./bin/do_stuff!一点都不难!现在你也可以像这样传递参数:

./bin/do_stuff--option1=value1 --option2

有或没有值。为此,我们添加以下内容:

foreach ($argv as $arg)
{
    preg_match('/\-\-(\w*)\=?(.+)?/', $arg, $value);
    if ($value && isset($value[1]) && $value[1])
    {
       $options[$value[1]] = isset($value[2]) ? $value[2] : null;
    }
}

非常适合 cron 工作和后端工作。试试看!

于 2018-09-27T10:26:47.117 回答