├── .gitignore
├── .travis.yml
├── LICENSE.txt
├── README.md
├── ci_script
├── composer.json
├── composer.lock
├── phpunit.xml
├── provides.json
├── src
├── Efficiently
│ └── Larasset
│ │ ├── Asset.php
│ │ ├── Commands
│ │ ├── AssetsCommand.php
│ │ ├── BaseCommand.php
│ │ ├── CleanAssetsCommand.php
│ │ ├── PrecompileAssetsCommand.php
│ │ ├── ServeAssetsCommand.php
│ │ ├── ServerCommand.php
│ │ └── SetupAssetsCommand.php
│ │ ├── Facades
│ │ ├── Asset.php
│ │ └── Manifest.php
│ │ ├── LarassetServiceProvider.php
│ │ ├── Manifest.php
│ │ └── helpers.php
└── config
│ └── config.php
├── structure
├── provider
│ └── assets
│ │ ├── css
│ │ └── .gitkeep
│ │ ├── images
│ │ └── .gitkeep
│ │ └── js
│ │ └── .gitkeep
├── public
│ └── assets
│ │ └── .gitkeep
└── resources
│ └── assets
│ ├── css
│ └── app.css
│ ├── images
│ └── .gitkeep
│ └── js
│ └── app.js
└── tests
└── .gitkeep
/.gitignore:
--------------------------------------------------------------------------------
1 | /vendor
2 | .DS_Store
3 |
4 | # Ignore all logfiles and tempfiles.
5 | /log/*.log
6 | /tmp
7 |
8 | /node_modules
9 | /nbproject
10 | /*.sublime-*
11 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: php
2 |
3 | php:
4 | - 5.6
5 | - 7.0
6 |
7 | matrix:
8 | allow_failures:
9 | - php: 7.0
10 |
11 | install: travis_retry composer install --prefer-source --no-interaction
12 |
13 | before_script:
14 | - export DISPLAY=:99.0
15 | - sh -e /etc/init.d/xvfb start
16 | - wget http://selenium-release.storage.googleapis.com/2.53/selenium-server-standalone-2.53.1.jar
17 | - java -jar selenium-server-standalone-2.53.1.jar -port 4444 &
18 | - chmod +x ./ci_script
19 |
20 | script: ./ci_script
21 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Tortue Torche
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 | the Software, and to permit persons to whom the Software is furnished to do so,
10 | subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Larasset
2 | ========
3 |
4 | [](https://travis-ci.org/efficiently/larasset)
5 |
6 | The Asset Pipeline for **Laravel 5.1, 5.2 & 5.3** !
7 |
8 | The asset pipeline provides a framework to concatenate and minify or compress
9 | JavaScript and CSS assets. It also adds the ability to write these assets in
10 | other languages and pre-processors such as CoffeeScript, LESS, Sass and EJS.
11 |
12 | For [Laravel 4.1 or 4.2](http://laravel.com/docs/4.2) supports see [Larasset 0.9 branch](https://github.com/efficiently/larasset/tree/0.9)
13 |
14 | For [Laravel 5.0](http://laravel.com/docs/5.0) supports see [Larasset 1.0 branch](https://github.com/efficiently/larasset/tree/1.0)
15 |
16 | For a more complete description of this package, you can read the Wiki docs:
17 | * The [Asset Pipeline](https://github.com/efficiently/larasset/wiki/Asset-pipeline) Guide
18 | * [Working with Ajax/JavaScript in Laravel](https://github.com/efficiently/larasset/wiki/Working-with-JavaScript-and-Larasset) Guide
19 |
20 | Examples of Larasset usage.
21 |
22 | - `php artisan larasset:precompile`: Precompile assets of your application, useful for your production environment
23 | - `php artisan larasset:serve`: Launch Larasset's server for serving assets, useful for your development environment
24 | - `php artisan server`: Serve your Laravel application on the PHP development server and also the Larasset's server for serving assets
25 |
26 | Demo application
27 | ----------------
28 |
29 | You can see this package in action with this [**online demo**](http://larasset.herokuapp.com/messages).
30 | And you can grab the source code of this demo [here](https://github.com/efficiently/laravel_larasset_app/tree/bootstrap-l5.1).
31 |
32 | Prerequisites
33 | -------------
34 |
35 | You must [install Node.js](http://nodejs.org) on your computer (development environment only).
36 |
37 | This package is **only** compatible with **PHP >= 5.5** and **Laravel >= 5.1** framework.
38 |
39 | Installation
40 | ------------
41 |
42 | ### Install and config Larasset package
43 |
44 | 1. In the `composer.json`, replace the line `"minimum-stability": "stable"` by:
45 |
46 | ```javascript
47 | "minimum-stability": "dev"
48 | ```
49 |
50 | 2. Install Larasset package with composer:
51 |
52 | ```sh
53 | composer require efficiently/larasset:1.2.*
54 | ```
55 |
56 | 3. Turn on your application debug mode, create or edit the `config/app.php` file:
57 |
58 | ```php
59 | true,
63 | // Others config options....
64 | ];
65 | ```
66 |
67 | Note: It is strongly recommended that you turn off error detail in your production environment.
68 |
69 | 4. Add these services providers to `config/app.php`:
70 |
71 | ```php
72 | 'Collective\Html\HtmlServiceProvider',
73 | 'Efficiently\Larasset\LarassetServiceProvider',
74 | 'Efficiently\JqueryLaravel\JqueryLaravelServiceProvider',
75 | ```
76 |
77 | 5. Add these alias (facades) to your Laravel `config/app.php` file:
78 |
79 | ```php
80 | 'Form' => 'Collective\Html\FormFacade',
81 | 'HTML' => 'Collective\Html\HtmlFacade',
82 | 'Asset' => 'Efficiently\Larasset\Facades\Asset',
83 | ```
84 |
85 | 6. You can now add the this security Middleware to your `app/Http/Kernel.php` file:
86 |
87 | ```php
88 | 'Efficiently\JqueryLaravel\VerifyJavascriptResponse',
89 | ```
90 |
91 | 7. You will need install some [Node.js](http://nodejs.org/) modules in order to run these Larasset commands:
92 |
93 | ```sh
94 | npm install -g larasset-js
95 | ```
96 |
97 | 8. Finally run `php artisan larasset:setup`.
98 |
99 | The rest of the installation depends on whether the asset pipeline is being used.
100 |
101 | Assets middleware server
102 | ------------------------
103 |
104 | Run:
105 |
106 | php artisan larasset:serve
107 |
108 | NOTICE: You should use it **only** in a development/local environment
109 |
110 |
111 | Precompiling assets (Manifest usage)
112 | ------------------------------------
113 |
114 | Run:
115 |
116 | php artisan larasset:precompile
117 |
118 | NOTICE: You are encouraged to use it in a production environment,
119 | for more informations, **read the next section**.
120 |
121 |
122 | Development VS Production mode
123 | ------------------------------
124 |
125 | By default Larasset is running in _development_ mode. That means that it will
126 | recompile (server) any changed asset on demand. Also it's not compressing
127 | JavaScript and/or Stylesheets in development mode. To run Larraset's server and
128 | precompiler in production-ready mode, use `--assets-env production` command line
129 | option, like so:
130 |
131 | php artisan larasset:precompile --assets-env production
132 |
133 |
134 | Changelog
135 | ---------
136 | ### [1.3.x](https://github.com/efficiently/larasset/tree/1.3)
137 | * Laravel 5.3 support!
138 |
139 | ### [1.2.0](https://github.com/efficiently/larasset/tree/1.2.0)
140 | * Laravel 5.2 support!
141 |
142 | ### [1.1.0](https://github.com/efficiently/larasset/tree/1.1.0)
143 | * Laravel 5.1 support!
144 | * CoffeeScript compile now the JavaScript without the top-level function safety wrapper (non-bare mode) via [`larasset-js` 1.2.0](https://github.com/efficiently/larasset-js/tree/1.2.0)
145 | * [ECMAScript 2015](http://ecma-international.org/ecma-262/6.0) (ES6) support with [Babel](http://babeljs.io/) via [`larasset-js` 1.1.1](https://github.com/efficiently/larasset-js/tree/1.1.1)
146 | * Add the `humanize()` function helper to fix the `image_tag()` helper (fix [#15](https://github.com/efficiently/larasset/issues/15)).
147 | * Add a `larasset.port` config option.
148 | For handling correctly the `--larasset-port` option of the `php artisan server` command.
149 | Useful for your development environment when you run the assets server.
150 | The default port value is `3000`.
151 | You can change it in the `config/larasset.php` file of your Laravel application.
152 | * Replace the deprecated [`illuminate/html`](https://github.com/illuminate/html) package by the [`laravelcollective/html`](https://github.com/LaravelCollective/html) package.
153 | * **Upgrade Notes** (if you used previously this package with Laravel 4.x or 5.0):
154 | * You should replace in the `config/app.php` file of your Laravel application:
155 | 1. `'Illuminate\Html\HtmlServiceProvider',` by `'Collective\Html\HtmlServiceProvider',`
156 | 2. `'Form' => 'Illuminate\Html\FormFacade',` by `'Form' => 'Collective\Html\FormFacade',`
157 | 3. `'HTML' => 'Illuminate\Html\HtmlFacade',` by `'HTML' => 'Collective\Html\HtmlFacade',`
158 |
159 | ### [1.0.2](https://github.com/efficiently/larasset/tree/1.0.2)
160 | * Fix PHP 5.4 support.
161 |
162 | ### [1.0.1](https://github.com/efficiently/larasset/tree/1.0.1)
163 | * Backporting the `humanize()` function helper to fix the `image_tag()` helper (fix #15).
164 |
165 | ### [1.0.0](https://github.com/efficiently/larasset/tree/1.0.0)
166 | * Laravel 5.0 support!
167 |
168 | ### [0.9.8](https://github.com/efficiently/larasset/tree/0.9.8)
169 | * Backporting the `humanize()` function helper to fix the `image_tag()` helper (fix #15).
170 |
171 | ### [0.9.7](https://github.com/efficiently/larasset/tree/0.9.7)
172 | * Add an option to disable Source Mapping.
173 |
174 | ### [0.9.6](https://github.com/efficiently/larasset/tree/0.9.6)
175 | * **Breaking changes:**
176 | The `--environment` command line option is renamed to `--assets-env`. Because there was some conflicts with the Laravel command line option `--env`. And `larasset-environment` command line option is renamed to `--larasset-env`.
177 | See issue [#6](https://github.com/efficiently/larasset/issues/6) for more information.
178 |
179 | Credits
180 | -------
181 |
182 | * The original [Asset Pipeline](https://github.com/rails/sprockets-rails) (Sprockets) from the Ruby on Rails framework.
183 | * A Node.js port of the Asset Pipeline: [Mincer](https://github.com/nodeca/mincer)
184 | * A PHP port of the [Asset Pipeline](https://github.com/CodeSleeve/asset-pipeline)
185 |
186 |
187 | Acknowledgements
188 | ----------------
189 |
190 | Released under the MIT License.
191 |
192 | #### This is beta-quality software
193 | It works well according to our tests. The internal API may change and other features will be added.
194 | We are working to make Larasset production quality software.
195 |
--------------------------------------------------------------------------------
/ci_script:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | cd ..
4 | git clone https://github.com/efficiently/jquery-laravel.git --branch 2.2
5 | git clone https://github.com/efficiently/laravel_larasset_app.git --branch 1.3
6 |
7 | cd laravel_larasset_app
8 | composer self-update
9 | composer install --prefer-source --no-interaction
10 | rm vendor/efficiently/jquery-laravel -Rf
11 | rm vendor/efficiently/larasset -Rf
12 | cp -pR ../jquery-laravel vendor/efficiently
13 | cp -pR ../larasset vendor/efficiently
14 | npm install -g larasset-js
15 | chmod +x ./ci_script
16 | ./ci_script # Run acceptance tests of the Larasset demo
17 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "efficiently/larasset",
3 | "description": "Larasset is a library for Laravel 5 which manage assets in an easy way.",
4 | "keywords": [
5 | "assets",
6 | "sprockets",
7 | "mincer",
8 | "node",
9 | "asset-pipeline",
10 | "pipeline",
11 | "css",
12 | "javascript",
13 | "less",
14 | "sass",
15 | "scss",
16 | "coffeescript",
17 | "minify",
18 | "precompile",
19 | "sourcemaps",
20 | "source-map",
21 | "manifest",
22 | "versioning",
23 | "laravel",
24 | "laravel 5",
25 | "laravel 5.1",
26 | "laravel 5.2",
27 | "laravel 5.3",
28 | "laravel 5.4"
29 | ],
30 | "license": "MIT",
31 | "authors": [
32 | {
33 | "name": "Tortue Torche",
34 | "email": "tortuetorche@spam.me"
35 | }
36 | ],
37 | "require": {
38 | "php": ">=5.4.0",
39 | "laravelcollective/html": "~5.0.0||~5.1.0||~5.2.0||~5.3.0||~5.4.0",
40 | "efficiently/jquery-laravel": "~2.2.0"
41 | },
42 | "require-dev": {
43 | "illuminate/support": "~5.0",
44 | "illuminate/console": "~5.0"
45 | },
46 | "autoload": {
47 | "classmap": [
48 | ],
49 | "files": [
50 | "src/Efficiently/Larasset/helpers.php"
51 | ],
52 | "psr-0": {
53 | "Efficiently\\Larasset\\": "src/"
54 | }
55 | },
56 | "config": {
57 | "preferred-install": "dist"
58 | },
59 | "prefer-stable": true,
60 | "minimum-stability": "dev"
61 | }
62 |
--------------------------------------------------------------------------------
/composer.lock:
--------------------------------------------------------------------------------
1 | {
2 | "_readme": [
3 | "This file locks the dependencies of your project to a known state",
4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5 | "This file is @generated automatically"
6 | ],
7 | "hash": "edc85db675a9b69752886d6ed128f0c7",
8 | "content-hash": "83e33fb0c363ec6746dfa4831898fa97",
9 | "packages": [
10 | {
11 | "name": "doctrine/inflector",
12 | "version": "v1.1.0",
13 | "source": {
14 | "type": "git",
15 | "url": "https://github.com/doctrine/inflector.git",
16 | "reference": "90b2128806bfde671b6952ab8bea493942c1fdae"
17 | },
18 | "dist": {
19 | "type": "zip",
20 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae",
21 | "reference": "90b2128806bfde671b6952ab8bea493942c1fdae",
22 | "shasum": ""
23 | },
24 | "require": {
25 | "php": ">=5.3.2"
26 | },
27 | "require-dev": {
28 | "phpunit/phpunit": "4.*"
29 | },
30 | "type": "library",
31 | "extra": {
32 | "branch-alias": {
33 | "dev-master": "1.1.x-dev"
34 | }
35 | },
36 | "autoload": {
37 | "psr-0": {
38 | "Doctrine\\Common\\Inflector\\": "lib/"
39 | }
40 | },
41 | "notification-url": "https://packagist.org/downloads/",
42 | "license": [
43 | "MIT"
44 | ],
45 | "authors": [
46 | {
47 | "name": "Roman Borschel",
48 | "email": "roman@code-factory.org"
49 | },
50 | {
51 | "name": "Benjamin Eberlei",
52 | "email": "kontakt@beberlei.de"
53 | },
54 | {
55 | "name": "Guilherme Blanco",
56 | "email": "guilhermeblanco@gmail.com"
57 | },
58 | {
59 | "name": "Jonathan Wage",
60 | "email": "jonwage@gmail.com"
61 | },
62 | {
63 | "name": "Johannes Schmitt",
64 | "email": "schmittjoh@gmail.com"
65 | }
66 | ],
67 | "description": "Common String Manipulations with regard to casing and singular/plural rules.",
68 | "homepage": "http://www.doctrine-project.org",
69 | "keywords": [
70 | "inflection",
71 | "pluralize",
72 | "singularize",
73 | "string"
74 | ],
75 | "time": "2015-11-06 14:35:42"
76 | },
77 | {
78 | "name": "efficiently/jquery-laravel",
79 | "version": "2.2.x-dev",
80 | "source": {
81 | "type": "git",
82 | "url": "https://github.com/efficiently/jquery-laravel.git",
83 | "reference": "dd8bd6b6e577d8539671ce85047a6b94afee8d20"
84 | },
85 | "dist": {
86 | "type": "zip",
87 | "url": "https://api.github.com/repos/efficiently/jquery-laravel/zipball/dd8bd6b6e577d8539671ce85047a6b94afee8d20",
88 | "reference": "dd8bd6b6e577d8539671ce85047a6b94afee8d20",
89 | "shasum": ""
90 | },
91 | "require": {
92 | "illuminate/support": "~5.1.0||~5.2.0||~5.3.0",
93 | "laravelcollective/html": "~5.1.0||~5.2.0||~5.3.0",
94 | "php": ">=5.5.0"
95 | },
96 | "require-dev": {
97 | "anahkiasen/former": "~4.0.0",
98 | "mockery/mockery": "0.9.*",
99 | "orchestra/testbench": "~3.1.0||~3.2.0||~3.3.0",
100 | "phpunit/phpunit": "~4.5"
101 | },
102 | "type": "library",
103 | "autoload": {
104 | "files": [
105 | "src/Efficiently/JqueryLaravel/helpers.php"
106 | ],
107 | "psr-0": {
108 | "Efficiently\\JqueryLaravel\\": "src/"
109 | }
110 | },
111 | "notification-url": "https://packagist.org/downloads/",
112 | "license": [
113 | "MIT"
114 | ],
115 | "authors": [
116 | {
117 | "name": "Tortue Torche",
118 | "email": "tortuetorche@spam.me"
119 | }
120 | ],
121 | "description": "This package provides jQuery and the jQuery-ujs driver for your Laravel >= 5.1 application.",
122 | "keywords": [
123 | "Laravel 5.1",
124 | "Laravel 5.2",
125 | "ajax",
126 | "asset pipeline",
127 | "assets",
128 | "javascript",
129 | "jquery",
130 | "larasset",
131 | "laravel",
132 | "laravel 5.3",
133 | "pipeline",
134 | "ujs",
135 | "unobtrusive"
136 | ],
137 | "time": "2016-09-02 12:29:45"
138 | },
139 | {
140 | "name": "illuminate/container",
141 | "version": "v5.3.4",
142 | "source": {
143 | "type": "git",
144 | "url": "https://github.com/illuminate/container.git",
145 | "reference": "360f4900dbaa7e76ecfbb58e0ad4b244a90edfe3"
146 | },
147 | "dist": {
148 | "type": "zip",
149 | "url": "https://api.github.com/repos/illuminate/container/zipball/360f4900dbaa7e76ecfbb58e0ad4b244a90edfe3",
150 | "reference": "360f4900dbaa7e76ecfbb58e0ad4b244a90edfe3",
151 | "shasum": ""
152 | },
153 | "require": {
154 | "illuminate/contracts": "5.3.*",
155 | "php": ">=5.6.4"
156 | },
157 | "type": "library",
158 | "extra": {
159 | "branch-alias": {
160 | "dev-master": "5.3-dev"
161 | }
162 | },
163 | "autoload": {
164 | "psr-4": {
165 | "Illuminate\\Container\\": ""
166 | }
167 | },
168 | "notification-url": "https://packagist.org/downloads/",
169 | "license": [
170 | "MIT"
171 | ],
172 | "authors": [
173 | {
174 | "name": "Taylor Otwell",
175 | "email": "taylor@laravel.com"
176 | }
177 | ],
178 | "description": "The Illuminate Container package.",
179 | "homepage": "https://laravel.com",
180 | "time": "2016-08-05 14:48:10"
181 | },
182 | {
183 | "name": "illuminate/contracts",
184 | "version": "v5.3.4",
185 | "source": {
186 | "type": "git",
187 | "url": "https://github.com/illuminate/contracts.git",
188 | "reference": "f766fc0452d82d545b866a8ad5860b20ccd50763"
189 | },
190 | "dist": {
191 | "type": "zip",
192 | "url": "https://api.github.com/repos/illuminate/contracts/zipball/f766fc0452d82d545b866a8ad5860b20ccd50763",
193 | "reference": "f766fc0452d82d545b866a8ad5860b20ccd50763",
194 | "shasum": ""
195 | },
196 | "require": {
197 | "php": ">=5.6.4"
198 | },
199 | "type": "library",
200 | "extra": {
201 | "branch-alias": {
202 | "dev-master": "5.3-dev"
203 | }
204 | },
205 | "autoload": {
206 | "psr-4": {
207 | "Illuminate\\Contracts\\": ""
208 | }
209 | },
210 | "notification-url": "https://packagist.org/downloads/",
211 | "license": [
212 | "MIT"
213 | ],
214 | "authors": [
215 | {
216 | "name": "Taylor Otwell",
217 | "email": "taylor@laravel.com"
218 | }
219 | ],
220 | "description": "The Illuminate Contracts package.",
221 | "homepage": "https://laravel.com",
222 | "time": "2016-08-21 12:37:00"
223 | },
224 | {
225 | "name": "illuminate/events",
226 | "version": "v5.3.4",
227 | "source": {
228 | "type": "git",
229 | "url": "https://github.com/illuminate/events.git",
230 | "reference": "cb29124d4eaba8a60bad40e95e3d8b199d040d77"
231 | },
232 | "dist": {
233 | "type": "zip",
234 | "url": "https://api.github.com/repos/illuminate/events/zipball/cb29124d4eaba8a60bad40e95e3d8b199d040d77",
235 | "reference": "cb29124d4eaba8a60bad40e95e3d8b199d040d77",
236 | "shasum": ""
237 | },
238 | "require": {
239 | "illuminate/container": "5.3.*",
240 | "illuminate/contracts": "5.3.*",
241 | "illuminate/support": "5.3.*",
242 | "php": ">=5.6.4"
243 | },
244 | "type": "library",
245 | "extra": {
246 | "branch-alias": {
247 | "dev-master": "5.3-dev"
248 | }
249 | },
250 | "autoload": {
251 | "psr-4": {
252 | "Illuminate\\Events\\": ""
253 | }
254 | },
255 | "notification-url": "https://packagist.org/downloads/",
256 | "license": [
257 | "MIT"
258 | ],
259 | "authors": [
260 | {
261 | "name": "Taylor Otwell",
262 | "email": "taylor@laravel.com"
263 | }
264 | ],
265 | "description": "The Illuminate Events package.",
266 | "homepage": "https://laravel.com",
267 | "time": "2016-08-12 14:24:30"
268 | },
269 | {
270 | "name": "illuminate/filesystem",
271 | "version": "v5.3.4",
272 | "source": {
273 | "type": "git",
274 | "url": "https://github.com/illuminate/filesystem.git",
275 | "reference": "72da79358499a38b437ff4b0e42f909660555298"
276 | },
277 | "dist": {
278 | "type": "zip",
279 | "url": "https://api.github.com/repos/illuminate/filesystem/zipball/72da79358499a38b437ff4b0e42f909660555298",
280 | "reference": "72da79358499a38b437ff4b0e42f909660555298",
281 | "shasum": ""
282 | },
283 | "require": {
284 | "illuminate/contracts": "5.3.*",
285 | "illuminate/support": "5.3.*",
286 | "php": ">=5.6.4",
287 | "symfony/finder": "3.1.*"
288 | },
289 | "suggest": {
290 | "league/flysystem": "Required to use the Flysystem local and FTP drivers (~1.0).",
291 | "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).",
292 | "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0)."
293 | },
294 | "type": "library",
295 | "extra": {
296 | "branch-alias": {
297 | "dev-master": "5.3-dev"
298 | }
299 | },
300 | "autoload": {
301 | "psr-4": {
302 | "Illuminate\\Filesystem\\": ""
303 | }
304 | },
305 | "notification-url": "https://packagist.org/downloads/",
306 | "license": [
307 | "MIT"
308 | ],
309 | "authors": [
310 | {
311 | "name": "Taylor Otwell",
312 | "email": "taylor@laravel.com"
313 | }
314 | ],
315 | "description": "The Illuminate Filesystem package.",
316 | "homepage": "https://laravel.com",
317 | "time": "2016-08-22 03:02:14"
318 | },
319 | {
320 | "name": "illuminate/http",
321 | "version": "v5.3.4",
322 | "source": {
323 | "type": "git",
324 | "url": "https://github.com/illuminate/http.git",
325 | "reference": "333263fe8aa6db11187a256ea55c2e9e97f28c4b"
326 | },
327 | "dist": {
328 | "type": "zip",
329 | "url": "https://api.github.com/repos/illuminate/http/zipball/333263fe8aa6db11187a256ea55c2e9e97f28c4b",
330 | "reference": "333263fe8aa6db11187a256ea55c2e9e97f28c4b",
331 | "shasum": ""
332 | },
333 | "require": {
334 | "illuminate/session": "5.3.*",
335 | "illuminate/support": "5.3.*",
336 | "php": ">=5.6.4",
337 | "symfony/http-foundation": "3.1.*",
338 | "symfony/http-kernel": "3.1.*"
339 | },
340 | "type": "library",
341 | "extra": {
342 | "branch-alias": {
343 | "dev-master": "5.3-dev"
344 | }
345 | },
346 | "autoload": {
347 | "psr-4": {
348 | "Illuminate\\Http\\": ""
349 | }
350 | },
351 | "notification-url": "https://packagist.org/downloads/",
352 | "license": [
353 | "MIT"
354 | ],
355 | "authors": [
356 | {
357 | "name": "Taylor Otwell",
358 | "email": "taylor@laravel.com"
359 | }
360 | ],
361 | "description": "The Illuminate Http package.",
362 | "homepage": "https://laravel.com",
363 | "time": "2016-08-22 10:25:11"
364 | },
365 | {
366 | "name": "illuminate/pipeline",
367 | "version": "v5.3.4",
368 | "source": {
369 | "type": "git",
370 | "url": "https://github.com/illuminate/pipeline.git",
371 | "reference": "cd469572fad11243e7f4c5c02fca410657f0a457"
372 | },
373 | "dist": {
374 | "type": "zip",
375 | "url": "https://api.github.com/repos/illuminate/pipeline/zipball/cd469572fad11243e7f4c5c02fca410657f0a457",
376 | "reference": "cd469572fad11243e7f4c5c02fca410657f0a457",
377 | "shasum": ""
378 | },
379 | "require": {
380 | "illuminate/contracts": "5.3.*",
381 | "illuminate/support": "5.3.*",
382 | "php": ">=5.6.4"
383 | },
384 | "type": "library",
385 | "extra": {
386 | "branch-alias": {
387 | "dev-master": "5.3-dev"
388 | }
389 | },
390 | "autoload": {
391 | "psr-4": {
392 | "Illuminate\\Pipeline\\": ""
393 | }
394 | },
395 | "notification-url": "https://packagist.org/downloads/",
396 | "license": [
397 | "MIT"
398 | ],
399 | "authors": [
400 | {
401 | "name": "Taylor Otwell",
402 | "email": "taylor@laravel.com"
403 | }
404 | ],
405 | "description": "The Illuminate Pipeline package.",
406 | "homepage": "https://laravel.com",
407 | "time": "2016-08-07 17:26:10"
408 | },
409 | {
410 | "name": "illuminate/routing",
411 | "version": "v5.3.4",
412 | "source": {
413 | "type": "git",
414 | "url": "https://github.com/illuminate/routing.git",
415 | "reference": "3dafc280a93178c8290828218b450ec4906235b4"
416 | },
417 | "dist": {
418 | "type": "zip",
419 | "url": "https://api.github.com/repos/illuminate/routing/zipball/3dafc280a93178c8290828218b450ec4906235b4",
420 | "reference": "3dafc280a93178c8290828218b450ec4906235b4",
421 | "shasum": ""
422 | },
423 | "require": {
424 | "illuminate/container": "5.3.*",
425 | "illuminate/contracts": "5.3.*",
426 | "illuminate/http": "5.3.*",
427 | "illuminate/pipeline": "5.3.*",
428 | "illuminate/session": "5.3.*",
429 | "illuminate/support": "5.3.*",
430 | "php": ">=5.6.4",
431 | "symfony/debug": "3.1.*",
432 | "symfony/http-foundation": "3.1.*",
433 | "symfony/http-kernel": "3.1.*",
434 | "symfony/routing": "3.1.*"
435 | },
436 | "suggest": {
437 | "illuminate/console": "Required to use the make commands (5.3.*).",
438 | "symfony/psr-http-message-bridge": "Required to psr7 bridging features (0.2.*)."
439 | },
440 | "type": "library",
441 | "extra": {
442 | "branch-alias": {
443 | "dev-master": "5.3-dev"
444 | }
445 | },
446 | "autoload": {
447 | "psr-4": {
448 | "Illuminate\\Routing\\": ""
449 | }
450 | },
451 | "notification-url": "https://packagist.org/downloads/",
452 | "license": [
453 | "MIT"
454 | ],
455 | "authors": [
456 | {
457 | "name": "Taylor Otwell",
458 | "email": "taylor@laravel.com"
459 | }
460 | ],
461 | "description": "The Illuminate Routing package.",
462 | "homepage": "https://laravel.com",
463 | "time": "2016-08-26 21:12:19"
464 | },
465 | {
466 | "name": "illuminate/session",
467 | "version": "v5.3.4",
468 | "source": {
469 | "type": "git",
470 | "url": "https://github.com/illuminate/session.git",
471 | "reference": "0f818548aa248f64d89f8129229a4de84184f59e"
472 | },
473 | "dist": {
474 | "type": "zip",
475 | "url": "https://api.github.com/repos/illuminate/session/zipball/0f818548aa248f64d89f8129229a4de84184f59e",
476 | "reference": "0f818548aa248f64d89f8129229a4de84184f59e",
477 | "shasum": ""
478 | },
479 | "require": {
480 | "illuminate/contracts": "5.3.*",
481 | "illuminate/support": "5.3.*",
482 | "nesbot/carbon": "~1.20",
483 | "php": ">=5.6.4",
484 | "symfony/finder": "3.1.*",
485 | "symfony/http-foundation": "3.1.*"
486 | },
487 | "suggest": {
488 | "illuminate/console": "Required to use the session:table command (5.3.*)."
489 | },
490 | "type": "library",
491 | "extra": {
492 | "branch-alias": {
493 | "dev-master": "5.3-dev"
494 | }
495 | },
496 | "autoload": {
497 | "psr-4": {
498 | "Illuminate\\Session\\": ""
499 | }
500 | },
501 | "notification-url": "https://packagist.org/downloads/",
502 | "license": [
503 | "MIT"
504 | ],
505 | "authors": [
506 | {
507 | "name": "Taylor Otwell",
508 | "email": "taylor@laravel.com"
509 | }
510 | ],
511 | "description": "The Illuminate Session package.",
512 | "homepage": "https://laravel.com",
513 | "time": "2016-08-11 22:24:39"
514 | },
515 | {
516 | "name": "illuminate/support",
517 | "version": "v5.3.4",
518 | "source": {
519 | "type": "git",
520 | "url": "https://github.com/illuminate/support.git",
521 | "reference": "1b4f32dfa799dd8d0e0d11e0aaaf677e2829d6e8"
522 | },
523 | "dist": {
524 | "type": "zip",
525 | "url": "https://api.github.com/repos/illuminate/support/zipball/1b4f32dfa799dd8d0e0d11e0aaaf677e2829d6e8",
526 | "reference": "1b4f32dfa799dd8d0e0d11e0aaaf677e2829d6e8",
527 | "shasum": ""
528 | },
529 | "require": {
530 | "doctrine/inflector": "~1.0",
531 | "ext-mbstring": "*",
532 | "illuminate/contracts": "5.3.*",
533 | "paragonie/random_compat": "~1.4|~2.0",
534 | "php": ">=5.6.4"
535 | },
536 | "replace": {
537 | "tightenco/collect": "self.version"
538 | },
539 | "suggest": {
540 | "illuminate/filesystem": "Required to use the composer class (5.2.*).",
541 | "symfony/process": "Required to use the composer class (3.1.*).",
542 | "symfony/var-dumper": "Required to use the dd function (3.1.*)."
543 | },
544 | "type": "library",
545 | "extra": {
546 | "branch-alias": {
547 | "dev-master": "5.3-dev"
548 | }
549 | },
550 | "autoload": {
551 | "psr-4": {
552 | "Illuminate\\Support\\": ""
553 | },
554 | "files": [
555 | "helpers.php"
556 | ]
557 | },
558 | "notification-url": "https://packagist.org/downloads/",
559 | "license": [
560 | "MIT"
561 | ],
562 | "authors": [
563 | {
564 | "name": "Taylor Otwell",
565 | "email": "taylor@laravel.com"
566 | }
567 | ],
568 | "description": "The Illuminate Support package.",
569 | "homepage": "https://laravel.com",
570 | "time": "2016-08-26 17:26:49"
571 | },
572 | {
573 | "name": "illuminate/view",
574 | "version": "v5.3.4",
575 | "source": {
576 | "type": "git",
577 | "url": "https://github.com/illuminate/view.git",
578 | "reference": "cbafb75c07e93aff38eea6e917cc7e8ee1deeaa1"
579 | },
580 | "dist": {
581 | "type": "zip",
582 | "url": "https://api.github.com/repos/illuminate/view/zipball/cbafb75c07e93aff38eea6e917cc7e8ee1deeaa1",
583 | "reference": "cbafb75c07e93aff38eea6e917cc7e8ee1deeaa1",
584 | "shasum": ""
585 | },
586 | "require": {
587 | "illuminate/container": "5.3.*",
588 | "illuminate/contracts": "5.3.*",
589 | "illuminate/events": "5.3.*",
590 | "illuminate/filesystem": "5.3.*",
591 | "illuminate/support": "5.3.*",
592 | "php": ">=5.6.4",
593 | "symfony/debug": "3.1.*"
594 | },
595 | "type": "library",
596 | "extra": {
597 | "branch-alias": {
598 | "dev-master": "5.3-dev"
599 | }
600 | },
601 | "autoload": {
602 | "psr-4": {
603 | "Illuminate\\View\\": ""
604 | }
605 | },
606 | "notification-url": "https://packagist.org/downloads/",
607 | "license": [
608 | "MIT"
609 | ],
610 | "authors": [
611 | {
612 | "name": "Taylor Otwell",
613 | "email": "taylor@laravel.com"
614 | }
615 | ],
616 | "description": "The Illuminate View package.",
617 | "homepage": "https://laravel.com",
618 | "time": "2016-08-24 08:31:50"
619 | },
620 | {
621 | "name": "laravelcollective/html",
622 | "version": "v5.3.0",
623 | "source": {
624 | "type": "git",
625 | "url": "https://github.com/LaravelCollective/html.git",
626 | "reference": "961ce141c16c6b085128f209496c26efd3e681ca"
627 | },
628 | "dist": {
629 | "type": "zip",
630 | "url": "https://api.github.com/repos/LaravelCollective/html/zipball/961ce141c16c6b085128f209496c26efd3e681ca",
631 | "reference": "961ce141c16c6b085128f209496c26efd3e681ca",
632 | "shasum": ""
633 | },
634 | "require": {
635 | "illuminate/http": "5.3.*",
636 | "illuminate/routing": "5.3.*",
637 | "illuminate/session": "5.3.*",
638 | "illuminate/support": "5.3.*",
639 | "illuminate/view": "5.3.*",
640 | "php": ">=5.6.4"
641 | },
642 | "require-dev": {
643 | "illuminate/database": "5.3.*",
644 | "mockery/mockery": "~0.9.4",
645 | "phpunit/phpunit": "~5.4"
646 | },
647 | "type": "library",
648 | "autoload": {
649 | "psr-4": {
650 | "Collective\\Html\\": "src/"
651 | },
652 | "files": [
653 | "src/helpers.php"
654 | ]
655 | },
656 | "notification-url": "https://packagist.org/downloads/",
657 | "license": [
658 | "MIT"
659 | ],
660 | "authors": [
661 | {
662 | "name": "Taylor Otwell",
663 | "email": "taylorotwell@gmail.com"
664 | },
665 | {
666 | "name": "Adam Engebretson",
667 | "email": "adam@laravelcollective.com"
668 | }
669 | ],
670 | "description": "HTML and Form Builders for the Laravel Framework",
671 | "homepage": "http://laravelcollective.com",
672 | "time": "2016-08-27 23:52:43"
673 | },
674 | {
675 | "name": "nesbot/carbon",
676 | "version": "1.21.0",
677 | "source": {
678 | "type": "git",
679 | "url": "https://github.com/briannesbitt/Carbon.git",
680 | "reference": "7b08ec6f75791e130012f206e3f7b0e76e18e3d7"
681 | },
682 | "dist": {
683 | "type": "zip",
684 | "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7b08ec6f75791e130012f206e3f7b0e76e18e3d7",
685 | "reference": "7b08ec6f75791e130012f206e3f7b0e76e18e3d7",
686 | "shasum": ""
687 | },
688 | "require": {
689 | "php": ">=5.3.0",
690 | "symfony/translation": "~2.6|~3.0"
691 | },
692 | "require-dev": {
693 | "phpunit/phpunit": "~4.0|~5.0"
694 | },
695 | "type": "library",
696 | "autoload": {
697 | "psr-4": {
698 | "Carbon\\": "src/Carbon/"
699 | }
700 | },
701 | "notification-url": "https://packagist.org/downloads/",
702 | "license": [
703 | "MIT"
704 | ],
705 | "authors": [
706 | {
707 | "name": "Brian Nesbitt",
708 | "email": "brian@nesbot.com",
709 | "homepage": "http://nesbot.com"
710 | }
711 | ],
712 | "description": "A simple API extension for DateTime.",
713 | "homepage": "http://carbon.nesbot.com",
714 | "keywords": [
715 | "date",
716 | "datetime",
717 | "time"
718 | ],
719 | "time": "2015-11-04 20:07:17"
720 | },
721 | {
722 | "name": "paragonie/random_compat",
723 | "version": "v2.0.2",
724 | "source": {
725 | "type": "git",
726 | "url": "https://github.com/paragonie/random_compat.git",
727 | "reference": "088c04e2f261c33bed6ca5245491cfca69195ccf"
728 | },
729 | "dist": {
730 | "type": "zip",
731 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/088c04e2f261c33bed6ca5245491cfca69195ccf",
732 | "reference": "088c04e2f261c33bed6ca5245491cfca69195ccf",
733 | "shasum": ""
734 | },
735 | "require": {
736 | "php": ">=5.2.0"
737 | },
738 | "require-dev": {
739 | "phpunit/phpunit": "4.*|5.*"
740 | },
741 | "suggest": {
742 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
743 | },
744 | "type": "library",
745 | "autoload": {
746 | "files": [
747 | "lib/random.php"
748 | ]
749 | },
750 | "notification-url": "https://packagist.org/downloads/",
751 | "license": [
752 | "MIT"
753 | ],
754 | "authors": [
755 | {
756 | "name": "Paragon Initiative Enterprises",
757 | "email": "security@paragonie.com",
758 | "homepage": "https://paragonie.com"
759 | }
760 | ],
761 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
762 | "keywords": [
763 | "csprng",
764 | "pseudorandom",
765 | "random"
766 | ],
767 | "time": "2016-04-03 06:00:07"
768 | },
769 | {
770 | "name": "psr/log",
771 | "version": "1.0.0",
772 | "source": {
773 | "type": "git",
774 | "url": "https://github.com/php-fig/log.git",
775 | "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
776 | },
777 | "dist": {
778 | "type": "zip",
779 | "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
780 | "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
781 | "shasum": ""
782 | },
783 | "type": "library",
784 | "autoload": {
785 | "psr-0": {
786 | "Psr\\Log\\": ""
787 | }
788 | },
789 | "notification-url": "https://packagist.org/downloads/",
790 | "license": [
791 | "MIT"
792 | ],
793 | "authors": [
794 | {
795 | "name": "PHP-FIG",
796 | "homepage": "http://www.php-fig.org/"
797 | }
798 | ],
799 | "description": "Common interface for logging libraries",
800 | "keywords": [
801 | "log",
802 | "psr",
803 | "psr-3"
804 | ],
805 | "time": "2012-12-21 11:40:51"
806 | },
807 | {
808 | "name": "symfony/debug",
809 | "version": "v3.1.4",
810 | "source": {
811 | "type": "git",
812 | "url": "https://github.com/symfony/debug.git",
813 | "reference": "34f6ac18c2974ca5fce68adf419ee7d15def6f11"
814 | },
815 | "dist": {
816 | "type": "zip",
817 | "url": "https://api.github.com/repos/symfony/debug/zipball/34f6ac18c2974ca5fce68adf419ee7d15def6f11",
818 | "reference": "34f6ac18c2974ca5fce68adf419ee7d15def6f11",
819 | "shasum": ""
820 | },
821 | "require": {
822 | "php": ">=5.5.9",
823 | "psr/log": "~1.0"
824 | },
825 | "conflict": {
826 | "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
827 | },
828 | "require-dev": {
829 | "symfony/class-loader": "~2.8|~3.0",
830 | "symfony/http-kernel": "~2.8|~3.0"
831 | },
832 | "type": "library",
833 | "extra": {
834 | "branch-alias": {
835 | "dev-master": "3.1-dev"
836 | }
837 | },
838 | "autoload": {
839 | "psr-4": {
840 | "Symfony\\Component\\Debug\\": ""
841 | },
842 | "exclude-from-classmap": [
843 | "/Tests/"
844 | ]
845 | },
846 | "notification-url": "https://packagist.org/downloads/",
847 | "license": [
848 | "MIT"
849 | ],
850 | "authors": [
851 | {
852 | "name": "Fabien Potencier",
853 | "email": "fabien@symfony.com"
854 | },
855 | {
856 | "name": "Symfony Community",
857 | "homepage": "https://symfony.com/contributors"
858 | }
859 | ],
860 | "description": "Symfony Debug Component",
861 | "homepage": "https://symfony.com",
862 | "time": "2016-08-23 13:39:15"
863 | },
864 | {
865 | "name": "symfony/event-dispatcher",
866 | "version": "v3.1.4",
867 | "source": {
868 | "type": "git",
869 | "url": "https://github.com/symfony/event-dispatcher.git",
870 | "reference": "c0c00c80b3a69132c4e55c3e7db32b4a387615e5"
871 | },
872 | "dist": {
873 | "type": "zip",
874 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/c0c00c80b3a69132c4e55c3e7db32b4a387615e5",
875 | "reference": "c0c00c80b3a69132c4e55c3e7db32b4a387615e5",
876 | "shasum": ""
877 | },
878 | "require": {
879 | "php": ">=5.5.9"
880 | },
881 | "require-dev": {
882 | "psr/log": "~1.0",
883 | "symfony/config": "~2.8|~3.0",
884 | "symfony/dependency-injection": "~2.8|~3.0",
885 | "symfony/expression-language": "~2.8|~3.0",
886 | "symfony/stopwatch": "~2.8|~3.0"
887 | },
888 | "suggest": {
889 | "symfony/dependency-injection": "",
890 | "symfony/http-kernel": ""
891 | },
892 | "type": "library",
893 | "extra": {
894 | "branch-alias": {
895 | "dev-master": "3.1-dev"
896 | }
897 | },
898 | "autoload": {
899 | "psr-4": {
900 | "Symfony\\Component\\EventDispatcher\\": ""
901 | },
902 | "exclude-from-classmap": [
903 | "/Tests/"
904 | ]
905 | },
906 | "notification-url": "https://packagist.org/downloads/",
907 | "license": [
908 | "MIT"
909 | ],
910 | "authors": [
911 | {
912 | "name": "Fabien Potencier",
913 | "email": "fabien@symfony.com"
914 | },
915 | {
916 | "name": "Symfony Community",
917 | "homepage": "https://symfony.com/contributors"
918 | }
919 | ],
920 | "description": "Symfony EventDispatcher Component",
921 | "homepage": "https://symfony.com",
922 | "time": "2016-07-19 10:45:57"
923 | },
924 | {
925 | "name": "symfony/finder",
926 | "version": "v3.1.4",
927 | "source": {
928 | "type": "git",
929 | "url": "https://github.com/symfony/finder.git",
930 | "reference": "e568ef1784f447a0e54dcb6f6de30b9747b0f577"
931 | },
932 | "dist": {
933 | "type": "zip",
934 | "url": "https://api.github.com/repos/symfony/finder/zipball/e568ef1784f447a0e54dcb6f6de30b9747b0f577",
935 | "reference": "e568ef1784f447a0e54dcb6f6de30b9747b0f577",
936 | "shasum": ""
937 | },
938 | "require": {
939 | "php": ">=5.5.9"
940 | },
941 | "type": "library",
942 | "extra": {
943 | "branch-alias": {
944 | "dev-master": "3.1-dev"
945 | }
946 | },
947 | "autoload": {
948 | "psr-4": {
949 | "Symfony\\Component\\Finder\\": ""
950 | },
951 | "exclude-from-classmap": [
952 | "/Tests/"
953 | ]
954 | },
955 | "notification-url": "https://packagist.org/downloads/",
956 | "license": [
957 | "MIT"
958 | ],
959 | "authors": [
960 | {
961 | "name": "Fabien Potencier",
962 | "email": "fabien@symfony.com"
963 | },
964 | {
965 | "name": "Symfony Community",
966 | "homepage": "https://symfony.com/contributors"
967 | }
968 | ],
969 | "description": "Symfony Finder Component",
970 | "homepage": "https://symfony.com",
971 | "time": "2016-08-26 12:04:02"
972 | },
973 | {
974 | "name": "symfony/http-foundation",
975 | "version": "v3.1.4",
976 | "source": {
977 | "type": "git",
978 | "url": "https://github.com/symfony/http-foundation.git",
979 | "reference": "63592e00fd90632b57ee50220a1ddb29b6bf3bb4"
980 | },
981 | "dist": {
982 | "type": "zip",
983 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/63592e00fd90632b57ee50220a1ddb29b6bf3bb4",
984 | "reference": "63592e00fd90632b57ee50220a1ddb29b6bf3bb4",
985 | "shasum": ""
986 | },
987 | "require": {
988 | "php": ">=5.5.9",
989 | "symfony/polyfill-mbstring": "~1.1"
990 | },
991 | "require-dev": {
992 | "symfony/expression-language": "~2.8|~3.0"
993 | },
994 | "type": "library",
995 | "extra": {
996 | "branch-alias": {
997 | "dev-master": "3.1-dev"
998 | }
999 | },
1000 | "autoload": {
1001 | "psr-4": {
1002 | "Symfony\\Component\\HttpFoundation\\": ""
1003 | },
1004 | "exclude-from-classmap": [
1005 | "/Tests/"
1006 | ]
1007 | },
1008 | "notification-url": "https://packagist.org/downloads/",
1009 | "license": [
1010 | "MIT"
1011 | ],
1012 | "authors": [
1013 | {
1014 | "name": "Fabien Potencier",
1015 | "email": "fabien@symfony.com"
1016 | },
1017 | {
1018 | "name": "Symfony Community",
1019 | "homepage": "https://symfony.com/contributors"
1020 | }
1021 | ],
1022 | "description": "Symfony HttpFoundation Component",
1023 | "homepage": "https://symfony.com",
1024 | "time": "2016-08-22 12:11:19"
1025 | },
1026 | {
1027 | "name": "symfony/http-kernel",
1028 | "version": "v3.1.4",
1029 | "source": {
1030 | "type": "git",
1031 | "url": "https://github.com/symfony/http-kernel.git",
1032 | "reference": "aeda215d6b01f119508c090d2a09ebb5b0bc61f3"
1033 | },
1034 | "dist": {
1035 | "type": "zip",
1036 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/aeda215d6b01f119508c090d2a09ebb5b0bc61f3",
1037 | "reference": "aeda215d6b01f119508c090d2a09ebb5b0bc61f3",
1038 | "shasum": ""
1039 | },
1040 | "require": {
1041 | "php": ">=5.5.9",
1042 | "psr/log": "~1.0",
1043 | "symfony/debug": "~2.8|~3.0",
1044 | "symfony/event-dispatcher": "~2.8|~3.0",
1045 | "symfony/http-foundation": "~2.8.8|~3.0.8|~3.1.2|~3.2"
1046 | },
1047 | "conflict": {
1048 | "symfony/config": "<2.8"
1049 | },
1050 | "require-dev": {
1051 | "symfony/browser-kit": "~2.8|~3.0",
1052 | "symfony/class-loader": "~2.8|~3.0",
1053 | "symfony/config": "~2.8|~3.0",
1054 | "symfony/console": "~2.8|~3.0",
1055 | "symfony/css-selector": "~2.8|~3.0",
1056 | "symfony/dependency-injection": "~2.8|~3.0",
1057 | "symfony/dom-crawler": "~2.8|~3.0",
1058 | "symfony/expression-language": "~2.8|~3.0",
1059 | "symfony/finder": "~2.8|~3.0",
1060 | "symfony/process": "~2.8|~3.0",
1061 | "symfony/routing": "~2.8|~3.0",
1062 | "symfony/stopwatch": "~2.8|~3.0",
1063 | "symfony/templating": "~2.8|~3.0",
1064 | "symfony/translation": "~2.8|~3.0",
1065 | "symfony/var-dumper": "~2.8|~3.0"
1066 | },
1067 | "suggest": {
1068 | "symfony/browser-kit": "",
1069 | "symfony/class-loader": "",
1070 | "symfony/config": "",
1071 | "symfony/console": "",
1072 | "symfony/dependency-injection": "",
1073 | "symfony/finder": "",
1074 | "symfony/var-dumper": ""
1075 | },
1076 | "type": "library",
1077 | "extra": {
1078 | "branch-alias": {
1079 | "dev-master": "3.1-dev"
1080 | }
1081 | },
1082 | "autoload": {
1083 | "psr-4": {
1084 | "Symfony\\Component\\HttpKernel\\": ""
1085 | },
1086 | "exclude-from-classmap": [
1087 | "/Tests/"
1088 | ]
1089 | },
1090 | "notification-url": "https://packagist.org/downloads/",
1091 | "license": [
1092 | "MIT"
1093 | ],
1094 | "authors": [
1095 | {
1096 | "name": "Fabien Potencier",
1097 | "email": "fabien@symfony.com"
1098 | },
1099 | {
1100 | "name": "Symfony Community",
1101 | "homepage": "https://symfony.com/contributors"
1102 | }
1103 | ],
1104 | "description": "Symfony HttpKernel Component",
1105 | "homepage": "https://symfony.com",
1106 | "time": "2016-09-03 15:28:24"
1107 | },
1108 | {
1109 | "name": "symfony/polyfill-mbstring",
1110 | "version": "v1.2.0",
1111 | "source": {
1112 | "type": "git",
1113 | "url": "https://github.com/symfony/polyfill-mbstring.git",
1114 | "reference": "dff51f72b0706335131b00a7f49606168c582594"
1115 | },
1116 | "dist": {
1117 | "type": "zip",
1118 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/dff51f72b0706335131b00a7f49606168c582594",
1119 | "reference": "dff51f72b0706335131b00a7f49606168c582594",
1120 | "shasum": ""
1121 | },
1122 | "require": {
1123 | "php": ">=5.3.3"
1124 | },
1125 | "suggest": {
1126 | "ext-mbstring": "For best performance"
1127 | },
1128 | "type": "library",
1129 | "extra": {
1130 | "branch-alias": {
1131 | "dev-master": "1.2-dev"
1132 | }
1133 | },
1134 | "autoload": {
1135 | "psr-4": {
1136 | "Symfony\\Polyfill\\Mbstring\\": ""
1137 | },
1138 | "files": [
1139 | "bootstrap.php"
1140 | ]
1141 | },
1142 | "notification-url": "https://packagist.org/downloads/",
1143 | "license": [
1144 | "MIT"
1145 | ],
1146 | "authors": [
1147 | {
1148 | "name": "Nicolas Grekas",
1149 | "email": "p@tchwork.com"
1150 | },
1151 | {
1152 | "name": "Symfony Community",
1153 | "homepage": "https://symfony.com/contributors"
1154 | }
1155 | ],
1156 | "description": "Symfony polyfill for the Mbstring extension",
1157 | "homepage": "https://symfony.com",
1158 | "keywords": [
1159 | "compatibility",
1160 | "mbstring",
1161 | "polyfill",
1162 | "portable",
1163 | "shim"
1164 | ],
1165 | "time": "2016-05-18 14:26:46"
1166 | },
1167 | {
1168 | "name": "symfony/routing",
1169 | "version": "v3.1.4",
1170 | "source": {
1171 | "type": "git",
1172 | "url": "https://github.com/symfony/routing.git",
1173 | "reference": "8edf62498a1a4c57ba317664a4b698339c10cdf6"
1174 | },
1175 | "dist": {
1176 | "type": "zip",
1177 | "url": "https://api.github.com/repos/symfony/routing/zipball/8edf62498a1a4c57ba317664a4b698339c10cdf6",
1178 | "reference": "8edf62498a1a4c57ba317664a4b698339c10cdf6",
1179 | "shasum": ""
1180 | },
1181 | "require": {
1182 | "php": ">=5.5.9"
1183 | },
1184 | "conflict": {
1185 | "symfony/config": "<2.8"
1186 | },
1187 | "require-dev": {
1188 | "doctrine/annotations": "~1.0",
1189 | "doctrine/common": "~2.2",
1190 | "psr/log": "~1.0",
1191 | "symfony/config": "~2.8|~3.0",
1192 | "symfony/expression-language": "~2.8|~3.0",
1193 | "symfony/http-foundation": "~2.8|~3.0",
1194 | "symfony/yaml": "~2.8|~3.0"
1195 | },
1196 | "suggest": {
1197 | "doctrine/annotations": "For using the annotation loader",
1198 | "symfony/config": "For using the all-in-one router or any loader",
1199 | "symfony/dependency-injection": "For loading routes from a service",
1200 | "symfony/expression-language": "For using expression matching",
1201 | "symfony/http-foundation": "For using a Symfony Request object",
1202 | "symfony/yaml": "For using the YAML loader"
1203 | },
1204 | "type": "library",
1205 | "extra": {
1206 | "branch-alias": {
1207 | "dev-master": "3.1-dev"
1208 | }
1209 | },
1210 | "autoload": {
1211 | "psr-4": {
1212 | "Symfony\\Component\\Routing\\": ""
1213 | },
1214 | "exclude-from-classmap": [
1215 | "/Tests/"
1216 | ]
1217 | },
1218 | "notification-url": "https://packagist.org/downloads/",
1219 | "license": [
1220 | "MIT"
1221 | ],
1222 | "authors": [
1223 | {
1224 | "name": "Fabien Potencier",
1225 | "email": "fabien@symfony.com"
1226 | },
1227 | {
1228 | "name": "Symfony Community",
1229 | "homepage": "https://symfony.com/contributors"
1230 | }
1231 | ],
1232 | "description": "Symfony Routing Component",
1233 | "homepage": "https://symfony.com",
1234 | "keywords": [
1235 | "router",
1236 | "routing",
1237 | "uri",
1238 | "url"
1239 | ],
1240 | "time": "2016-08-16 14:58:24"
1241 | },
1242 | {
1243 | "name": "symfony/translation",
1244 | "version": "v3.1.4",
1245 | "source": {
1246 | "type": "git",
1247 | "url": "https://github.com/symfony/translation.git",
1248 | "reference": "a35edc277513c9bc0f063ca174c36b346f974528"
1249 | },
1250 | "dist": {
1251 | "type": "zip",
1252 | "url": "https://api.github.com/repos/symfony/translation/zipball/a35edc277513c9bc0f063ca174c36b346f974528",
1253 | "reference": "a35edc277513c9bc0f063ca174c36b346f974528",
1254 | "shasum": ""
1255 | },
1256 | "require": {
1257 | "php": ">=5.5.9",
1258 | "symfony/polyfill-mbstring": "~1.0"
1259 | },
1260 | "conflict": {
1261 | "symfony/config": "<2.8"
1262 | },
1263 | "require-dev": {
1264 | "psr/log": "~1.0",
1265 | "symfony/config": "~2.8|~3.0",
1266 | "symfony/intl": "~2.8|~3.0",
1267 | "symfony/yaml": "~2.8|~3.0"
1268 | },
1269 | "suggest": {
1270 | "psr/log": "To use logging capability in translator",
1271 | "symfony/config": "",
1272 | "symfony/yaml": ""
1273 | },
1274 | "type": "library",
1275 | "extra": {
1276 | "branch-alias": {
1277 | "dev-master": "3.1-dev"
1278 | }
1279 | },
1280 | "autoload": {
1281 | "psr-4": {
1282 | "Symfony\\Component\\Translation\\": ""
1283 | },
1284 | "exclude-from-classmap": [
1285 | "/Tests/"
1286 | ]
1287 | },
1288 | "notification-url": "https://packagist.org/downloads/",
1289 | "license": [
1290 | "MIT"
1291 | ],
1292 | "authors": [
1293 | {
1294 | "name": "Fabien Potencier",
1295 | "email": "fabien@symfony.com"
1296 | },
1297 | {
1298 | "name": "Symfony Community",
1299 | "homepage": "https://symfony.com/contributors"
1300 | }
1301 | ],
1302 | "description": "Symfony Translation Component",
1303 | "homepage": "https://symfony.com",
1304 | "time": "2016-08-05 08:37:39"
1305 | }
1306 | ],
1307 | "packages-dev": [
1308 | {
1309 | "name": "illuminate/console",
1310 | "version": "v5.3.4",
1311 | "source": {
1312 | "type": "git",
1313 | "url": "https://github.com/illuminate/console.git",
1314 | "reference": "a2a0804a5bf26172f67ba3d491ad8a19028bbab5"
1315 | },
1316 | "dist": {
1317 | "type": "zip",
1318 | "url": "https://api.github.com/repos/illuminate/console/zipball/a2a0804a5bf26172f67ba3d491ad8a19028bbab5",
1319 | "reference": "a2a0804a5bf26172f67ba3d491ad8a19028bbab5",
1320 | "shasum": ""
1321 | },
1322 | "require": {
1323 | "illuminate/contracts": "5.3.*",
1324 | "illuminate/support": "5.3.*",
1325 | "nesbot/carbon": "~1.20",
1326 | "php": ">=5.6.4",
1327 | "symfony/console": "3.1.*"
1328 | },
1329 | "suggest": {
1330 | "guzzlehttp/guzzle": "Required to use the ping methods on schedules (~5.3|~6.0).",
1331 | "mtdowling/cron-expression": "Required to use scheduling component (~1.0).",
1332 | "symfony/process": "Required to use scheduling component (3.1.*)."
1333 | },
1334 | "type": "library",
1335 | "extra": {
1336 | "branch-alias": {
1337 | "dev-master": "5.3-dev"
1338 | }
1339 | },
1340 | "autoload": {
1341 | "psr-4": {
1342 | "Illuminate\\Console\\": ""
1343 | }
1344 | },
1345 | "notification-url": "https://packagist.org/downloads/",
1346 | "license": [
1347 | "MIT"
1348 | ],
1349 | "authors": [
1350 | {
1351 | "name": "Taylor Otwell",
1352 | "email": "taylor@laravel.com"
1353 | }
1354 | ],
1355 | "description": "The Illuminate Console package.",
1356 | "homepage": "https://laravel.com",
1357 | "time": "2016-08-07 19:56:57"
1358 | },
1359 | {
1360 | "name": "symfony/console",
1361 | "version": "v3.1.4",
1362 | "source": {
1363 | "type": "git",
1364 | "url": "https://github.com/symfony/console.git",
1365 | "reference": "8ea494c34f0f772c3954b5fbe00bffc5a435e563"
1366 | },
1367 | "dist": {
1368 | "type": "zip",
1369 | "url": "https://api.github.com/repos/symfony/console/zipball/8ea494c34f0f772c3954b5fbe00bffc5a435e563",
1370 | "reference": "8ea494c34f0f772c3954b5fbe00bffc5a435e563",
1371 | "shasum": ""
1372 | },
1373 | "require": {
1374 | "php": ">=5.5.9",
1375 | "symfony/polyfill-mbstring": "~1.0"
1376 | },
1377 | "require-dev": {
1378 | "psr/log": "~1.0",
1379 | "symfony/event-dispatcher": "~2.8|~3.0",
1380 | "symfony/process": "~2.8|~3.0"
1381 | },
1382 | "suggest": {
1383 | "psr/log": "For using the console logger",
1384 | "symfony/event-dispatcher": "",
1385 | "symfony/process": ""
1386 | },
1387 | "type": "library",
1388 | "extra": {
1389 | "branch-alias": {
1390 | "dev-master": "3.1-dev"
1391 | }
1392 | },
1393 | "autoload": {
1394 | "psr-4": {
1395 | "Symfony\\Component\\Console\\": ""
1396 | },
1397 | "exclude-from-classmap": [
1398 | "/Tests/"
1399 | ]
1400 | },
1401 | "notification-url": "https://packagist.org/downloads/",
1402 | "license": [
1403 | "MIT"
1404 | ],
1405 | "authors": [
1406 | {
1407 | "name": "Fabien Potencier",
1408 | "email": "fabien@symfony.com"
1409 | },
1410 | {
1411 | "name": "Symfony Community",
1412 | "homepage": "https://symfony.com/contributors"
1413 | }
1414 | ],
1415 | "description": "Symfony Console Component",
1416 | "homepage": "https://symfony.com",
1417 | "time": "2016-08-19 06:48:39"
1418 | }
1419 | ],
1420 | "aliases": [],
1421 | "minimum-stability": "dev",
1422 | "stability-flags": [],
1423 | "prefer-stable": true,
1424 | "prefer-lowest": false,
1425 | "platform": {
1426 | "php": ">=5.4.0"
1427 | },
1428 | "platform-dev": []
1429 | }
1430 |
--------------------------------------------------------------------------------
/phpunit.xml:
--------------------------------------------------------------------------------
1 |
2 |
13 |
14 |
15 | ./tests/
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/provides.json:
--------------------------------------------------------------------------------
1 | {
2 | "providers": [
3 | "Efficiently\\Larasset\\LarassetServiceProvider",
4 | "Efficiently\\JqueryLaravel\\JqueryLaravelServiceProvider"
5 | ],
6 | "aliases": [
7 | {
8 | "alias": "Asset",
9 | "facade": "Efficiently\\Larasset\\Facades\\Asset"
10 | }
11 | ]
12 | }
--------------------------------------------------------------------------------
/src/Efficiently/Larasset/Asset.php:
--------------------------------------------------------------------------------
1 | args = is_array($args) ? $args : func_get_args();
25 |
26 | $this->assetsPrefix = function () {
27 | return config('larasset.prefix', '/assets');
28 | };
29 |
30 | $this->assetsHost = function () {
31 | return config('larasset.host');
32 | };
33 |
34 | $this->assetPort = function () {
35 | return getenv('LARASSET_PORT') ?: config('larasset.port', 3000);
36 | };
37 | }
38 |
39 | public function manifest($args = null)
40 | {
41 | $args = func_get_args() ? func_get_args() : $this->args;
42 | $manifestHash = md5(json_encode($args));
43 | if (array_get($this->manifests, $manifestHash)) {
44 | return $this->manifests[$manifestHash];
45 | }
46 |
47 | return $this->manifests[$manifestHash] = App::make('manifest', $args);
48 | }
49 |
50 | // Borrow assets and files methods of Sprockets Manifest class and its Rails integration.
51 | // In a Rails console we can access this methods via helper.assets_manifest.assets and helper.assets_manifest.files
52 | // TODO: Borrow these methods: https://github.com/CodeSleeve/asset-pipeline/blob/v1.3/src/Codesleeve/AssetPipeline/SprocketsTags.php#L132
53 |
54 | /**
55 | * Returns an HTML script tag for the sources and attributes specified as arguments.
56 | *
57 | * @param array|string $sources default "application"
58 | * @param array $attributes HTML attributes
59 | * @return string
60 | */
61 | public function javascriptIncludeTag($sources = "application", $attributes = [])
62 | {
63 | // E.g. javascript_include_tag('app'); => app-9fcd9b50e5cb047af35d3c5a4b55f73f.js
64 | $args = func_get_args();
65 | if (is_array(last($args))) {
66 | $attributes = array_pop($args);
67 | } else {
68 | $attributes = [];
69 | }
70 | $sources = is_array($sources) ? $sources : $args;
71 | if (empty($sources)) {
72 | $sources = ["application"];
73 | }
74 |
75 | $assetsOptions = ['host' => array_pull($attributes, 'host', $this->assetsHost)];
76 |
77 | $defaults = ['type' => 'text/javascript'];
78 | $attributes = $attributes + $defaults;
79 |
80 | $javascript_tags = [];
81 | foreach ((array) $sources as $source) {
82 | $sourceName = "$source.js";
83 | $javascript_tags[] = app('html')->script($this->assetPath($sourceName, $assetsOptions), $attributes);
84 | }
85 |
86 | return implode($javascript_tags);
87 | }
88 |
89 | /**
90 | * Returns a HTML stylesheet link tag for the sources and attributes specified as arguments.
91 | *
92 | * @param array|string $sources default "application"
93 | * @param array $attributes HTML attributes
94 | * @return string
95 | */
96 | public function stylesheetLinkTag($sources = "application", $attributes = [])
97 | {
98 | // E.g. stylesheet_link_tag('app', ['media'=>'all']); => app-fa2ce4b45369a106436f229ca9e52bee.css
99 | $args = func_get_args();
100 | if (is_array(last($args))) {
101 | $attributes = array_pop($args);
102 | } else {
103 | $attributes = [];
104 | }
105 | $sources = is_array($sources) ? $sources : $args;
106 | if (empty($sources)) {
107 | $sources = ["application"];
108 | }
109 |
110 | $assetsOptions = ['host' => array_pull($attributes, 'host', $this->assetsHost)];
111 |
112 | $defaults = ['media' => 'all', 'type' => 'text/css'];
113 | $attributes = $attributes + $defaults;
114 |
115 | $stylesheet_tags = [];
116 | foreach ((array) $sources as $source) {
117 | $sourceName = "$source.css";
118 | $stylesheet_tags[] = app('html')->style($this->assetPath($sourceName, $assetsOptions), $attributes);
119 | }
120 |
121 | return implode($stylesheet_tags);
122 | }
123 |
124 | /**
125 | * Returns a HTML favicon link tag for the source and attributes specified as arguments.
126 | *
127 | * @param string $source Relative URL
128 | * @param array $attributes HTML attributes
129 | * @return string
130 | */
131 | public function faviconLinkTag($source = null, $attributes = [])
132 | {
133 | // E.g. favicon_link_tag('favicon.ico', ['rel' => 'shortcut icon']); =>
134 | //
135 | $source = $source ?: "favicon.ico";
136 |
137 | $assetsOptions = ['host' => array_pull($attributes, 'host', $this->assetsHost)];
138 |
139 | $defaults = ['rel' => 'shortcut icon', 'type' => 'image/vnd.microsoft.icon'];
140 | $attributes = $attributes + $defaults;
141 |
142 | return "attributes($attributes).">".PHP_EOL;
143 | }
144 |
145 | /**
146 | * Returns an HTML image element for the source and attributes specified as arguments from the assets pipeline.
147 | *
148 | * @param string $source Relative URL
149 | * @param string $alt
150 | * @param array $attributes HTML attributes
151 | * @return string
152 | */
153 | public function imageTag($source, $alt = null, $attributes = [])
154 | {
155 | $assetsOptions = ['host' => array_pull($attributes, 'host', $this->assetsHost)];
156 |
157 | // E.g. image_tag('logo.png', "My Logo"); =>
158 | $alt = $alt ?: humanize(basename($source, ".".File::extension($source)));
159 |
160 | return app('html')->image($this->assetPath($source, $assetsOptions), $alt, $attributes);
161 | }
162 |
163 | /**
164 | * Computes the path to asset in public directory.
165 | *
166 | * @param string $source
167 | * @param array $options
168 | * @return string
169 | */
170 | public function assetPath($source, array $options = [])
171 | {
172 | $source = (string) $source;
173 | if (! $source) {
174 | return ""; // Short circuit
175 | }
176 |
177 | if (preg_match(static::URI_REGEXP, $source)) {
178 | return $source;// Short circuit
179 | }
180 |
181 | $assetPrefix = array_get($options, 'prefix', $this->assetsPrefix);
182 | if (is_callable($assetPrefix) && is_object($assetPrefix)) {
183 | $assetPrefix = $assetPrefix();
184 | }
185 |
186 | $assetHost = array_get($options, 'host');
187 | if (is_callable($assetHost) && is_object($assetHost)) {
188 | $assetHost = $assetHost();
189 | }
190 |
191 | $assetPort = $this->assetPort;
192 | if (is_callable($assetPort) && is_object($assetPort)) {
193 | $assetPort = $assetPort();
194 | }
195 |
196 | $protocol = Request::secure() ? "https://" : "http://";
197 | if (App::environment() !== (getenv('ASSETS_ENV') ?: 'production')) {
198 | $assetHost = $assetHost ?: $protocol.$this->getHostname().":".$assetPort;
199 | $assetLocation = $assetHost.$assetPrefix;
200 | } else {
201 | $assetLocation = $assetHost.$assetPrefix;
202 | $manifest = static::manifest();
203 | }
204 | // TODO: Sanitize/purify $source var
205 | $sourceName = $source;
206 | if (isset($manifest) && $manifest->getAssets()) {
207 | $sourceName = array_get($manifest->getAssets(), $sourceName, $sourceName);
208 | }
209 |
210 | $assetPath = "$assetLocation/$sourceName";
211 | if (File::exists(public_path().$assetPath) || preg_match(static::URI_REGEXP, $assetPath)) {
212 | return $assetPath;
213 | } else {
214 | // TODO: The root path of the Laravel application is hardcoded here, it might be a problem
215 | return '/'.preg_replace('/^\//', '', $source);
216 | }
217 | }
218 |
219 | /**
220 | * Computes the full URL to a asset in the public directory.
221 | * This will use Asset::assetPath() internally, so most of their behaviors will be the same.
222 | *
223 | * @param string $source
224 | * @param array $options
225 | * @return string
226 | */
227 | public function assetUrl($source, array $options = [])
228 | {
229 | $assetPath = $this->assetPath($source, $options);
230 |
231 | return URL::asset($assetPath, Request::secure());
232 | }
233 |
234 | protected function getHostname()
235 | {
236 | if (Request::server('SERVER_NAME') == "0.0.0.0") {
237 | return gethostname();
238 | } else {
239 | return Request::server('SERVER_NAME');
240 | }
241 | }
242 | }
243 |
--------------------------------------------------------------------------------
/src/Efficiently/Larasset/Commands/AssetsCommand.php:
--------------------------------------------------------------------------------
1 | packagePath();
15 |
16 | if ($this->useWindows()) {
17 | $source = $packagePath."/public/assets";
18 | } else {
19 | $source = $packagePath."/public/assets/";
20 | }
21 | $destination = $this->normalizePath(public_path('assets'));
22 | if (! File::exists($source)) {
23 | File::makeDirectory($source);
24 | }
25 | if (! File::exists($destination)) {
26 | File::makeDirectory($destination);
27 | }
28 | $copyAssetsCommand = $this->copyCommand().' '.$this->copyOptions().' "'.$source.'" "'.$destination.'" > nul';
29 |
30 | shell_exec($copyAssetsCommand);
31 | }
32 |
33 | /**
34 | * Returns the copy comment specific to your OS
35 | * @return string
36 | */
37 | protected function copyCommand()
38 | {
39 | $sys = strtoupper(PHP_OS);
40 |
41 | if (substr($sys, 0, 3) == "WIN") {
42 | $copyCommand = "xcopy";
43 | } elseif ($sys == "LINUX") {
44 | $copyCommand = "cp";
45 | } else {
46 | $copyCommand = "cp"; // MacOS
47 | }
48 |
49 | return $copyCommand;
50 | }
51 |
52 | protected function copyOptions()
53 | {
54 | $sys = strtoupper(PHP_OS);
55 |
56 | if (substr($sys, 0, 3) == "WIN") {
57 | // Copy all files recursively, verifies each new file and overwrites existing files without prompting you.
58 | $copyOptions = "/E /V /Y";
59 | } elseif ($sys == "LINUX") {
60 | // Preserve date creation attribute, copy all files recursively and treat destination as a normal file
61 | $copyOptions = "-pRT";
62 | } else {
63 | $copyOptions = "-pR"; // MacOS
64 | }
65 |
66 | return $copyOptions;
67 | }
68 |
69 | /**
70 | * Delete Manifest file(s) in the application's assets path
71 | *
72 | * @return void
73 | */
74 | protected function deleteManifest()
75 | {
76 | $manifests = find_paths(public_path('assets/').'manifest-*.json');
77 | foreach ($manifests as $manifest) {
78 | File::delete($manifest);
79 | }
80 | }
81 |
82 | /**
83 | * Delete recursively a tree of folders
84 | * Source: http://www.php.net/manual/fr/function.rmdir.php#110489
85 | *
86 | * @param string $dir Base directory
87 | * @return bool
88 | */
89 | protected function deleteTree($dir)
90 | {
91 | $files = array_diff(scandir($dir), ['.', '..']);
92 | foreach ($files as $file) {
93 | (is_dir("$dir/$file")) ? $this->deleteTree("$dir/$file") : unlink("$dir/$file");
94 | }
95 |
96 | return rmdir($dir);
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/src/Efficiently/Larasset/Commands/BaseCommand.php:
--------------------------------------------------------------------------------
1 | hasNode()) {
19 | $this->error('Please install Node.');
20 | exit();
21 | }
22 |
23 | if (! $this->hasNpm()) {
24 | $this->error("Please install Npm.");
25 | exit();
26 | }
27 | if (! $this->hasLarassetJs()) {
28 | $this->error("Please install the Node.js module 'larasset-js'. Run in a terminal: 'npm install -g larasset-js'");
29 | exit();
30 | }
31 |
32 | putenv('LARAVEL_ROOT='.$this->normalizePath(base_path()));
33 |
34 | }
35 |
36 | /**
37 | * Windows platform support: Convert backslash to slash
38 | *
39 | * @param string $path
40 | * @return string
41 | */
42 | protected function normalizePath($path)
43 | {
44 | return str_replace('\\', '/', $path);
45 | }
46 |
47 | /**
48 | * Check if the PHP server is under Windows Operating System
49 | *
50 | * @return bool
51 | */
52 | protected function useWindows()
53 | {
54 | $sys = strtoupper(PHP_OS);
55 |
56 | return (substr($sys, 0, 3) == "WIN");
57 | }
58 |
59 | /**
60 | * Returns package absolute path
61 | *
62 | * @return string
63 | */
64 | protected function packagePath()
65 | {
66 | return $this->normalizePath(realpath(__DIR__."/../../../.."));
67 | }
68 |
69 | /**
70 | * Does user have Node.js installed?
71 | *
72 | * @return boolean
73 | */
74 | protected function hasNode()
75 | {
76 | if ($this->useWindows()) {
77 | $node = shell_exec('where node');
78 | } else {
79 | $node = shell_exec('which node');
80 | }
81 |
82 | return str_contains($node, 'node');
83 | }
84 |
85 | /**
86 | * Does user have Npm installed?
87 | *
88 | * @return boolean
89 | */
90 | protected function hasNpm()
91 | {
92 | if ($this->useWindows()) {
93 | $npm = shell_exec('where npm');
94 | } else {
95 | $npm = shell_exec('which npm');
96 | }
97 |
98 | return str_contains($npm, 'npm');
99 | }
100 |
101 | /**
102 | * Does user have larasset-js module installed?
103 | *
104 | * @return boolean
105 | */
106 | protected function hasLarassetJs()
107 | {
108 | if ($this->useWindows()) {
109 | $larasset = shell_exec('where larasset');
110 | } else {
111 | $larasset = shell_exec('which larasset');
112 | }
113 |
114 | return str_contains($larasset, 'larasset');
115 | }
116 | }
117 |
--------------------------------------------------------------------------------
/src/Efficiently/Larasset/Commands/CleanAssetsCommand.php:
--------------------------------------------------------------------------------
1 | normalizePath($this->option('gemfile-path'));
48 | $packagePath = $this->packagePath();
49 | if ($this->useWindows()) {
50 | putenv('BUNDLE_GEMFILE='.$gemFilePath);
51 | $bundleGemfile = 'setx BUNDLE_GEMFILE "'.$gemFilePath.'" > nul';
52 | } else {
53 | $bundleGemfile = 'BUNDLE_GEMFILE "'.$gemFilePath.'"';
54 | }
55 | $this->envs = array_add($this->envs, 'BUNDLE_GEMFILE', $gemFilePath);
56 |
57 | $assetsCleanCommand = $bundleGemfile." && ".$this->getRakeCommand()." assets:clean RAILS_ENV=".$environment;
58 |
59 | // Clean assets
60 | system("cd ".$packagePath." && ".$assetsCleanCommand);
61 |
62 | $destination = $this->normalizePath(public_path('assets'));
63 |
64 | // Delete old assets
65 | if (File::isDirectory($destination)) {
66 | $this->deleteTree($destination);
67 | }
68 | $this->copyAssets();
69 | }
70 |
71 | /**
72 | * Get the console command arguments.
73 | *
74 | * @return array
75 | */
76 | protected function getArguments()
77 | {
78 | return [
79 | // ['example', InputArgument::REQUIRED, 'An example argument.'],
80 | ];
81 | }
82 |
83 | /**
84 | * Get the console command options.
85 | *
86 | * @return array
87 | */
88 | protected function getOptions()
89 | {
90 | return [
91 | // ['example', null, InputOption::VALUE_OPTIONAL, 'An example option.', 'default value'],
92 | ];
93 | }
94 | }
95 |
--------------------------------------------------------------------------------
/src/Efficiently/Larasset/Commands/PrecompileAssetsCommand.php:
--------------------------------------------------------------------------------
1 | option('environment')) {
43 | # TODO: Remove the DEPRECATED stuff in the next minor version (0.10.0 or 1.0.0)
44 | $this->comment("WARN: The '--environment' option is DEPRECATED, use '--assets-env' option instead please.");
45 | $assetsEnv = $this->option('environment');
46 | } else {
47 | $assetsEnv = $this->option('assets-env');
48 | }
49 |
50 | $packagePath = $this->packagePath();
51 |
52 | $searchPaths = array_map(
53 | function ($path) {
54 | return $this->normalizePath($path);
55 | },
56 | config('larasset.paths', [])
57 | );
58 | putenv('LARASSET_PATH='.implode('|', $searchPaths));
59 | $precompileFiles = array_map(
60 | function ($path) {
61 | return $this->normalizePath($path);
62 | },
63 | config('larasset.precompile', [])
64 | );
65 | putenv('LARASSET_PRECOMPILE='.implode('|', $precompileFiles));
66 | putenv('LARASSET_ENV='.$assetsEnv);
67 | putenv('LARASSET_COMMAND=precompile');
68 | putenv('LARASSET_PREFIX='.config('larasset.prefix'));
69 | $enableSourceMaps = config('larasset.sourceMaps') === null ? true : config('larasset.sourceMaps');
70 | putenv('LARASSET_SOURCE_MAPS='.($enableSourceMaps ? 'true' : 'false'));
71 | $assetsPrecompileCommand = "larasset";
72 |
73 | // Precompile assets
74 | system("cd ".$packagePath." && ".$assetsPrecompileCommand);
75 |
76 | // $this->deleteManifest();
77 | // $this->copyAssets();
78 | }
79 |
80 | /**
81 | * Get the console command arguments.
82 | *
83 | * @return array
84 | */
85 | protected function getArguments()
86 | {
87 | return [
88 | // ['example', InputArgument::REQUIRED, 'An example argument.'],
89 | ];
90 | }
91 |
92 | /**
93 | * Get the console command options.
94 | *
95 | * @return array
96 | */
97 | protected function getOptions()
98 | {
99 | return [
100 | ['assets-env', null, InputOption::VALUE_OPTIONAL, 'Specifies the assets environment to run this precompilation under.', 'development'],
101 | ['environment', null, InputOption::VALUE_OPTIONAL, "DEPRECATED: Use '--assets-env' option instead."],
102 |
103 | ];
104 | }
105 | }
106 |
--------------------------------------------------------------------------------
/src/Efficiently/Larasset/Commands/ServeAssetsCommand.php:
--------------------------------------------------------------------------------
1 | option('host');
43 | $serverPort = $this->option('port');
44 | if ($this->option('environment')) {
45 | # TODO: Remove the DEPRECATED stuff in the next minor version (0.10.0 or 1.0.0)
46 | $this->comment("WARN: The '--environment' option is DEPRECATED, use '--assets-env' option instead please.");
47 | $serverEnv = $this->option('environment');
48 | } else {
49 | $serverEnv = $this->option('assets-env');
50 | }
51 |
52 | $serverOptions = "--port=".$serverPort." --host=".$serverHost;
53 | $packagePath = $this->packagePath();
54 |
55 | $searchPaths = array_map(
56 | function ($path) {
57 | return $this->normalizePath($path);
58 | },
59 | config('larasset.paths', [])
60 | );
61 | putenv('LARASSET_PATH='.implode('|', $searchPaths));
62 | putenv('LARASSET_PREFIX='.config('larasset.prefix'));
63 | putenv('LARASSET_ENV='.$serverEnv);
64 | putenv('LARASSET_COMMAND=server');
65 | $assetsServerCommand = "larasset ".$serverOptions;
66 |
67 | // Serve assets
68 | system("cd ".$packagePath." && ".$assetsServerCommand);
69 | }
70 |
71 | /**
72 | * Get the console command arguments.
73 | *
74 | * @return array
75 | */
76 | protected function getArguments()
77 | {
78 | return [
79 | // ['example', InputArgument::REQUIRED, 'An example argument.'],
80 | ];
81 | }
82 |
83 | /**
84 | * Get the console command options.
85 | *
86 | * @return array
87 | */
88 | protected function getOptions()
89 | {
90 | return [
91 | ['host', null, InputOption::VALUE_OPTIONAL, 'The host address to serve the asset files on.', "localhost"],
92 | ['port', null, InputOption::VALUE_OPTIONAL, 'The port to serve the asset files on.', config('larasset.port', 3000)],
93 | ['assets-env', null, InputOption::VALUE_OPTIONAL, 'Specifies the assets environment to run this server under (test/development/production).', 'development'],
94 | ['environment', null, InputOption::VALUE_OPTIONAL, "DEPRECATED: Use '--assets-env' option instead."],
95 | ];
96 | }
97 | }
98 |
--------------------------------------------------------------------------------
/src/Efficiently/Larasset/Commands/ServerCommand.php:
--------------------------------------------------------------------------------
1 | option('host');
44 | $serverPort = $this->option('port');
45 | $serverEnv = $this->option('env');
46 | $assetsServerHost = $this->option('larasset-host');
47 | $assetsServerPort = $this->option('larasset-port');
48 | putenv('LARASSET_PORT='.$assetsServerPort);
49 | if ($this->option('larasset-environment')) {
50 | // TODO: Remove the DEPRECATED stuff in the next minor version (0.10.0 or 1.0.0)
51 | $this->comment("WARN: The '--larasset-environment' option is DEPRECATED, use '--larasset-env' option instead please.");
52 | $assetsServerEnv = $this->option('larasset-environment');
53 | } else {
54 | $assetsServerEnv = $this->option('larasset-env');
55 | }
56 |
57 | // Run assets server in a background process
58 | $command = "php artisan larasset:serve --port=".$assetsServerPort." --host=".$assetsServerHost." --assets-env=".$assetsServerEnv;
59 | $this->info("Start the assets server...");
60 |
61 | $serverLogsPath = $this->normalizePath(storage_path('logs/larasset_server.log'));
62 | $this->line('Assets server logs are stored in "'.$serverLogsPath.'"');
63 | $this->execInBackground($command, $serverLogsPath);
64 |
65 | // Run PHP application server
66 | $this->call('serve', ['--host' => $serverHost, '--port' => $serverPort, '--env' => $serverEnv]);
67 | }
68 |
69 | /**
70 | * Get the console command arguments.
71 | *
72 | * @return array
73 | */
74 | protected function getArguments()
75 | {
76 | return [
77 | // ['example', InputArgument::REQUIRED, 'An example argument.'],
78 | ];
79 | }
80 |
81 | /**
82 | * Get the console command options.
83 | *
84 | * @return array
85 | */
86 | protected function getOptions()
87 | {
88 | return [
89 | ['host', null, InputOption::VALUE_OPTIONAL, 'The host address to serve the application on.', "localhost"],
90 | ['port', null, InputOption::VALUE_OPTIONAL, 'The port to serve the application on.', 8000],
91 | ['larasset-host', null, InputOption::VALUE_OPTIONAL, 'The host address to serve the asset files on.', "localhost"],
92 | ['larasset-port', null, InputOption::VALUE_OPTIONAL, 'The port to serve the asset files on.', config('larasset.port', 3000)],
93 | ['larasset-env', null, InputOption::VALUE_OPTIONAL, 'Specifies the assets environment to run this server under (test/development/production).', 'development'],
94 | ['larasset-environment', null, InputOption::VALUE_OPTIONAL, "DEPRECATED: Use '--larasset-env' option instead."],
95 |
96 | ];
97 | }
98 |
99 | protected function execInBackground($command, $output = null)
100 | {
101 | $output = $output ?: ($this->useWindows() ? 'nul': '/dev/null'); // no output by default
102 | if ($this->useWindows()) {
103 | // Source: http://arstechnica.com/civis/viewtopic.php?p=9058895&sid=ca678fb8e1cf654f5efae647716a343b#p9058895
104 | if (! class_exists("\COM")) {
105 | $this->error("Please install COM extension for PHP, see: http://www.php.net/manual/en/com.installation.php");
106 | }
107 | $WshShell = new \COM("WScript.Shell");
108 | $WshShell->Run("cmd /c title $command && ".$command." > ".$output." 2>&1 &", 2, false);
109 | } else {
110 | // For Linux and Mac OS platforms
111 | // TODO: Try pcntl_exec() function instead
112 | shell_exec(sprintf('%s > '.$output.' 2>&1 &', $command));
113 | }
114 | }
115 | }
116 |
--------------------------------------------------------------------------------
/src/Efficiently/Larasset/Commands/SetupAssetsCommand.php:
--------------------------------------------------------------------------------
1 | line('');
36 | $this->line('Creating initial directory structure and copying some general purpose assets over.');
37 | $this->line('');
38 |
39 | $this->xcopy(realpath($structure), realpath($base));
40 |
41 | $this->line('');
42 | $this->line('Finished.');
43 | }
44 |
45 | private function xcopy($source, $dest)
46 | {
47 | $base = base_path();
48 | foreach ($iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($source, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::SELF_FIRST) as $item) {
49 | if ($item->isDir()) {
50 | if (! is_dir($dest . '/' . $iterator->getSubPathName())) {
51 | mkdir($dest . '/' . $iterator->getSubPathName());
52 | }
53 | } else {
54 | copy($item, $dest . '/' . $iterator->getSubPathName());
55 | $this->line(' Copying -> ' . str_replace($base, '', $dest . '/' . $iterator->getSubPathName()));
56 | }
57 | }
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/src/Efficiently/Larasset/Facades/Asset.php:
--------------------------------------------------------------------------------
1 | publishes([
24 | __DIR__ . '/../../config/config.php' => config_path('larasset.php')
25 | ], 'config');
26 |
27 | $this->mergeConfigFrom(
28 | __DIR__ . '/../../config/config.php',
29 | 'larasset'
30 | );
31 |
32 | // Init assets
33 | $this->app->make('asset', [public_path()."/assets"]);
34 | }
35 |
36 | /**
37 | * Register the service provider.
38 | *
39 | * @return void
40 | */
41 | public function register()
42 | {
43 | $this->app->singleton('asset', function ($app, $parameters = []) {
44 | if (count($parameters) < 2) {
45 | $parameters = array_merge($parameters, [null]);
46 | }
47 | list($dir, $path) = $parameters;
48 |
49 | return new Asset($dir, $path);
50 | });
51 |
52 | $this->app->bind('manifest', function ($app, $parameters = []) {
53 | if (count($parameters) < 2) {
54 | $parameters = array_merge($parameters, [null]);
55 | }
56 | list($dir, $path) = $parameters;
57 |
58 | return new Manifest($dir, $path);
59 | });
60 |
61 | // TODO: Allow to register or not Larasset commands in production env with a config option
62 | if ($this->app->environment() !== 'production' && $this->app['config']->get('app.debug')) {
63 | // For security reasons Larasset commands aren't available in production environment
64 | $this->registerCommands();
65 | }
66 |
67 | // TODO: Allow to publish default package.json in the config path of the package
68 | }
69 |
70 | protected function registerCommands()
71 | {
72 | $this->app->bind('larasset:precompile', function ($app) {
73 | return new Commands\PrecompileAssetsCommand();
74 | });
75 |
76 | $this->app->bind('larasset:clean', function ($app) {
77 | return new Commands\CleanAssetsCommand();
78 | });
79 |
80 | $this->app->bind('larasset:setup', function ($app) {
81 | return new Commands\SetupAssetsCommand();
82 | });
83 |
84 | $this->app->bind('larasset:serve', function ($app) {
85 | return new Commands\ServeAssetsCommand();
86 | });
87 |
88 | $this->app->bind('server', function ($app) {
89 | return new Commands\ServerCommand();
90 | });
91 |
92 | $this->commands([
93 | 'larasset:precompile', 'larasset:clean', 'larasset:setup',
94 | 'larasset:serve', 'server'
95 | ]);
96 | }
97 |
98 | /**
99 | * Get the services provided by the provider.
100 | *
101 | * @return array
102 | */
103 | public function provides()
104 | {
105 | return [];
106 | }
107 | }
108 |
--------------------------------------------------------------------------------
/src/Efficiently/Larasset/Manifest.php:
--------------------------------------------------------------------------------
1 | dir, $this->path) = $args;
36 | $this->dir = $this->normalizePath($this->dir);
37 | $this->path = $this->normalizePath($this->path);
38 |
39 | $basePath = $this->normalizePath(base_path()); // Windows support: Convert backslash to slash
40 |
41 | // Expand paths
42 | if ($this->dir) {
43 | $this->dir = $this->normalizePath(realpath($this->dir));
44 | }
45 |
46 | if ($this->path) {
47 | $this->path = $this->normalizePath(realpath($this->path));
48 | }
49 |
50 | // If path is given as the second arg
51 | if ($this->dir && File::extension($this->dir) != "") {
52 | list($this->dir, $this->path) = [null, $this->dir];
53 | }
54 |
55 | // Default dir to the directory of the path
56 | if ($this->path) {
57 | $this->dir = $this->dir ?: dirname($this->path);
58 | }
59 |
60 | // If directory is given w/o path, pick a random manifest.json location
61 | if ($this->dir && !$this->path) {
62 | // Find the first manifest.json in the directory
63 | $paths = find_paths($this->dir."/manifest*.json");
64 |
65 | if (! empty($paths)) {
66 | $this->path = head($paths);
67 | } else {
68 | $this->path = $this->dir."/manifest-".md5(uniqid(mt_rand(), true)).".json";
69 | }
70 | }
71 |
72 | if (! $this->dir && ! $this->path) {
73 | throw new Exception("manifest requires output path", 1);
74 | }
75 |
76 | $data = [];
77 |
78 | try {
79 | if (File::exists($this->path)) {
80 | // \Log::info("Load manifest !");//debug
81 | $data = json_decode(File::get($this->path), true);
82 | }
83 | } catch (Exception $e) {
84 | \Log::error($this->path." is invalid: ".get_classname($e)." ".$e->getMessage());
85 | }
86 | $this->data = $data;
87 | }
88 |
89 | // Returns internal assets mapping. Keys are logical paths which
90 | // map to the latest fingerprinted filename.
91 | //
92 | // Logical path (String): Fingerprint path (String)
93 | //
94 | // [ "app.js" => "app-2e8e9a7c6b0aafa0c9bdeec90ea30213.js",
95 | // "jquery.js" => "jquery-ae0908555a245f8266f77df5a8edca2e.js" ]
96 | //
97 | public function getAssets()
98 | {
99 | return array_get($this->data, 'assets', []);
100 | }
101 |
102 | // Returns internal file directory listing. Keys are filenames
103 | // which map to an attributes array.
104 | //
105 | // Fingerprint path (String):
106 | // logical_path: Logical path (String)
107 | // mtime: ISO8601 mtime (String)
108 | // digest: Base64 hex digest (String)
109 | //
110 | // [ "app-2e8e9a7c6b0aafa0c9bdeec90ea30213.js" =>
111 | // [ 'logical_path' => "app.js",
112 | // 'mtime' => "2011-12-13T21:47:08-06:00",
113 | // 'digest' => "2e8e9a7c6b0aafa0c9bdeec90ea30213" ] ]
114 | //
115 | public function getFiles()
116 | {
117 | return array_get($this->data, 'files', []);
118 | }
119 |
120 | /**
121 | * Windows platform support: Convert backslash to slash
122 | *
123 | * @param string $path
124 | * @return string
125 | */
126 | protected function normalizePath($path)
127 | {
128 | return str_replace('\\', '/', $path);
129 | }
130 | }
131 |
--------------------------------------------------------------------------------
/src/Efficiently/Larasset/helpers.php:
--------------------------------------------------------------------------------
1 | 'My beautiful hat'
117 | *
118 | * @param string $value
119 | * @return string
120 | */
121 | function humanize($value)
122 | {
123 | return ucfirst(preg_replace('/_/', ' ', snake_case(camel_case($value))));
124 | }
125 | }
126 |
--------------------------------------------------------------------------------
/src/config/config.php:
--------------------------------------------------------------------------------
1 | '/assets',
15 |
16 | /**
17 | * By default, Larasset links to these assets on the current host
18 | * in the public folder, but you can direct Larasset to link to assets
19 | * from a dedicated asset server by setting `larasset.host`
20 | * in the package configuration, typically in
21 | * `config/larasset.php`.
22 | * For example, you'd define `http://assets.example.com` to be your asset host
23 | * this way:
24 | *
25 | * Config::set('larasset.host', 'http://assets.example.com');
26 | *
27 | * Helpers take that into account:
28 | *
29 | * image_tag("logo.png");
30 | * // ->
31 | * stylesheet_link_tag("app");
32 | * // ->
33 | *
34 | * sets the host for the assets. Useful when CDNs are used for hosting
35 | * assets, or when you want to work around the concurrency constraints builtin in browsers
36 | * using different domain aliases.
37 | */
38 | 'host' => null,
39 |
40 | /**
41 | * The port to serve the asset files on.
42 | * Useful for your development environment when you run the Assets server
43 | */
44 | 'port' => 3000,
45 |
46 | /**
47 | * Search Paths
48 | *
49 | * When a file is referenced from a manifest or a helper,
50 | * Larasset searches the three default asset locations for it.
51 | *
52 | * Besides the standard assets/* paths, additional (fully qualified)
53 | * paths can be added to the pipeline
54 | */
55 | 'paths' => array_merge(
56 | // Including assets files in `resources/assets` folders of your Laravel packages.
57 | find_paths(base_path().'/vendor/*/*/resources/assets/*/'),
58 | [
59 | base_path().'/resources/assets/images',
60 | base_path().'/resources/assets/js',
61 | base_path().'/resources/assets/css',
62 | base_path().'/lib/assets/images',
63 | base_path().'/lib/assets/js',
64 | base_path().'/lib/assets/css',
65 | base_path().'/provider/assets/images',
66 | base_path().'/provider/assets/js',
67 | base_path().'/provider/assets/css',
68 | // base_path().'/provider/videoplayer/flash',
69 | ]
70 | ),
71 |
72 | /**
73 | * Precompile files
74 | *
75 | * The default matcher for compiling files includes app.js, app.css
76 | * and all non-JS/CSS files (this will include all image assets automatically)
77 | * from resources/assets folders including your Laravel packages.
78 | *
79 | * If you have other manifests or individual stylesheets and JavaScript files
80 | * to include, you can add them to this precompile array.
81 | */
82 | 'precompile' => [
83 | 'app.css',
84 | 'app.js',
85 | // 'admin.js',
86 | // 'admin.css',
87 | ],
88 |
89 | /**
90 | * Enable or disable Source Mapping.
91 | * Useful in development environment to debug precompiled files.
92 | * Source-maps files shouldn't be published on a public web server.
93 | * So you can disable them for your production environment.
94 | */
95 | 'sourceMaps' => true,
96 |
97 | ];
98 |
--------------------------------------------------------------------------------
/structure/provider/assets/css/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/efficiently/larasset/1c95efb059f0c9b9868b8898e330822aec1f8f7e/structure/provider/assets/css/.gitkeep
--------------------------------------------------------------------------------
/structure/provider/assets/images/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/efficiently/larasset/1c95efb059f0c9b9868b8898e330822aec1f8f7e/structure/provider/assets/images/.gitkeep
--------------------------------------------------------------------------------
/structure/provider/assets/js/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/efficiently/larasset/1c95efb059f0c9b9868b8898e330822aec1f8f7e/structure/provider/assets/js/.gitkeep
--------------------------------------------------------------------------------
/structure/public/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/efficiently/larasset/1c95efb059f0c9b9868b8898e330822aec1f8f7e/structure/public/assets/.gitkeep
--------------------------------------------------------------------------------
/structure/resources/assets/css/app.css:
--------------------------------------------------------------------------------
1 | /**
2 | * This is a manifest file that'll be compiled into app.css, which will include all the files
3 | * listed below.
4 | *
5 | * Any CSS, LESS or Sass files within this directory, lib/assets/css, provider/assets/css,
6 | * or provider/assets/css of packages, if any, can be referenced here using a relative path.
7 | *
8 | * It's not advisable to add code directly here, but if you do, it'll appear in whatever order it
9 | * gets included (e.g. say you have require_tree . then the code will appear after all the directories
10 | * but before any files alphabetically greater than 'app.css'
11 | *
12 | *= require_self
13 | *= require_tree .
14 | */
15 |
--------------------------------------------------------------------------------
/structure/resources/assets/images/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/efficiently/larasset/1c95efb059f0c9b9868b8898e330822aec1f8f7e/structure/resources/assets/images/.gitkeep
--------------------------------------------------------------------------------
/structure/resources/assets/js/app.js:
--------------------------------------------------------------------------------
1 | // This is a manifest file that'll be compiled into app.js, which will include all the files
2 | // listed below.
3 | //
4 | // Any JavaScript/Coffee file within this directory, lib/assets/js, provider/assets/js,
5 | // or provider/assets/js of packages, if any, can be referenced here using a relative path.
6 | //
7 | // It's not advisable to add code directly here, but if you do, it'll appear in whatever order it
8 | // gets included (e.g. say you have require_tree . then the code will appear after all the directories
9 | // but before any files alphabetically greater than 'app.js'
10 | //
11 | // Read Mincer README (https://github.com/nodeca/mincer#mincer-directives) for details
12 | // about supported directives.
13 | //
14 | //= require jquery
15 | //= require jquery_ujs
16 | //= require_tree .
17 |
--------------------------------------------------------------------------------
/tests/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/efficiently/larasset/1c95efb059f0c9b9868b8898e330822aec1f8f7e/tests/.gitkeep
--------------------------------------------------------------------------------