awjudd / assetprocessor
在 Laravel 5 中管理和处理资源的一种快捷简便方式
Requires
- php: >=5.4.0
- coffeescript/coffeescript: 1.3.1
- illuminate/support: ~5
- leafo/lessphp: 0.5.0
- leafo/scssphp: 0.3.0
- natxet/cssmin: 3.0.x
- werkint/jsmin: 1.0.0
README
在 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支持
- 增加对资源组的更多灵活性,现在您可以一起分组常用的资源