2017 © Pedro PelΓ‘ez
 

library lk-staticfiles

[Larakit] Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Laravel для управлСния статикой (сборка Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ», сТатиС JS/CSS, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ…ΡΡˆΠ° Π² URL для сброса кэша Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°)

image

larakit/lk-staticfiles

[Larakit] Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Laravel для управлСния статикой (сборка Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ», сТатиС JS/CSS, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ…ΡΡˆΠ° Π² URL для сброса кэша Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°)

  • Thursday, March 1, 2018
  • by larakit
  • Repository
  • 1 Watchers
  • 1 Stars
  • 796 Installations
  • PHP
  • 26 Dependents
  • 0 Suggesters
  • 1 Forks
  • 1 Open issues
  • 1 Versions
  • 3 % Grown

The README.md

Total Downloads Latest Stable Version Latest Unstable Version License License Gitter, (*1)

[Larakit Staticfiles] Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для управлСния статикой

(сборка Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ», сТатиС JS/CSS, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ…ΡΡˆΠ° Π² URL для сброса кэша Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°), (*2)

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Π±Ρ‹Π» ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ с модуля для Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Kohana, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слуТил ΠΌΠ½Π΅ Π²Π΅Ρ€ΠΎΠΉ ΠΈ ΠΏΡ€Π°Π²Π΄ΠΎΠΉ Π±ΠΎΠ»Π΅Π΅ 5 Π»Π΅Ρ‚ ( ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, ΠΈ Kohana :) ) (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ я описывал Π΅Π³ΠΎ Ρ‚ΡƒΡ‚ https://habrahabr.ru/post/112852/), (*3)

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π±ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Laravel Ρƒ вас ΡƒΠΆΠ΅ создан, (*4)

1. Π€Π°ΠΉΠ» с ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ статики

Для порядка Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ стили ΠΈ скрипты вынСсСм Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, (*5)

./app/Http/staticfiles.php

Π—Π°Ρ‚Π΅ΠΌ Π² Ρ„Π°ΠΉΠ»Π΅, (*6)

./app/Http/routes.php

ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Π΅Π³ΠΎ, (*7)

<?php

Route::get('/', function () {
    return view('welcome');
});

require app_path('Http/staticfiles.php');

2. Установим ΠΏΠ°ΠΊΠ΅Ρ‚

$composer require larakit/lk-staticfiles

Π”Π°Π»Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ рСкомСндациями ΠΏΠ°ΠΊΠ΅Ρ‚Π° https://github.com/larakit/lk-boot ΠΈ произвСсти Π΄Π²Π΅ ΠΏΡ€Π°Π²ΠΊΠΈ, (*8)

./app/Http/Kernel.php

ΠΈ, (*9)

./config/app.php

Π»ΠΈΠ±ΠΎ Ρ€ΡƒΠΊΠ°ΠΌΠΈ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π², (*10)

./config/app.php

сСрвис-ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ "Larakit\StaticFiles\LarakitServiceProvider", (*11)

<?php

return [
   ...
   'providers' => [
      ...,
      Larakit\StaticFiles\LarakitServiceProvider::class
   ],
   ...
];

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Ρ‡Ρ‚ΠΎ всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ, для этого Π½Π°Π±Π΅Ρ€Π΅ΠΌ Π² консоли ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:, (*12)

php artisan | grep larastatic

Если Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ тСкст:, (*13)

larastatic
  larastatic:deploy    Π’Ρ‹Π»ΠΎΠΆΠΈΡ‚ΡŒ статику ΠΈΠ· зарСгистрированных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² DOCUMENT_ROOT

ΠΏΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΡŽ, ΠΏΠ°ΠΊΠ΅Ρ‚ Π±Ρ‹Π» ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ установлСн ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½!, (*14)

3. Π—Π°ΠΏΠΎΠ»Π½ΠΈΠΌ staticfiles.php инструкциями ΠΏΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ CSS

Для Π½Π°Ρ‡Π°Π»Π° посмотрим содСрТимоС ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π³Π»Π°Π²Π½ΠΎΠΉ страницы послС установки Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°, (*15)

, (*16)

ΠΈ постараСмся воспроизвСсти Π΅Π³ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, (*17)

<?php
\Larakit\StaticFiles\Css::instance()
    ->add('https://fonts.googleapis.com/css?family=Lato:100')
    ->addInline('
        html, body {
            height: 100%;
        }

        body {
            margin: 0;
            padding: 0;
            width: 100%;
            display: table;
            font-weight: 100;
            font-family: "Lato";
        }

        .container {
            text-align: center;
            display: table-cell;
            vertical-align: middle;
        }

        .content {
            text-align: center;
            display: inline-block;
        }

        .title {
            font-size: 96px;
        }    
    ');

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ стили ΠΈ скрипты Π²ΡΡ‚Π°Π²ΠΈΠ»ΠΈΡΡŒ Π²ΠΎ всС страницы сайта Π½Π°Π΄ΠΎ Π² вашСм шаблонС ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ², (*18)

, (*19)

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ!, (*20)

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния, (*21)

\Larakit\StaticFiles\Css::instance()
    ->add('"https://fonts.googleapis.com/css?family=Lato:100')
    ->addInline('
        html, body {
            height: 100%;
        }
     ');

ΠΈ, (*22)

\Larakit\StaticFiles\Css::instance()
    ->add('"https://fonts.googleapis.com/css?family=Lato:100');

\Larakit\StaticFiles\Css::instance()
    ->addInline('
        html, body {
            height: 100%;
        }
     ');

Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹., (*23)

4. Π Π°Π±ΠΎΡ‚Π° с JS

Она Π½Π΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС Ρ€Π°Π±ΠΎΡ‚Ρ‹ с JS., (*24)

Волько ΠΏΠΎΠΌΠΈΠΌΠΎ Π΄Π²ΡƒΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… стили ΠΏΠΎ ссылкС ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ inline-вставки ΠΊΠ°ΠΊ Π² CSS, здСсь Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°: - Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ onLoad - Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Noscript, (*25)

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» JS-ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° - Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: сдСлаСм Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ - послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы Π²Ρ‹Π»Π΅Ρ‚Π°Π» Π°Π»Π΅Ρ€Ρ‚ "ΠΏΡ€ΠΈΠ²Π΅Ρ‚!" - Π·Π°Π³Ρ€ΡƒΠΆΠ°Π»Π°ΡΡŒ яндСкс ΠΊΠ°Ρ€Ρ‚Π° - ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΌ javascript показывался тСкст "Упс, Π²ΠΊΠ»ΡŽΡ‡ΠΈ JS!", (*26)

Напомню, всС это ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Π² Ρ„Π°ΠΉΠ»Π΅, (*27)

./app/Http/staticfiles.php

Π˜Ρ‚Π°ΠΊ, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΠΌ Π΅Π³ΠΎ согласно Π½ΠΎΠ²Ρ‹ΠΌ трСбованиям, (*28)

\Larakit\StaticFiles\Js::instance()
    //ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ jQuery
    ->add('https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.min.js')
    //ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ API яндСкс ΠΊΠ°Ρ€Ρ‚
    ->add('//api-maps.yandex.ru/2.1/?lang=ru_RU')
    ->addInline('
        var myMap;
        // ДоТдёмся Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ API ΠΈ готовности DOM.
        ymaps.ready(init);
        function init () {
            // Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ экзСмпляра ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈ Π΅Π³ΠΎ привязка ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ с
            // Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ id ("map").
            myMap = new ymaps.Map("map", {
                // ΠŸΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ
                // Π΅Ρ‘ Ρ†Π΅Π½Ρ‚Ρ€ ΠΈ коэффициСнт ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ.
                center: [55.76, 37.64], // Москва
                zoom: 10
            }, {
                searchControlProvider: "yandex#search"
            });
        }    
    ')
    //Π΄ΠΎΠ±Π°Π²ΠΈΠΌ привСствиС ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ страницы
    ->addOnload('alert("ΠΏΡ€ΠΈΠ²Π΅Ρ‚!")')
    //Π΄ΠΎΠ±Π°Π²ΠΈΠΌ сообщСниС ΠΏΡ€ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΌ JS
    ->addNoscript('Упс, Π²ΠΊΠ»ΡŽΡ‡ΠΈ JS!');
//Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠ΅Ρ‹ стили для ΠΊΠ°Ρ€Ρ‚Ρ‹
\Larakit\StaticFiles\Css::instance()
    ->addInline('
        #map {
            width: 100%;
            height: 200px;
        }   
    ');

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΠΌ ΠΈ сам шаблон: - Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ вставки скриптов - Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для ΠΊΠ°Ρ€Ρ‚Ρ‹, (*29)

, (*30)

ОбновляСм страницу:, (*31)

1) alert ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ страницы Π²Ρ‹Π»Π΅Ρ‚Π΅Π» , (*32)

2) ЯндСкс.ΠΊΠ°Ρ€Ρ‚Π° появилась , (*33)

3) ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ javascript Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ страницу - справа Π²Π²Π΅Ρ€Ρ…Ρƒ Π²ΠΈΠ΄ΠΈΠΌ надпись "Упс, Π²ΠΊΠ»ΡŽΡ‡ΠΈ JS!" , (*34)

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ скрипты: , (*35)

5. Бпособы распространСния статики

Π˜Ρ… всСго Ρ‚Ρ€ΠΈ: 1) использованиС Π²Π½Π΅ΡˆΠ½ΠΈΡ… рСсурсов (простоС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅) 2) использованиС статики ΠΈΠ· DOCUMENT_ROOT (простоС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅) 3) использованиС статики ΠΈΠ· vendor-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ node_modules (Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Ρ‹ΠΊΠ»Π°Π΄ΠΊΠΈ Π² DOCUMENT_ROOT), (*36)

Π’Π°ΠΊ Π²ΠΎΡ‚ для Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π° ΠΈ сущСствуСт ΠΊΠΎΠΌΠ°Π½Π΄Π°, которая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π²Ρ‹ΠΊΠ»Π°Π΄ΠΊΡƒ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ, (*37)

./public/packages/...

запускаСтся ΠΎΠ½Π° Ρ‚Π°ΠΊ:, (*38)

php artisan larastatic:deploy 

ΠΈ послС Π΅Π΅ запуска Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° Π²Ρ‹ΠΊΠ»Π°Π΄ΠΊΠ° статики для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ зарСгистрированного ΠΏΠ°ΠΊΠ΅Ρ‚Π°, (*39)

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ со статикой:

  • Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π° github.com ΠΈ вписываСтС Π² ΠΏΠΎΠ»Π΅ поиска "lk-staticfiles"
  • Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, https://github.com/larakit/sf-bootstrap
  • Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅ΠΉΡˆΠ°Ρ докумСнтация ΠΏΠΎ использованию
  • ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅ Π΅Π³ΠΎ Π² ΠΊΠΎΠΌΠΏΠΎΠ·Π΅Ρ€Π΅
  • ΠΈ всС!

ΠΎΠ½ сам ΠΏΡ€ΠΎΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Π³Π΄Π΅ Π½Π°Π΄ΠΎ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ., (*40)

ΠŸΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅? Никаких Ρ‚Π΅Π±Π΅ Ρ‚Π°Π½Ρ†Π΅Π² Π² написаниСм gulp/grunt-ΠΏΡ€Π°Π²ΠΈΠ» для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠŸΡ€ΠΎΡΡ‚ΠΎ прописал Π² composer Π·Π°ΠΏΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΎΠ½ установился ΠΈ автоматичСски ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΡΡ Π½Π° страницу., (*41)

ΠŸΡ€ΠΈΡ‡Π΅ΠΌ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ/Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ€ΠΎΡƒΡ‚Π°Ρ… ΠΏΠΎ маскС (см. Π½ΠΈΠΆΠ΅), (*42)

6. ВстроСнныС возмоТности ΠΏΠΎ клиСнтской ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ

Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ прСдусмотрСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ возмоТности: - минимизация CSS [inline] - ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ "production" - минимизация CSS [external] - ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ "production" - минимизация JS [inline] - ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ "production" - минимизация JS [external] - ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ "production" - минимизация JS [onload] - ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ "production" - сборка всСх CSS Π² ΠΎΠ΄ΠΈΠ½ Π±ΠΈΠ»Π΄-Ρ„Π°ΠΉΠ» [inline] - ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ "production" - сборка всСх CSS Π² ΠΎΠ΄ΠΈΠ½ Π±ΠΈΠ»Π΄-Ρ„Π°ΠΉΠ» [external] - ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ "production" - сборка всСх JS Π² ΠΎΠ΄ΠΈΠ½ Π±ΠΈΠ»Π΄-Ρ„Π°ΠΉΠ» [inline] - ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ "production" - сборка всСх JS Π² ΠΎΠ΄ΠΈΠ½ Π±ΠΈΠ»Π΄-Ρ„Π°ΠΉΠ» [external] - ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ "production" - сборка всСх JS Π² ΠΎΠ΄ΠΈΠ½ Π±ΠΈΠ»Π΄-Ρ„Π°ΠΉΠ» [onload] - ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ "production" - ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ хоста, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ раздаСтся статика - ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ пустоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚.Π΅. Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π΄ΠΎΠΌΠ΅Π½, (*43)

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим всС ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ: для этого Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Ρ‰Π΅ стили ΠΈ скрипты, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° - /js/js.js - /css/css.css, (*44)

<?php
\Larakit\StaticFiles\Css::instance()
    ->add('https://fonts.googleapis.com/css?family=Lato:100')
    ->add('/css/css.css')
    ->add('/css/css2.css')
    ->add('/css/css3.css')
    ->add('/css/css4.css')
    ->add('/css/css5.css')
    ->addInline('
        html, body {
            height: 100%;
        }

        body {
            margin: 0;
            padding: 0;
            width: 100%;
            display: table;
            font-weight: 100;
            font-family: "Lato";
        }

        .container {
            text-align: center;
            display: table-cell;
            vertical-align: middle;
        }

        .content {
            text-align: center;
            display: inline-block;
        }

        .title {
            font-size: 96px;
        }    
    ');
\Larakit\StaticFiles\Js::instance()
    //ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ jQuery
    ->add('https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.min.js',null,true)
    //ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ API яндСкс ΠΊΠ°Ρ€Ρ‚
    ->add('//api-maps.yandex.ru/2.1/?lang=ru_RU',null,true)
    ->add('/js/js.js')
    ->add('/js/js2.js')
    ->add('/js/js3.js')
    ->add('/js/js4.js')
    ->add('/js/js5.js')
    ->addInline('
        var myMap;
        // ДоТдёмся Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ API ΠΈ готовности DOM.
        ymaps.ready(init);
        function init () {
            // Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ экзСмпляра ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈ Π΅Π³ΠΎ привязка ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ с
            // Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ id ("map").
            myMap = new ymaps.Map("map", {
                // ΠŸΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ
                // Π΅Ρ‘ Ρ†Π΅Π½Ρ‚Ρ€ ΠΈ коэффициСнт ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ.
                center: [55.76, 37.64], // Москва
                zoom: 10
            }, {
                searchControlProvider: "yandex#search"
            });
        }    
    ')
    //Π΄ΠΎΠ±Π°Π²ΠΈΠΌ привСствиС ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ страницы
    ->addOnload('alert("ΠΏΡ€ΠΈΠ²Π΅Ρ‚!")')
    //Π΄ΠΎΠ±Π°Π²ΠΈΠΌ сообщСниС ΠΏΡ€ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΌ JS
    ->addNoscript('Упс, Π²ΠΊΠ»ΡŽΡ‡ΠΈ JS!');
//Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ стили для ΠΊΠ°Ρ€Ρ‚Ρ‹
\Larakit\StaticFiles\Css::instance()
    ->addInline('
        #map {
            width: 100%;
            height: 200px;
        }   
    ');

/js/js.js /js/js2.js /js/js3.js /js/js4.js /js/js5.js, (*45)

confirm(
    "Выполнился скрипт js.js?"
);

/css/css.css /css/css2.css /css/css3.css /css/css4.css /css/css5.css, (*46)

body{
    color : #EB6251;;
}

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΠΌ показания YSlow ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, (*47)

Π’Π°ΠΊ выглядСли ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ стили Π΄ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, (*48)

, (*49)

А Ρ‚Π°ΠΊ скрипты, (*50)

, (*51)

6.1 Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ сборки CSS ΠΈ JS Π² Π±ΠΈΠ»Π΄-Ρ„Π°ΠΉΠ»Ρ‹

Для этого Π² .env ΠΏΡ€ΠΎΠΏΠΈΡˆΠ΅ΠΌ:, (*52)

# Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌ сборку CSS [inline] Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ»
LARAKIT_STATIC_CSS_INLINE_BUILD=1

# Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌ сборку CSS [ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎ ссылкС] Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ»
LARAKIT_STATIC_CSS_EXTERNAL_BUILD=1

# Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌ сборку CSS [inline] Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ»
LARAKIT_STATIC_JS_INLINE_BUILD=1

# Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌ сборку CSS [ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎ ссылкС] Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ»
LARAKIT_STATIC_JS_EXTERNAL_BUILD=1

# Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌ сборку CSS [onload] Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ»
LARAKIT_STATIC_JS_ONLOAD_BUILD=1

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠ΄ нашСй странички стал Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π΅Π΅:, (*53)

, (*54)

6.3 Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Π±ΠΈΠ»Π΄-Ρ„Π°ΠΉΠ»Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… CSS ΠΈ JS

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² Π±ΠΈΠ»Π΄Ρ‹ ΠΏΠΎΠΏΠ°Π»ΠΈ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π½Π°Π΄ΠΎ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Π² Π±ΠΈΠ»Π΄Ρ‹, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ мСста, ΠΎΡ‚ΠΊΡƒΠ΄Π° Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹:, (*55)

Установим для Π½ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ no_build Π² true: - Π² CSS это Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ - Π² JS это Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, (*56)

\Larakit\StaticFiles\Css::instance()
    ->add(
        //внСшний ΡΡ‚ΠΈΠ»ΡŒ
        'https://fonts.googleapis.com/css?family=Lato:100',
        //media - условиС использования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ "all" ΠΈΠ»ΠΈ "print"
        null, 
        //условиС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ "if IE 6"
        null,
        //no_build
        true
    )
    ...
;

\Larakit\StaticFiles\Js::instance()
    //ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ jQuery
    ->add(
        'https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.min.js',
        //условиС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ "if IE 6"
        null,
        //no_build
        true
    )
    //ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ API яндСкс ΠΊΠ°Ρ€Ρ‚
    ->add(
        '//api-maps.yandex.ru/2.1/?lang=ru_RU',
        //условиС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ "if IE 6"
        null,
        //no_build
        true
    )
    ...
;

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:, (*57)

, (*58)

6.2 Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ CSS ΠΈ JS

Для этого Π² .env ΠΏΡ€ΠΎΠΏΠΈΡˆΠ΅ΠΌ:, (*59)

LARAKIT_STATIC_CSS_INLINE_MIN=1
LARAKIT_STATIC_CSS_EXTERNAL_MIN=1

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² .env Π΅Ρ‰Π΅ инструкций:, (*60)

LARAKIT_STATIC_CSS_INLINE_MIN=1
LARAKIT_STATIC_CSS_INLINE_MIN=1
LARAKIT_STATIC_CSS_EXTERNAL_MIN=1
LARAKIT_STATIC_JS_INLINE_MIN=1
LARAKIT_STATIC_JS_EXTERNAL_MIN=1
LARAKIT_STATIC_JS_ONLOAD_MIN=1

Π’Ρ‹Π»ΠΎΠΆΠΈΠΌ статику Π΅Ρ‰Π΅ Ρ€Π°Π·,, (*61)

php artisan larastatic:deploy

Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ссылки Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡƒΡŽ статику для сброса кэша Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ², (*62)

ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ CSS, (*63)

Π‘Ρ‹Π»ΠΎ, (*64)

, (*65)

Π‘Ρ‚Π°Π»ΠΎ, (*66)

, (*67)

ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ CSS, (*68)

Π‘Ρ‹Π»ΠΎ, (*69)

, (*70)

Π‘Ρ‚Π°Π»ΠΎ, (*71)

, (*72)

6.3 ΠžΡ‚Π΄Π°Ρ‡Π° статики с Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π°

Π˜ΠΌΠΈΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ пСрСнос статики Π½Π° CDN, для этого создадим Π΄ΠΎΠΌΠ΅Π½ "st1.staticfiles" ΠΈ сдСлаСм Π΅Π³ΠΎ алиасом для Π΄ΠΎΠΌΠ΅Π½Π° "staticfiles"., (*73)

Π—Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² .env Π΅Ρ‰Π΅ инструкций:, (*74)

LARAKIT_STATIC_PREFIX=http://st1.staticfiles

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: , (*75)

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ показания YSlow ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, (*76)

, (*77)

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ снова запускаСм YSlow для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² нашСй ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ:, (*78)

, (*79)

Π’.Π΅. ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ Overall performance score c 80 Π΄ΠΎ 93

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ показания YSlow ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, (*80)

, (*81)

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ снова запускаСм YSlow для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² нашСй ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ:, (*82)

, (*83)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±Ρ‹Π» Π±Ρ‹ Π΅Ρ‰Π΅ Π²Ρ‹ΡˆΠ΅, Ссли Π±Ρ‹ ΠΌΡ‹ использовали ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Π΅ Π±ΠΎΠ»ΡŒΡˆΠ΅Π²Π΅ΡΠ½Ρ‹Π΅ стили ΠΈ скрипты Π² большом количСствС, Π° Π½Π΅ нСсколько ΠΏΡƒΡΡ‚Ρ‹ΡˆΠ΅ΠΊ, взятых для ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²., (*84)

По-ΠΌΠΎΠ΅ΠΌΡƒ, Π½Π΅ ΠΏΠ»ΠΎΡ…ΠΎ для ΠΊΠΎΡ€ΠΎΠ±ΠΎΡ‡Π½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄Π΅Π»Π°ΡŽΡ‰Π΅Π³ΠΎ это автоматичСски., (*85)

7. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ собствСнных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²

Ну ΠΈ, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, самоС Π³Π»Π°Π²Π½ΠΎΠ΅: Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ„ΠΎΡ€ΠΌΠ»ΡΡ‚ΡŒ свои ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹. Π‘Π΄Π΅Π»Π°Π΅ΠΌ Π΄Π²Π° Π²ΠΈΠ΄Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²: - с использованиСм CDN - с распространСниСм статики ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π°, (*86)

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ: - (для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ поиска Π½Π° packagist) ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ вписывайтС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅Π³ΠΈ "laravel, lk-staticfiles" - (для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ поиска Π½Π° github) Π² Description рСпозитория Π½Π° github вписывайтС прСфикс "[Larakit][lk-staticfiles] " , (*87)

7.1 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ собствСнных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² с использованиСм CDN

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ composer.json, (*88)

{
    "name": "larakit/sf-bootstrap",
    "description": "sf-bootstrap",
    "keywords": [
        "larakit",
        "laravel",
        "laravel 5",
        "bootstrap",
        "lk-staticfiles"
    ],      
    "license": "MIT",
    "version": "3.3.6",
    "require": {
        "larakit/sf-jquery": "*"
    },
    "autoload": {
        "files": [
            "init.php"
        ]
    }
}

Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ require ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ статичСскиС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… зависит ваш ΠΏΠ°ΠΊΠ΅Ρ‚ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ jQuery), Π° Ссли Ρ‚Π°ΠΊΠΈΡ… Π½Π΅Ρ‚ Π²ΠΏΠΈΡˆΠΈΡ‚Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, (*89)

{
    "require":{
            "larakit/lk-staticfiles":"*"
    },
}

Π’ Π°Π²Ρ‚ΠΎΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ» init.php Π²ΠΏΠΈΡˆΠΈΡ‚Π΅ инструкции ΠΏΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ ΠΈ снова ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ зависимости ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π΄ΠΎ создаваСмого ΠΏΠ°ΠΊΠ΅Ρ‚Π°, (*90)

<?php
\Larakit\StaticFiles\Manager::package('larakit/sf-bootstrap')
    ->usePackage('larakit/sf-jquery')
    ->js('//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/js/bootstrap.min.js')
    ->css('//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/css/bootstrap.min.css');

БобствСнно всС! Для использования Π²Π°ΠΌ достаточно ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΠΊΠΎΠΌΠΏΠΎΠ·Π΅Ρ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° "require": "/sf-ваш_ΠΏΠ°ΠΊΠ΅Ρ‚", (*91)

7.2 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ собствСнных ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² с распространСниСм статики ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π°

Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ создаСм composer.json ΠΈ init.php. ЕдинствСнноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅: Π² init.php прописываСм Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ со статикой, ΠΎΡ‚ΠΊΡƒΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ производится Π΅Π΅ Π²Ρ‹ΠΊΠ»Π°Π΄ΠΊΠ° Π² DOCUMENT_ROOT ΠΈΠ· vendor., (*92)


<?php \Larakit\StaticFiles\Manager::package('larakit/sf-larakit-js') //ΠΈΠ· этого ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° Π²Ρ‹ΠΊΠ»Π°Π΄ΠΊΠ° ->setSourceDir('public') //ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ зависимый ΠΏΠ°ΠΊΠ΅Ρ‚ ΠŸΠ•Π Π•Π” Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ ->usePackage('larakit/sf-jquery') //ΠΈΡΠΊΠ°Ρ‚ΡŒ JS Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ SOurceDir ->jsPackage('js/larakit.js');

это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹ΠΊΠ»Π°Π΄ΠΊΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ взято содСрТимоС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, (*93)

./vendor/larakit/sf-larakit-js/public

ΠΈ Π²Ρ‹Π»ΠΎΠΆΠ΅Π½ΠΎ Π², (*94)

./public/packages/larakit/sf-larakit-js/

Π‘Π°ΠΌΠ° Π²Ρ‹ΠΊΠ»Π°Π΄ΠΊΠ° напомню производится ΠΏΡƒΡ‚Π΅ΠΌ запуска ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:, (*95)

php artisan larastatic:deploy

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° выполняСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия: - Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ Π² ./public/packages/ всС зарСгистрированныС Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· vendor ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² - обновляСт Ρ…ΡΡˆ статики, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сбросился кэш Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° (измСняСтся URL ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… стилСй ΠΈ скриптов), (*96)

8. ΠŸΡ€Π°Π²ΠΈΠ»Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ/Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²

Π’ процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ такая Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎΠ΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². НапримСр, Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ "larakit/sf-jquery" Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ всС Ρ€ΠΎΡƒΡ‚Ρ‹ Π°Π΄ΠΌΠΈΠ½ΠΊΠΈ с прСфиксом "admin.", Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ сСйчас Ρ‚Ρ€ΠΈ Ρ€ΠΎΡƒΡ‚Π°: - admin - admin.users - admin.news - admin.pages, (*97)

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈΡŽ для управлСния ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² пишСм Π² Ρ„Π°ΠΉΠ»Π΅ ./app/Http/staticfiles.php:, (*98)

8.1 ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° jQuery Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ страницС Π°Π΄ΠΌΠΈΠ½ΠΊΠΈ

\Larakit\StaticFiles\Manager::package('larakit/sf-jquery')
    ->setExclude('admin');

8.2 ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° jQuery Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… страницах Π°Π΄ΠΌΠΈΠ½ΠΊΠΈ

\Larakit\StaticFiles\Manager::package('larakit/sf-jquery')
    ->setExclude('admin.*');

8.3 ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° jQuery Π²ΠΎ всСй Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅

\Larakit\StaticFiles\Manager::package('larakit/sf-jquery')
    ->setExclude('admin*');

8.4 ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° jQuery Π²ΠΎ всСй Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅, ΠΊΡ€ΠΎΠΌΠ΅ страницы управлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ

\Larakit\StaticFiles\Manager::package('larakit/sf-jquery')
    ->setExclude('admin*')
    ->setInclude('admin.users');

8.5 ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° jQuery Π½Π° всСм сайтС, ΠΊΡ€ΠΎΠΌΠ΅ страницы управлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ

\Larakit\StaticFiles\Manager::package('larakit/sf-jquery')
    ->setExclude('*')
    ->setInclude('admin.users');

Π£ΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ мСстами, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π΅Π΅ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€ΠΎΡƒΡ‚, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ производится ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π°Π²Ρ‚ΠΎΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² статики., (*99)

...

Profit!

The Versions

01/03 2018

dev-master

9999999-dev

[Larakit] Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Laravel для управлСния статикой (сборка Π² ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ», сТатиС JS/CSS, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ…ΡΡˆΠ° Π² URL для сброса кэша Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°)

  Sources   Download

MIT

The Requires

 

by Alexey Berdnikov

laravel css js laravel 5 larakit larastatic