Composer plugin for cleaning up unused files from packages.

Overview

Composer Cleanup Plugin

Remove tests & documentation from the vendor dir. Based on laravel-vendor-cleanup but implemented as a Composer Plugin instead of a Laravel command.

Usually disk size shouldn't be a problem, but when you have to use FTP to deploy or have very limited disk space, you can use this package to cut down the vendor directory by deleting files that aren't used in production (tests/docs etc).

Note: This package is still experimental, usage in production is not recommended. In normal circumstances, you shouldn't care about disk space! Try deploying with SSH/Git instead.

Install

Require this package in your composer.json:

  "barryvdh/composer-cleanup-plugin": "0.2.x"

Usage

This plugin will work automatically on any packages installed as dist. Therefore, if you are using it to build a package archive, simply run composer install with the --prefer-dist option.

What does it do?

For every installed or updated package in the default list, in general:

  1. Remove documentation, such as README files, docs folders, etc.
  2. Remove tests, PHPUnit configs, and other build/CI configuration.

Some packages don't obey the general rules, and remove more/less files. Packages that do not have rules added are ignored.

Adding rules

Please submit a PR to src/CleanupRules.php to add more rules for packages. Make sure you test them first, sometimes tests dirs are classmapped and will error when deleted.

Comments
  • Doc/Test files in subdirectories

    Doc/Test files in subdirectories

    In my test project some files aren't deleted (former laravel-vendor-cleanup did):

    vendor/laravel/framework/src/Illuminate/Database/README.md vendor/laravel/framework/src/Illuminate/Queue/README.md vendor/laravel/framework/src/Illuminate/Workbench/stubs/phpunit.xml vendor/nikic/php-parser/grammar/README.md

    what should we do about it? README default rules - is it secure? Package specific rules?

    opened by mmodler 3
  • Update composer plugin api requirement

    Update composer plugin api requirement

    Due to the composer v2 release, the composer.json needs to be updated.

    Releasing another version (0.3.0 ?) of the plugin should fix the error message. I didn't any breaking changes in the upgrading file but maybe you could re-check before merging.

    An issue is already open for this #26

    opened by kranack 2
  • Add a catch all rule which will use a default rule

    Add a catch all rule which will use a default rule

    The catch all rule would clean all other packages which do not match an existing rule, by using a default rule; such as array($docs, $tests) This would allow all packages to be cleaned

    opened by mbrowniebytes 2
  • composer-cleanup-plugin or composer-cleanup-login?

    composer-cleanup-plugin or composer-cleanup-login?

    Hi barry,

    the github repo is named composer-cleanup-plugin, the composer.json name is composer-cleanup-login. Perhaps you like to normalize this to avoid confusion?

    opened by mmodler 2
  • Problem with glob() pattern length

    Problem with glob() pattern length

    Hi barry,

    as a user of the former laravel cleanup plugin, i now tried your new composer cleanup plugin.

    I run composer under win7 with git bash, and there the path length is limited to 260 chars:

    Could not parse symfony/translation/Symfony/Component/Translation
    ({README*,CHANGELOG*,FAQ*,CONTRIBUTING*,HISTORY*,UPGRADING*,UPGRADE*,package*,demo,example,examples,doc,docs,readme*,.travis.yml,.scrutinizer.yml,phpunit.xml*,phpunit.php,test,tests,Tests}):
    glob(): Pattern exceeds the maximum allowed length of 260 characters
    

    I think a solution could be splitting patterns into multiple glob's? Might be a little slower, but composer operations aren't perfomance critical i think?

    Would you change the glob code to work on win or accept a pr?

    opened by mmodler 1
  • Added laravel 5.1 rules + Reorder

    Added laravel 5.1 rules + Reorder

    I sorted all rules aphabetically, because with different laravel versions and package requirements this makes more sense. Now packages in rules file are in the same order as in vendor folder.

    opened by mmodler 0
  • install error in Composer 2

    install error in Composer 2

    Can not install after moving to Composer2.

      - Installing barryvdh/composer-cleanup-plugin (dev-master e123550): Extracting archive
    PHP Fatal error:  Uncaught Error: Undefined constant Composer\Script\ScriptEvents::POST_PACKAGE_INSTALL in /htdocs/vendor/barryvdh/composer-cleanup-plugin/src/CleanupPlugin.php:62
    Stack trace:
    #0 phar:///htdocs/composer.phar/src/Composer/EventDispatcher/EventDispatcher.php(435): Barryvdh\Composer\CleanupPlugin::getSubscribedEvents()
    #1 phar:///htdocs/composer.phar/src/Composer/Plugin/PluginManager.php(415): Composer\EventDispatcher\EventDispatcher->addSubscriber()
    #2 phar:///htdocs/composer.phar/src/Composer/Plugin/PluginManager.php(293): Composer\Plugin\PluginManager->addPlugin()
    #3 phar:///htdocs/composer.phar/src/Composer/Installer/PluginInstaller.php(79): Composer\Plugin\PluginManager->registerPackage()
    #4 [internal function]: Composer\Installer\PluginInstaller->Composer\Installer\{closure}()
    #5 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/FulfilledPromise.php(20): call_user_func()
    #6 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(74): React\Promise\FulfilledPromise->then()
    #7 [internal function]: React\Promise\Deferred->React\Promise\{closure}()
    #8 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(166): call_user_func()
    #9 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(95): React\Promise\Deferred->processQueue()
    #10 [internal function]: React\Promise\Deferred->resolve()
    #11 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/FulfilledPromise.php(20): call_user_func()
    #12 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(76): React\Promise\FulfilledPromise->then()
    #13 [internal function]: React\Promise\Deferred->React\Promise\{closure}()
    #14 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(166): call_user_func()
    #15 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(95): React\Promise\Deferred->processQueue()
    #16 [internal function]: React\Promise\Deferred->resolve()
    #17 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/FulfilledPromise.php(20): call_user_func()
    #18 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(74): React\Promise\FulfilledPromise->then()
    #19 [internal function]: React\Promise\Deferred->React\Promise\{closure}()
    #20 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(166): call_user_func()
    #21 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(95): React\Promise\Deferred->processQueue()
    #22 [internal function]: React\Promise\Deferred->resolve()
    #23 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/FulfilledPromise.php(20): call_user_func()
    #24 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(76): React\Promise\FulfilledPromise->then()
    #25 [internal function]: React\Promise\Deferred->React\Promise\{closure}()
    #26 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(166): call_user_func()
    #27 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(95): React\Promise\Deferred->processQueue()
    #28 [internal function]: React\Promise\Deferred->resolve()
    #29 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/FulfilledPromise.php(20): call_user_func()
    #30 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(76): React\Promise\FulfilledPromise->then()
    #31 [internal function]: React\Promise\Deferred->React\Promise\{closure}()
    #32 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(166): call_user_func()
    #33 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(95): React\Promise\Deferred->processQueue()
    #34 [internal function]: React\Promise\Deferred->resolve()
    #35 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/FulfilledPromise.php(20): call_user_func()
    #36 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(76): React\Promise\FulfilledPromise->then()
    #37 [internal function]: React\Promise\Deferred->React\Promise\{closure}()
    #38 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(166): call_user_func()
    #39 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(95): React\Promise\Deferred->processQueue()
    #40 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Promise.php(42): React\Promise\Deferred->resolve()
    #41 [internal function]: React\Promise\Promise->React\Promise\{closure}()
    #42 phar:///htdocs/composer.phar/src/Composer/Util/ProcessExecutor.php(322): call_user_func()
    #43 phar:///htdocs/composer.phar/src/Composer/Util/Loop.php(98): Composer\Util\ProcessExecutor->countActiveJobs()
    #44 phar:///htdocs/composer.phar/src/Composer/Installer/InstallationManager.php(497): Composer\Util\Loop->wait()                                                  [28/1832]
    #45 phar:///htdocs/composer.phar/src/Composer/Installer/InstallationManager.php(470): Composer\Installer\InstallationManager->waitOnPromises()
    #46 phar:///htdocs/composer.phar/src/Composer/Installer/InstallationManager.php(390): Composer\Installer\InstallationManager->executeBatch()
    #47 phar:///htdocs/composer.phar/src/Composer/Installer/InstallationManager.php(282): Composer\Installer\InstallationManager->downloadAndExecuteBatch()
    #48 phar:///htdocs/composer.phar/src/Composer/Installer.php(754): Composer\Installer\InstallationManager->execute()
    #49 phar:///htdocs/composer.phar/src/Composer/Installer.php(583): Composer\Installer->doInstall()
    #50 phar:///htdocs/composer.phar/src/Composer/Installer.php(279): Composer\Installer->doUpdate()
    #51 phar:///htdocs/composer.phar/src/Composer/Command/UpdateCommand.php(248): Composer\Installer->run()
    #52 phar:///htdocs/composer.phar/vendor/symfony/console/Command/Command.php(245): Composer\Command\UpdateCommand->execute()
    #53 phar:///htdocs/composer.phar/vendor/symfony/console/Application.php(835): Symfony\Component\Console\Command\Command->run()
    #54 phar:///htdocs/composer.phar/vendor/symfony/console/Application.php(185): Symfony\Component\Console\Application->doRunCommand()
    #55 phar:///htdocs/composer.phar/src/Composer/Console/Application.php(336): Symfony\Component\Console\Application->doRun()
    #56 phar:///htdocs/composer.phar/vendor/symfony/console/Application.php(117): Composer\Console\Application->doRun()
    #57 phar:///htdocs/composer.phar/src/Composer/Console/Application.php(131): Symfony\Component\Console\Application->run()
    #58 phar:///htdocs/composer.phar/bin/composer(83): Composer\Console\Application->run()
    #59 /htdocs/composer.phar(29): require('...')
    #60 {main}
      thrown in /htdocs/vendor/barryvdh/composer-cleanup-plugin/src/CleanupPlugin.php on line 62
    
    Fatal error: Uncaught Error: Undefined constant Composer\Script\ScriptEvents::POST_PACKAGE_INSTALL in /htdocs/vendor/barryvdh/composer-cleanup-plugin/src/CleanupPlugin.php
    :62
    Stack trace:
    #0 phar:///htdocs/composer.phar/src/Composer/EventDispatcher/EventDispatcher.php(435): Barryvdh\Composer\CleanupPlugin::getSubscribedEvents()
    #1 phar:///htdocs/composer.phar/src/Composer/Plugin/PluginManager.php(415): Composer\EventDispatcher\EventDispatcher->addSubscriber()
    #2 phar:///htdocs/composer.phar/src/Composer/Plugin/PluginManager.php(293): Composer\Plugin\PluginManager->addPlugin()
    #3 phar:///htdocs/composer.phar/src/Composer/Installer/PluginInstaller.php(79): Composer\Plugin\PluginManager->registerPackage()
    #4 [internal function]: Composer\Installer\PluginInstaller->Composer\Installer\{closure}()
    #5 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/FulfilledPromise.php(20): call_user_func()
    #6 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(74): React\Promise\FulfilledPromise->then()
    #7 [internal function]: React\Promise\Deferred->React\Promise\{closure}()
    #8 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(166): call_user_func()
    #9 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(95): React\Promise\Deferred->processQueue()
    #10 [internal function]: React\Promise\Deferred->resolve()
    #11 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/FulfilledPromise.php(20): call_user_func()
    #12 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(76): React\Promise\FulfilledPromise->then()
    #13 [internal function]: React\Promise\Deferred->React\Promise\{closure}()
    #14 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(166): call_user_func()
    #15 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(95): React\Promise\Deferred->processQueue()
    #16 [internal function]: React\Promise\Deferred->resolve()
    #17 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/FulfilledPromise.php(20): call_user_func()
    #18 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(74): React\Promise\FulfilledPromise->then()
    #19 [internal function]: React\Promise\Deferred->React\Promise\{closure}()
    #20 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(166): call_user_func()
    #21 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(95): React\Promise\Deferred->processQueue()
    #22 [internal function]: React\Promise\Deferred->resolve()
    #23 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/FulfilledPromise.php(20): call_user_func()
    #24 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(76): React\Promise\FulfilledPromise->then()
    #25 [internal function]: React\Promise\Deferred->React\Promise\{closure}()
    #26 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(166): call_user_func()
    #27 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(95): React\Promise\Deferred->processQueue()
    #28 [internal function]: React\Promise\Deferred->resolve()
    #29 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/FulfilledPromise.php(20): call_user_func()
    #30 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(76): React\Promise\FulfilledPromise->then()
    #31 [internal function]: React\Promise\Deferred->React\Promise\{closure}()
    #32 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(166): call_user_func()
    #33 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(95): React\Promise\Deferred->processQueue()
    #34 [internal function]: React\Promise\Deferred->resolve()
    #35 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/FulfilledPromise.php(20): call_user_func()
    #36 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(76): React\Promise\FulfilledPromise->then()
    #37 [internal function]: React\Promise\Deferred->React\Promise\{closure}()
    #38 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(166): call_user_func()
    #39 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Deferred.php(95): React\Promise\Deferred->processQueue()
    #40 phar:///htdocs/composer.phar/vendor/react/promise/src/React/Promise/Promise.php(42): React\Promise\Deferred->resolve()
    #41 [internal function]: React\Promise\Promise->React\Promise\{closure}()
    #42 phar:///htdocs/composer.phar/src/Composer/Util/ProcessExecutor.php(322): call_user_func()
    #43 phar:///htdocs/composer.phar/src/Composer/Util/Loop.php(98): Composer\Util\ProcessExecutor->countActiveJobs()
    #44 phar:///htdocs/composer.phar/src/Composer/Installer/InstallationManager.php(497): Composer\Util\Loop->wait()
    #45 phar:///htdocs/composer.phar/src/Composer/Installer/InstallationManager.php(470): Composer\Installer\InstallationManager->waitOnPromises()
    #46 phar:///htdocs/composer.phar/src/Composer/Installer/InstallationManager.php(390): Composer\Installer\InstallationManager->executeBatch()
    #47 phar:///htdocs/composer.phar/src/Composer/Installer/InstallationManager.php(282): Composer\Installer\InstallationManager->downloadAndExecuteBatch()
    #48 phar:///htdocs/composer.phar/src/Composer/Installer.php(754): Composer\Installer\InstallationManager->execute()
    #49 phar:///htdocs/composer.phar/src/Composer/Installer.php(583): Composer\Installer->doInstall()
    #50 phar:///htdocs/composer.phar/src/Composer/Installer.php(279): Composer\Installer->doUpdate()
    #51 phar:///htdocs/composer.phar/src/Composer/Command/UpdateCommand.php(248): Composer\Installer->run()
    #52 phar:///htdocs/composer.phar/vendor/symfony/console/Command/Command.php(245): Composer\Command\UpdateCommand->execute()
    #53 phar:///htdocs/composer.phar/vendor/symfony/console/Application.php(835): Symfony\Component\Console\Command\Command->run()
    #54 phar:///htdocs/composer.phar/vendor/symfony/console/Application.php(185): Symfony\Component\Console\Application->doRunCommand()
    #55 phar:///htdocs/composer.phar/src/Composer/Console/Application.php(336): Symfony\Component\Console\Application->doRun()
    #56 phar:///htdocs/composer.phar/vendor/symfony/console/Application.php(117): Composer\Console\Application->doRun()
    #57 phar:///htdocs/composer.phar/src/Composer/Console/Application.php(131): Symfony\Component\Console\Application->run()
    #58 phar:///htdocs/composer.phar/bin/composer(83): Composer\Console\Application->run()
    #59 /htdocs/composer.phar(29): require('...')
    #60 {main}
      thrown in /htdocs/vendor/barryvdh/composer-cleanup-plugin/src/CleanupPlugin.php on line 62
    
    
    opened by rutkas 0
  • Fatal Error on Install

    Fatal Error on Install

    I have composer 2.1.5 and PHP 7.4. When I run:

    composer require —dev barryvdh/composer-cleanup-plugin

    I get this error:

    PHP Fatal error: Uncaught Error: Undefined class constant 'POST_PACKAGE_INSTALL' in .../vendor/barryvdh/composer-cleanup-plugin/src/CleanupPlugin.php:62

    opened by devbanana 0
  • In normal circumstances, you shouldn't care about disk space - wrong :-)

    In normal circumstances, you shouldn't care about disk space - wrong :-)

    When using docker images EVERYTHING should be done to reduce docker image size, so the statement

    In normal circumstances, you shouldn't care about disk space

    is actually incorrect for many of us :)

    opened by PhilETaylor 5
  • Expand documentation

    Expand documentation

    When I suggested this plugin to my team, they had the following questions, which I think are valid, but are not mentioned in the readme:

    1. Does this plugin only work for a pre-defined list of packages?

      Just state that in the docs.

    2. Which packages does it work for?

      Link to this list.

    3. Which files will it remove?

      Explain that it knows which specific files to remove, in addition to these.

    4. Can it also remove docs and tests from all other packages, at least by default?

      Just mention that it cannot. But this would be a nice feature.

    5. Can I configure which files to include/exclude from removal, in addition to the pre-configured ones?

      Explain that this is not possible. But again, this is a feature that would be great to see.

    opened by XedinUnknown 0
Releases(v0.3.0)
Owner
Barry vd. Heuvel
Barry vd. Heuvel
A laravel package to generate class files from stub files.

Laravel Stub Generator A php laravel package to generate useable php files from given stub files . Installation Require the package using composer: co

Touhidur Rahman 31 Dec 29, 2022
A Laravel package that allows you to use multiple ".env" files in a precedent manner. Use ".env" files per domain (multi-tentant)!

Laravel Multi ENVs Use multiple .envs files and have a chain of precedence for the environment variables in these different .envs files. Use the .env

Allyson Silva 48 Dec 29, 2022
📦 Adds Laravel Packages Support to Lumen and Vendor Publish Artisan Command.

Laravel Package Support for Lumen: Makes Lumen compatible with Laravel Packages. You can use any Laravel Packages in Lumen by installing Larasupport Package.

Irfaq Syed 127 Dec 17, 2022
A package for Laravel to perform basic git commands on locally integrated packages.

A package for Laravel to perform basic git commands on locally integrated development packages. If working within multiple local development packages or repositories at once this package is meant to ease the burden of navigating to each individual repository to perform basic git commands.

null 3 Jul 26, 2022
Watch your Laravel app for unwanted changes when working with third-party packages.

Project Secure This package installs a Composer plugin that reports unwanted changes to your Laravel project code after installing or updating a third

The Laravel Hacker 3 Nov 3, 2021
Tools for creating Laravel packages

Tools for creating Laravel packages This package contains a PackageServiceProvider that you can use in your packages to easily register config files,

Spatie 526 Dec 29, 2022
Collection of agnostic PHP Functions and helpers with zero dependencies to use as foundation in packages and other project

Collection of agnostic PHP Functions and helpers This package provides a lot of very usefull agnostic helpers to use as foundation in packages and oth

padosoft 54 Sep 21, 2022
Allow your model to record the creation, update and deletion of user fingerprints in laravel packages

This laravel package will allow your models to record the the created, updated and deleted by User FingerPrints

Managemize 4 Mar 11, 2022
Service manager for Slim compatible with Laravel packages

SlimServices SlimServices is a service manager for the Slim PHP microframework based on Laravel 4 service providers and DI container, allowing you to

its 76 Jul 23, 2022
This is a Composer plugin that provides an automated version of Country Codes database.

Country Codes This is a Composer plugin that provides an automated version of Country Codes database. This database is include: country iso codes, cou

Robert Nicjoo 19 Sep 3, 2022
If you are beginner in WordPress plugin development or if you want to develop your own store product plugin you use this plugin

hirwa-products-plugin If you are beginner in WordPress plugin development or if you want to develop your own store product plugin you use this plugin

NIYIBIZI HIRWA 1 Aug 23, 2022
Stash view is a composer package for Laravel which caches views using Russian Doll Caching methodology.

Stash View Stash view is a composer package for Laravel which caches views using Russian Doll Caching methodology. What is Russian Doll Caching ? It i

Bhushan Gaikwad 18 Nov 20, 2022
Composer package which adds support for HTML5 elements using Laravels Form interface (e.g. Form::date())

Laravel HTML 5 Inputs Composer package which adds support for HTML5 elements by extending Laravel's Form interface (e.g. Form::date()) Adds support fo

Small Dog Studios 11 Oct 13, 2020
Composer repository implementation for ZIPs.

Release Belt — Composer repo for ZIPs Release Belt is a Composer repository, which serves to quickly integrate third–party non–Composer releases into

Andrey Savchenko 151 Oct 17, 2022
A Composer script to lint a Travis CI configuration file.

composer-travis-lint composer-travis-lint is a Composer script that lints a project/micro-package its Travis CI configuration aka its .travis.yml file

Raphael Stolt 6 Jan 31, 2020
Bash/Shell autocompletion for Composer

Bash/Shell Autocompletion for Composer composer-autocomplete provides Bash/Shell autocompletion for Composer. Built by Bram(us) Van Damme (https://www

Bramus! 92 Sep 19, 2022
Slim Jam is a demo application to provide examples for composer package, PHPSpreadsheet, Shopify API etc. usages.

SLIM JAM Slim Jam is a demo application to provide examples for composer package, PHPSpreadsheet, Shopify API etc. usages. This project aims to take a

UÄźur ARICI 2 Jan 9, 2022
A package that adds view-composer like feature to Inertia.js Laravel adapter

Kinetic A package that adds view-composer like feature to Inertia.js Laravel adapter. Use to be able to share props based on the Inertia component nam

Marvin Quezon 76 Dec 12, 2022
Caches responses as static files on disk for lightning fast page loads.

Laravel Page Cache This package allows you to easily cache responses as static files on disk for lightning fast page loads. Introduction Installation

Joseph Silber 1k Dec 16, 2022