{"id":13803529,"url":"https://github.com/fxpio/foxy","last_synced_at":"2025-04-13T00:42:23.443Z","repository":{"id":24909422,"uuid":"102729244","full_name":"fxpio/foxy","owner":"fxpio","description":"A fast, reliable, and secure NPM/Yarn/pnpm bridge for Composer","archived":false,"fork":false,"pushed_at":"2024-07-29T10:15:14.000Z","size":262,"stargazers_count":175,"open_issues_count":5,"forks_count":22,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-04-13T00:42:16.173Z","etag":null,"topics":["bridge","composer","composer-plugin","dependency-manager","foxy","npm","php","yarn"],"latest_commit_sha":null,"homepage":"https://foxypkg.com","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fxpio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["francoispluchino"],"custom":["https://paypal.me/francoispluchino"]}},"created_at":"2017-09-07T11:30:07.000Z","updated_at":"2024-11-30T05:32:00.000Z","dependencies_parsed_at":"2024-05-02T15:57:57.810Z","dependency_job_id":"78b4554a-b6cb-436c-a508-9e0f5d045ed7","html_url":"https://github.com/fxpio/foxy","commit_stats":{"total_commits":184,"total_committers":11,"mean_commits":"16.727272727272727","dds":0.07608695652173914,"last_synced_commit":"9b835b9fd02f81a9fc4d3de777bd08385509a5e3"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fxpio%2Ffoxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fxpio%2Ffoxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fxpio%2Ffoxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fxpio%2Ffoxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fxpio","download_url":"https://codeload.github.com/fxpio/foxy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248650417,"owners_count":21139672,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bridge","composer","composer-plugin","dependency-manager","foxy","npm","php","yarn"],"created_at":"2024-08-04T01:00:34.708Z","updated_at":"2025-04-13T00:42:23.399Z","avatar_url":"https://github.com/fxpio.png","language":"PHP","readme":"\u003cp align=\"center\"\u003e\u003ca href=\"https://foxypkg.com\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://foxypkg.com/assets/img/logo.svg\" width=\"260\" alt=\"Foxy\"\u003e\n\u003c/a\u003e\u003c/p\u003e\n\n[![Latest Version](https://img.shields.io/packagist/v/foxy/foxy.svg)](https://packagist.org/packages/foxy/foxy)\n[![Build Status](https://img.shields.io/travis/com/fxpio/foxy.svg)](https://travis-ci.com/github/fxpio/foxy)\n[![Coverage Status](https://img.shields.io/coveralls/github/fxpio/foxy.svg)](https://coveralls.io/r/fxpio/foxy)\n[![Packagist Downloads](https://img.shields.io/packagist/dt/foxy/foxy.svg)](https://packagist.org/packages/foxy/foxy/stats)\n\nFoxy is a Composer plugin to automate the validation, installation, updating and removing of PHP libraries\nasset dependencies (javaScript, stylesheets, etc.) defined in the NPM `package.json` file of the project and\nPHP libraries during the execution of Composer. It handles restoring the project state in case\n[NPM](https://www.npmjs.com) or [Yarn](https://yarnpkg.com) or [pnpm](https://pnpm.io) terminates with an error. All features and tools\nare available: [Npmrc](https://docs.npmjs.com/files/npmrc), [Yarnrc](https://yarnpkg.com/en/docs/yarnrc),\n[Webpack](https://webpack.js.org), [Gulp](https://gulpjs.com), [Grunt](https://gruntjs.com),\n[Babel](https://babeljs.io), [TypeScript](https://www.typescriptlang.org), [Scss/Sass](http://sass-lang.com),\n[Less](http://lesscss.org), etc.\n\nIt is certain that each language has its own dependency management system, and that it is highly recommended to use\neach package manager. NPM, Yarn or pnpm works very well when the asset dependencies are managed only in the PHP project,\nbut when you create PHP libraries that using assets, there is no way to automatically add asset dependencies,\nand most importantly, no validation of versions can be done automatically. You must tell the developers\nthe list of asset dependencies that using by your PHP library, and you must ask him to add manually the asset\ndependencies to its asset manager of his project.\n\nHowever, another solution exist - what many projects propose - you must add the assets in the folder of the\nPHP library (like `/assets`, `/Resources/public`). Of course, with this method, the code is duplicated, it\npollutes the source code of the PHP library, no version management/validation is possible, and it is even\nless possible, to use all tools such as Babel, Scss, Less, etc ...\n\nFoxy focuses solely on automation of the validation, addition, updating and deleting of the dependencies in\nthe definition file of the asset package, while restoring the project state, as well as PHP dependencies if\nNPM, Yarn or pnpm terminates with an error.\n\n#### It is Fast\n\nFoxy retrieves the list of all Composer dependencies to inject the asset dependencies in the file `package.json`,\nand leaves the execution of the analysis, validation and downloading of the libraries to NPM, Yarn or pnpm. Therefore,\nno VCS Repository of Composer is used for analyzing the asset dependencies, and you keep the performance\nof native package manager used.\n\n#### It is Reliable\n\nFoxy creates mock packages of the PHP libraries containing only the asset dependencies definition file\nin a local directory, and associates these packages in the asset dependencies definition file of the\nproject. Given that Foxy does not manipulate any asset dependencies, and let alone the version constraints,\nthis allows NPM, Yarn or pnpm to solve the asset dependencies without any intermediary. Moreover, the entire\nvalidation with the lock file and installation process is left to NPM, Yarn or pnpm.\n\n#### It is Secure\n\nFoxy restores the Composer lock file with all its PHP dependencies, as well as the asset dependencies\ndefinition file, in the previous state if NPM, Yarn or pnpm ends with an error.\n\nFeatures\n--------\n\n- Compatible with [Symfony Webpack Encore](http://symfony.com/doc/current/frontend.html)\n  and [Laravel Mix](https://laravel.com/docs/master/mix)\n- Works with Node.js and NPM, Yarn or pnpm\n- Works with the asset dependencies defined in the `package.json` file for projects and PHP libraries\n- Works with the installation in the dependencies of the project or libraries (not in global mode)\n- Works with public or private repositories\n- Works with all features of Composer, NPM, Yarn and pnpm\n- Retains the native performance of Composer, NPM, Yarn and pnpm\n- Restores previous versions of PHP dependencies and the lock file if NPM, Yarn or pnpm terminates with an error\n- Validates the NPM, Yarn or pnpm version with a version range\n- Configuration of the plugin per project, globally or with the environment variables:\n  - Enable/disable the plugin\n  - Choose the asset manager: NPM, Yarn or pnpm (`npm` is used by default)\n  - Lock the version of the asset manager with the Composer version range\n  - Define the custom path of binary of the asset manager\n  - Enable/disable the fallback for the asset package file of the project\n  - Enable/disable the fallback for the Composer lock file and its dependencies\n  - Enable/disable the running of asset manager to keep only the manipulation of the asset package file\n  - Override the install command options for the asset manager\n  - Override the update command options for the asset manager\n  - Define the custom path of the mock package of PHP library\n  - Enable/disable manually the asset packages for the PHP libraries\n- Works with the Composer commands:\n  - `install`\n  - `update`\n  - `require`\n  - `remove`\n\nDocumentation\n-------------\n\n- [Guide](Resources/doc/index.md)\n- [FAQs](Resources/doc/faqs.md)\n- [Release Notes](https://github.com/fxpio/foxy/releases)\n\nInstallation\n------------\n\nInstallation instructions are located in [the guide](Resources/doc/index.md).\n\nLicense\n-------\n\nFoxy is released under the MIT license. See the complete license in:\n\n[LICENSE](LICENSE)\n\nAbout\n-----\n\nFoxy is a [François Pluchino](https://github.com/francoispluchino) initiative.\nSee also the list of [contributors](https://github.com/fxpio/foxy/contributors).\n\nReporting an issue or a feature request\n---------------------------------------\n\nIssues and feature requests are tracked in the [Github issue tracker](https://github.com/fxpio/foxy/issues).\n\nAcknowledgments\n---------------\n\nThanks to [Tobias Munk](https://github.com/schmunk42) to have suggesting this name\n","funding_links":["https://github.com/sponsors/francoispluchino","https://paypal.me/francoispluchino"],"categories":["Plugins"],"sub_categories":["Support"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffxpio%2Ffoxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffxpio%2Ffoxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffxpio%2Ffoxy/lists"}