我可以 npm 运行 watch 和 php artisan serve 吗?

Can I npm run watch with php artisan serve?

我可以在同一个 npm 脚本中 运行 npm watch 和 php artisan serve 吗?我尝试了以下方法:npm watch 和 browser-sync 都有效,但是 php artisan serve 没有被触发。

package.json

"scripts": {
    "dev": "npm run development",
    "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch": "npm run development -- --watch && npm run artisan",
    "watch-poll": "npm run watch -- --watch-poll",
    "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
    "prod": "npm run production",
    "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "artisan": "php artisan serve"
},

webpack.mix.js

mix.browserSync('http://localhost:8000/');

有几种方法可以 运行 多进程。在您的情况下,可以在 package.json:

中添加类似的内容
{
    ...
    "scripts": {
        ...
        "serve": "php artisan serve --host=domain.test --port=8080 & npm run watch"
    },
    ...
}

但我宁愿在您的本地计算机上使用 apache 或 nginx 来 运行 您的 php 应用程序。 Laravel 有两个用于在本地计算机上开发 php 应用程序的精美软件包:

Valet https://laravel.com/docs/7.x/valet

Homestead https://laravel.com/docs/7.x/homestead

当您使用其中之一时,您不再需要 运行 php artisan serve

这样您也不必混淆 artisan 和 npm scripts/commands。当 运行 在同一个 window 中同时使用这两个命令时,它将同时输出您的 php 服务器和 webpack 输出。那只是伤害;) package.json包含javascript配置,artisan基于php。在 package.json.

中放置 php 命令感觉有点奇怪

如果您是通过 Windows cmd 使用和控制 cli,而不是通过 IDE,您可以执行以下操作:

"scripts": {
    ...
    "run": "start npm run serve && start npm run watch"
    "serve": "php artisan serve"
},

...或者您可以在 IDE 中有一个 运行,在 windows 中有另一个 运行 cmd:

"scripts": {
    ...
    "run": "npm run serve && start npm run watch"
    "serve": "php artisan serve"
},