dnunez24/craft-laravel-mix

使用 Laravel Mix 在 CraftCMS 中管理资源构建

安装次数: 2,489

依赖者: 0

建议者: 0

安全性: 0

星标: 5

关注者: 2

分支: 0

开放问题: 0

类型:craft-plugin

v0.1.0 2017-06-26 13:44 UTC

This package is not auto-updated.

Last update: 2024-09-29 03:47:17 UTC


README

A CraftCMS 插件,允许使用 Laravel Mix 来管理资源构建。

要求

  • PHP 7+
  • Node.js 6+
  • CraftCMS 2.5+

安装

手动

下载并安装此插件到您的 CRAFT_PLUGINS_PATH。将目录重命名为 mix 以与插件处理程序相对应。例如,如果您的 CRAFT_PLUGINS_PATHcraft/plugins,您可以从项目的根目录运行以下命令

cd craft/plugins
curl -Lo mix.zip https://api.github.com/repos/dnunez24/craft-laravel-mix/zipball
unzip mix.zip

然后从 CraftCMS 管理面板安装插件。

Composer

如果您使用 Composer 管理依赖项,您可以通过从您的 composer.json 文件中要求它来安装此插件。此插件的 composer 包类型为 craft-plugin,因此 Composer 可以将其直接安装到您的 Craft 插件目录。然而,在安装依赖项之前,您必须添加一个额外的配置选项来重命名插件的目标目录。例如,如果您的 CRAFT_PLUGINS_PATHcraft/plugins,那么您将需要在您的 composer.json 中添加以下配置

...
    "extra": {
        "installer-paths": {
            "craft/plugins/mix/": [
                "dnunez24/craft-laravel-mix"
            ]
        }
    }
...

有关配置安装期间包的目标的更多信息,请参阅 Composer Installers

然后只需在 composer.json 文件中添加包并将其安装

composer require dnunez24/craft-laravel-mix

创建一个包含以下内容的 package.json 文件,以安装 Laravel Mix 依赖项并配置资源构建任务。

{
    "private": "true",
    "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": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
      "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 --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
    },
    "devDependencies": {
        "cross-env": "^5.0.0",
        "laravel-mix": "^1.0.0"
    }
}

使用 npmyarn 安装 Node.js 依赖项。

npm install # OR yarn install

配置

为了演示插件的使用,让我们设想一个具有以下目录结构的项目。

...
src/
  assets/
    js/
      main.js
    css/
      main.scss
public/
  js/
  css/
...

在项目的根目录中创建一个 webpack.mix.js 文件来配置 Laravel Mix 以构建您的资源。有关配置细节和更多选项,请参阅 Laravel Mix 文档。务必配置 publicPath 选项以指向您将从中提供静态资源(图像、字体、javascript 和 CSS)的目录。以下是一个示例配置,作为起点,它将适用于之前描述的项目结构

const { mix } = require('laravel-mix');

// this must be the relative path from the webpack.mix.js
// file to your public web directory
mix.setPublicPath('public')
  // outputs built SCSS files to the public/css directory
  .sass('src/assets/css/main.scss', 'public/css')
  // outputs built JS files to the public/js directory
  .js('src/assets/js/main.js', 'public/js');

if (mix.inProduction()) {
  mix.version();
}

此插件还提供 CraftCMS 配置值来设置它使用的公共目录,以便定位和读取 Mix 清单文件。如果您的方法与默认值(CRAFT_BASE_PATH/public)不同,则可能需要覆盖此设置。您可以通过在 CRAFT_CONFIG_PATH/mix.php 中创建一个包含以下内容的文件来完成此操作

<?php

return [
    // set "build" to the name of your public web directory
    'publicDir' => 'build'
];

使用方法

此插件的主要目的是提供模板辅助程序,它们在构建后的资源已知路径和实际路径之间进行转换(这取决于构建模式)。您可以从 CraftCMS 中的 Twig 模板以三种主要方式使用 Mix

{# Twig Filter #}
<script type="text/javascript" src="{{ 'js/main.js' | mix }}"></script>

{# Twig Function #}
<script type="text/javascript" src="{{ mix('js/main.js') }}"></script>

{# CraftCMS Variable #}
<script type="text/javascript" src="{{ craft.mix.getAssetPath('js/main.js') }}"></script>

Mix 有几种不同的运行模式,插件在每个模式下的工作方式不同,如下文所述。

开发模式

开发模式将构建您的资源以针对开发环境。根据您如何配置 Mix,这可能会绕过仅针对生产环境设计的某些构建指令。在示例 webpack.mix.js 文件中,我们仅在生产模式下对资源进行版本控制,用于缓存失效或类似用途。您可以通过在 package.json 文件中添加的 npm 脚本来构建开发模式的资源

npm run dev

这将在我们的示例项目结构中生成以下文件

public/
  mix.js
  mix-manifest.json
  css/
    main.css
  js/
    main.js

然后您可以在模板中使用此插件的 Twig 辅助函数来从 mix-manifest.json 文件加载资源

<link rel="stylesheet" href="{{ mix('css/app.css') }}">
...
<script type="text/javascript" src="{{ mix('js/main.js') }}"></script>

输出

<link rel="stylesheet" href="/css/main.css">
...
<script type="text/javascript" src="/js/main.js"></script>

监控模式

功能与开发模式类似,但 Mix 将作为 NodeJS 的前台进程继续运行,并在检测到源文件更改时构建资源。

npm run watch

热模块替换模式

构建您的资源并运行 Webpack 开发服务器,以允许 热模块替换。它与 Laravel Mix 文档中描述的类似。要运行 HMR 模式,请运行以下命令

npm run hot

然后您可以在模板中使用此插件的 Twig 辅助函数来从 Webpack 开发服务器(运行在 //:8080)加载资源

<link rel="stylesheet" href="{{ mix('css/main.css') }}">
...
<script type="text/javascript" src="{{ mix('js/main.js') }}"></script>

输出

<link rel="stylesheet" href="//:8080/css/main.css">
...
<script type="text/javascript" src="//:8080/js/main.js"></script>

生产模式

或为生产打包资源

npm run production

这将在我们的示例项目结构中生成以下文件

public/
  mix-manifest.json
  css/
    main.css
  js/
    main.js

然后您可以在模板中使用此插件的 Twig 辅助函数来从 mix-manifest.json 文件加载资源

<link rel="stylesheet" href="{{ mix('css/main.css') }}">
...
<script type="text/javascript" src="{{ mix('js/main.js') }}"></script>

输出

<link rel="stylesheet" href="/css/main.css?id=3b3bff1760a5005737de">
...
<script type="text/javascript" src="/js/main.js?id=5f474c7493fb1b375dca"></script>

致谢

待办事项

许可证

Craft Laravel Mix 是开源软件,许可协议为 MIT 许可证