awjudd/assetprocessor

该软件包已被废弃,不再维护。没有建议的替代包。

在 Laravel 5 中管理和处理资源的一种快捷简便方式

1.4.0 2015-12-22 16:14 UTC

This package is auto-updated.

Last update: 2021-07-11 17:54:33 UTC


README

Build Status ProjectStatus

Laravel 5 中管理和处理资源的一种快捷简便方式

特性

  • 易于将资源添加到项目中(可以一次添加单个文件或文件夹中的所有文件)
  • 支持以下资源的预处理和生成
    • LESS(通过 leafo/lessphp)
    • SASS(通过 leafo/scssphp)
    • CoffeeScript(通过 coffeescript/coffeescript)
  • 支持资源最小化
    • CSS(通过 natxet/CssMin)
    • JavaScript(通过 werkint/jsmin)
  • 允许按类型进行资源捆绑
  • 环境感知,以便更容易进行调试
  • 资源在文件更改之前被缓存,然后在更改后自动更新
    • 用户每次构建都会得到一个唯一的 URL,因此您无需担心用户看到旧的缓存资源
  • 易于扩展,以添加您自己的处理器
  • 内置命令,帮助清理不再使用的文件

快速入门

composer.json 文件的 require 键中添加以下内容

"awjudd/assetprocessor": "1.3.*"

运行 Composer 更新命令

$ composer update

在您的 config/app.php 中,将 'Awjudd\AssetProcessor\AssetProcessorServiceProvider' 添加到 $providers 数组的末尾

'providers' => array(

    'Illuminate\Foundation\Providers\ArtisanServiceProvider',
    'Illuminate\Auth\AuthServiceProvider',
    ...
    'Awjudd\AssetProcessor\AssetProcessorServiceProvider',

),

还更新 config/app.php 中的 aliases 部分,以包含 'Awjudd\AssetProcessor\Facades\AssetProcessorFacade'

'aliases' => array(

    'App'             => 'Illuminate\Support\Facades\App',
    'Artisan'         => 'Illuminate\Support\Facades\Artisan',
    ...

    // To make this line, and your code even shorter, you could alias this to 'Asset' instead.
    'AssetProcessor'  => 'Awjudd\AssetProcessor\Facades\AssetProcessorFacade',
    
),

设置

发布配置

安装此插件的下一步是通过以下操作发布配置文件

$ php artisan vendor:publish

配置值

配置发布后,您可能需要更新其中的一些部分,以更好地适应您的应用程序设置。

assetprocessor.php 文件的 'cache' 部分,您可能想要调整 'singular' 值。默认设置为 true。这将使得在您处于生产环境时,所有添加到包中的资源(根据类型)将以单个文件的形式返回。这将有助于减少页面请求次数,从而帮助页面更快地渲染。然而,如果您想禁用此功能,可以将字段更改为 false

通常需要了解的其他配置值仅包括 'enabled' 部分中的值。

'enabled' => array(

    /**
     * What environments is this processing enabled in?  The environment name
     * here should match that from App::environment()
     * 
     * @var array
     */
    'environments' => array(
        'production'
    ),

    /**
     * Should we force the processor to process the files?
     * 
     * @var boolean
     */
    'force' => false,
),

'environments' 部分中设置的任何环境都将自动处理所有资源。其他环境将仅处理需要预处理的文件(即 LESS、SASS 和 CoffeeScript),以便执行。但是,如果您想的话,您可以将 'force' 值更改为 true 来强制处理所有文件。

添加CDN资源

需要使用存储在内容分发网络(CDN)上的文件?没问题!只需使用

AssetProcessor::cdn('name', 'http://full/url/to/cdn')

它将自动在相应资源部分的非常开始处发出。

添加本地资源

添加要使用的资源相当直接。你所需要做的就是调用以下

// Works with both files and directories
AssetProcessor::add('name', '/path/to/asset/file');

资源自动加载

如果你知道你需要在每个页面上自动加载的资源(即你的布局的核心资源),那么你可以使用配置文件中的新部分来加载它们。

/**
 * Any assets that should be auto-loaded.
 * 
 * @var array
 */
'autoload' => array(

    /**
     * Any CDN-type assets to auto-load
     * 
     * @var array
     */
    'cdn' => array(
    ),

    /**
     * Any local assets that will need processing.
     * 
     * @var array
     */
    'local' => array(
    ),
),

发出资源

这将自动添加并确定刚刚加载的文件的类型。一旦所有资源都加载到插件中,为了将它们(带有适当的标签)发出到浏览器,你需要调用以下操作(在你的视图中)

{!! AssetProcessor::styles() !!}
{!! AssetProcessor::scripts() !!}

资源组

如果你想将一组资源组合在一起,你可以在add方法中提供一个第三个参数。第三个参数是一个“属性”数组。为了使用资源组,你可以提供“group”。例如

AssetProcessor::add('name', '/path/to/asset/file', ['group' => 'foo']);

这将使提供的资源文件只在该资源组中可用。要检索资源,你需要执行以下操作(假设文件是一个CSS文件)

{!! AssetProcessor::styles('foo') !!}

文件缓存

** 默认情况下,所有生成的文件都存储在 app/storage/assets 文件夹中 **

一旦生成资源文件(最后一次),分配给该文件的文件名是文件实际内容的哈希值。这意味着如果内容发生变化,文件名也会发生变化。因此,这将自动强制浏览器读取新的资源而不是旧的文件(消除用户刷新缓存的必要)。

处理过程的每一步也会进行缓存,以帮助减少重新生成文件的开销。这意味着只有在实际资源文件发生变化时才会读取文件。

外部访问文件缓存

如果你通过控制器检索资源,会存在一些轻微的性能问题(这是由于Laravel需要启动造成的),因此现在Asset Processor可以将文件推送到网站根目录(假设你已为文件夹分配了正确的权限)。这意味着你的页面将加载得更快!

默认情况下,它写入到:public_path('assets/generated'),但是你可以通过配置文件的'cache'部分来修改它。

/**
 * The external path that is the final resting spot for the assets.
 * 
 * @var string
 */
'external' => public_path('assets/generated'),

文件预处理

为了支持手动预处理所需的资源文件,你现在可以使用以下命令

$ php artisan assetprocessor:process

它接受要处理的文件数组。要运行,使用以下命令

$ php artisan assetprocessor:process --file=/path/to/file1.css --file=/path/to/file2.css

这将完成任何必要的处理,然后将所有选定的文件组合成一个单一的文件(按资源类型)。

文件清理

随着资源的变化,生成的资源文件也会变化。因此,内置的清理命令将删除在过去一天内未被修改的任何资源(持续时间可以在配置变量中更改,也可以在--duration标志中提供)。

为了运行清理,您只需要运行以下命令

$ php artisan assetprocessor:cleanup

或者如果您想更改持续时间

$ php artisan assetprocessor:cleanup --duration=60

之前的命令将使其删除在过去一分钟内未被触及的所有资源。

当前处理器及其关联的文件扩展名

  • Coffeescript - coffee
  • JsMinifier - coffee, js
  • SCSS - scss
  • LESS - less
  • CSSMinifier - scss, less, css

许可

资源处理器是免费软件,根据MIT许可条款分发。

附加信息

如果有任何问题,请在此处报告

发行说明

1.0.0:

  • 初始发布

1.0.1:

  • 添加新的命令以允许对资源文件进行预处理(assetprocessor:process)
  • 错误修复
    • Windows支持 - 解决了在Windows上不会给出正确链接的问题
    • 文件缓存问题已解决

1.0.2:

  • 添加对资源组的支持 **请注意**:此版本在配置文件中添加了一个'attributes'数组。如果您使用的是旧版本,则需要重新发布配置文件。

1.0.3:

  • 添加内部资源文件的处理,以便在不对其执行任何其他处理时使其可用。

1.0.4:

  • 将数组更改为使用array()语法
  • 修复了引入资产包时引入的错误(如果没有提供任何内容,默认值会导致错误)

1.0.5:

  • 为资源添加了更好的缓存支持

1.0.6:

  • CDN支持 - 您现在可以使用AssetProcessor::cdn()函数来使用CDN而不是依赖实际的资源处理器来执行所有操作
  • 如果存在此部分并且您使用默认值调用AssetProcessor::scripts()AssetProcessor::styles()函数,则此部分将自动输出
  • 添加了一个配置值'file.error-on-missing-group',允许您在请求缺失的资源组时绕过错误消息
  • 资源自动加载 - 在配置文件中添加了一个新的部分,允许您指定任何CDN/本地资源以自动加载(清理您的BaseController)
  • 资源缓存 - 添加了使资源在您的实际应用程序之外可用的功能,这将允许您在没有启动Laravel的情况下使资源可用

1.1.0

  • Laravel 4.1支持

1.2.0

  • Laravel 5支持

1.3.0

  • 更多Laravel 5支持
  • 增加对资源组的更多灵活性,现在您可以一起分组常用的资源