vhanla / laravel-vue-cli
Laravel Vue Cli 预设和集成
Requires
- illuminate/support: ^5.7
This package is auto-updated.
Last update: 2024-09-05 04:50:37 UTC
README
此包包含一个预设,将修改全新的 Laravel 5.7 安装。它允许您在 Laravel 中使用 Vue-cli。它还允许您将它们包含在 blade 视图中,任何由 vue-cli-service 生成的资产。
安装
使用 Composer
$ composer require vhanla/laravel-vue-cli
接下来,将服务提供者添加到您的 config/app.php 文件中的 providers 部分
Vhanla\VueCli\VuecliServiceProvider::class,
配置
要更改包配置,您需要发布配置文件
$ php artisan vendor:publish
这将在您的 config 目录中发布 vuecli.php 文件。
用法
-
首先使用
vue cli在resources目录内创建一个vue项目 (强烈建议不使用 git,例如vue create --no-git <app-name>) -
使用 Vue-Cli 创建
vue项目后,执行vuecli预设:php artisan preset vuecli并按照交互式设置进行操作。预设命令将在resources目录内检测到vue项目。然后它会要求您选择它。 -
Blade视图有两种调用资产的方法。-
开发方法:当我们在开发时,这种方法更好。
<script src="{{ vuecli('app.js') }}"></script>它允许始终读取生成的
assets.json文件内容,即使是从缓存视图中读取。仅推荐在本地开发模式下使用,尤其是在使用hashed文件名时。 -
缓存方法:这种方法更适合生产模式。
<script src="@vuecli(app.js)"></script>一旦
blade视图被缓存,返回的资产路径始终相同,直到blade模板文件被修改或执行php artisan view:clear。
换句话说,第一个将始终读取
public/assets.json文件以找到特定的asset文件,而后者在缓存之前只读取一次。更明确地说,第一个将包括<?php echo vuecli('app.js')...,而后者不会,而是将写入返回的路径。 -
功能
- 包含一个
vuecli命令预设,用于为vue cli配置全新的 Laravel 项目。 - 您可以使用
vue ui。然而,似乎运行那里的tasks会忽略vue.config.js文件。这可能是vue cli的一个错误。 - 包含一个
blade指令@vuecli(assetname, boolean),其中布尔值指示是否在资产未找到时忽略。 - 包含一个
helper函数vuecli('assetname', boolean),其中布尔值指示是否忽略未找到的资产。 - 包含一个
blade指令@livereload(host,port),仅在检测到本地(开发)时添加。
要求
- Laravel 5.7 - 可能也适用于之前的版本,但我还没有测试。
vue cli3+webpack-manifest-plugin,但preset将添加它,所以只需更新它即可(如果更新了新版本)。webpack-livereload-plugin,但preset也会添加它,所以只需更新它即可(如果更新了新版本)。
局限性
-
vue cli项目有一些限制,特别是有一个静态的甚至强制静态资源目录public,其内容会与生成的构建资源一起复制到默认的dist文件夹中,如您所见,这将迫使我们必须以某种方式修改该文件夹树结构才能与Laravel一起使用。但不用担心,vue.config.js文件已经配置好了,允许public目录作为output目录,并设置静态资源为resources/public,它也将包含yarn build或npm run build将移动到/public目录的index.php文件。 -
Vue开发模式应仅与
yarn serve或npm run serve一起使用,这是因为之前的问题,即开发模式下为vue生成的文件和更改不容易从PHP的Web服务器端访问。 -
HMR(热模块替换)不是通过Laravel的Web服务器提供的,而是通过
vue cli的。 -
一些针对
vue cli的插件需要确保将写入public目录的任何内容手动移动到resources/public目录。
已知问题
- 如果出现空白页面,请确保使用虚拟主机即本地测试域名,或更新
baseUrl,因为vue应用可能会找到不同的baseUrl,默认情况下期望为/而不是mylaravelapp/public。 - 如果关于
my asset name.js的异常错误,请确保它存在于/public/assets.json中。 - 如果在
yarn build或npm run build上显示错误- Propery "rules" is wrong type (expected object but got '[{}]'),请从package.json中删除它。
待办事项
- 改进对
vue cli开发的处理,目前,production模式集成得更好。 - 改进对
vue cli插件的处理,因为一些插件仍在使用并覆盖修改后的public资产目录。 - 改进默认的spa.blade.php模板