| Package Data | |
|---|---|
| Maintainer Username: | kinow-io |
| Maintainer Contact: | abed.halawi@vinelab.com (Abed Halawi) |
| Package Create Date: | 2017-08-29 |
| Package Last Update: | 2021-03-23 |
| Language: | PHP |
| License: | MIT |
| Last Refreshed: | 2025-10-26 15:01:24 |
| Package Statistics | |
|---|---|
| Total Downloads: | 1,474 |
| Monthly Downloads: | 0 |
| Daily Downloads: | 0 |
| Total Stars: | 3 |
| Total Watchers: | 0 |
| Total Forks: | 0 |
| Total Open Issues: | 0 |
The package provides the developer the ability to upload his assets (or any public file) to a CDN with a single artisan command. And then it allows him to switch between the local and the online version of the files.
master).v1.0.1 Last suport for L 4.2
Require kinow-io/assets-laravel-aws-manager in your project:
composer require kinow-io/assets-laravel-aws-manager:*
Since this is a Laravel package we need to register the service provider:
Add the service provider to config/app.php:
'providers' => array(
//...
Vinelab\Cdn\CdnServiceProvider::class,
),
Set the Credentials in the .env file.
Note: you must have an .env file at the project root, to hold your sensitive information.
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
Publish the package config file:
php artisan vendor:publish
You can find it at config/cdn.php
'default' => 'AwsS3',
'aws' => [
's3' => [
'version' => 'latest',
'region' => '',
'buckets' => [
'my-backup-bucket' => '*',
]
]
],
'buckets' => [
'my-default-bucket' => '*',
// 'js-bucket' => ['public/js'],
// 'css-bucket' => ['public/css'],
// ...
]
Specify directories, extensions, files and patterns to be uploaded.
'include' => [
'directories' => ['public/dist'],
'extensions' => ['.js', '.css', '.yxz'],
'patterns' => ['**/*.coffee'],
],
Specify what to be ignored.
'exclude' => [
'directories' => ['public/uploads'],
'files' => [''],
'extensions' => ['.TODO', '.txt'],
'patterns' => ['src/*', '.idea/*'],
'hidden' => true, // ignore hidden files
],
Set the CDN URL:
'url' => 'https://s3.amazonaws.com',
Set the HTTP parameters:
'http' => '['verify' => path-to-your-pem-certificate-file]',
To load your LOCAL assets for testing or during development, set the bypass option to true:
'bypass' => true,
'cloudfront' => [
'use' => false,
'cdn_url' => ''
],
'acl' => 'public-read',
'metadata' => [ ],
'expires' => gmdate("D, d M Y H:i:s T", strtotime("+5 years")),
'cache-control' => 'max-age=2628000',
You can always refer to the AWS S3 Documentation for more details: aws-sdk-php
Upload assets to CDN
php artisan cdn:push
Delete assets from CDN
php artisan cdn:empty
Use the facade Cdn to call the Cdn::asset() function.
Note: the asset works the same as the Laravel asset it start looking for assets in the public/ directory:
{{Cdn::asset('assets/js/main.js')}} // example result: https://js-bucket.s3.amazonaws.com/public/assets/js/main.js
{{Cdn::asset('assets/css/style.css')}} // example result: https://css-bucket.s3.amazonaws.com/public/assets/css/style.css
Note: the elixir works the same as the Laravel elixir it loads the manifest.json file from build folder and choose the correct file revision generated by gulp:
{{Cdn::elixir('assets/js/main.js')}} // example result: https://js-bucket.s3.amazonaws.com/public/build/assets/js/main-85cafe36ff.js
{{Cdn::elixir('assets/css/style.css')}} // example result: https://css-bucket.s3.amazonaws.com/public/build/assets/css/style-2d558139f2.css
To use a file from outside the public/ directory, anywhere in app/ use the Cdn::path() function:
{{Cdn::path('private/something/file.txt')}} // example result: https://css-bucket.s3.amazonaws.com/private/something/file.txt
To run the tests, run the following command from the project folder.
$ ./vendor/bin/phpunit
Please see CONTRIBUTING for details.
If you discover any security related issues, please email mahmoud@vinelab.com instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.