vhanla/laravel-vue-cli

Laravel Vue Cli 预设和集成

dev-master 2018-10-04 16:00 UTC

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 cliresources 目录内创建一个 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 cli 3+
  • webpack-manifest-plugin,但 preset 将添加它,所以只需更新它即可(如果更新了新版本)。
  • webpack-livereload-plugin,但 preset 也会添加它,所以只需更新它即可(如果更新了新版本)。

局限性

  • vue cli项目有一些限制,特别是有一个静态的甚至强制静态资源目录public,其内容会与生成的构建资源一起复制到默认的dist文件夹中,如您所见,这将迫使我们必须以某种方式修改该文件夹树结构才能与Laravel一起使用。但不用担心,vue.config.js文件已经配置好了,允许public目录作为output目录,并设置静态资源为resources/public,它也将包含yarn buildnpm run build将移动到/public目录的index.php文件。

  • Vue开发模式应仅与yarn servenpm 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 buildnpm run build上显示错误- Propery "rules" is wrong type (expected object but got '[{}]'),请从package.json中删除它。

待办事项

  • 改进对vue cli开发的处理,目前,production模式集成得更好。
  • 改进对vue cli插件的处理,因为一些插件仍在使用并覆盖修改后的public资产目录。
  • 改进默认的spa.blade.php模板