{"id":13803722,"url":"https://github.com/civicrm/composer-compile-plugin","last_synced_at":"2026-01-11T16:52:50.494Z","repository":{"id":42528189,"uuid":"294022182","full_name":"civicrm/composer-compile-plugin","owner":"civicrm","description":"Allow composer packages to define compilation steps","archived":false,"fork":false,"pushed_at":"2025-05-05T07:12:24.000Z","size":312,"stargazers_count":12,"open_issues_count":1,"forks_count":8,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-05-05T08:25:07.745Z","etag":null,"topics":["build","composer","composer-plugin","php"],"latest_commit_sha":null,"homepage":"","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/civicrm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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,"zenodo":null}},"created_at":"2020-09-09T06:23:31.000Z","updated_at":"2025-05-05T07:12:17.000Z","dependencies_parsed_at":"2024-05-02T15:58:34.259Z","dependency_job_id":"9b482434-45fc-4575-a978-55e0441253b0","html_url":"https://github.com/civicrm/composer-compile-plugin","commit_stats":{"total_commits":163,"total_committers":5,"mean_commits":32.6,"dds":0.09815950920245398,"last_synced_commit":"0933ff53cd720ddcb24bdc5984879673ea1e0cbe"},"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/civicrm%2Fcomposer-compile-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/civicrm%2Fcomposer-compile-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/civicrm%2Fcomposer-compile-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/civicrm%2Fcomposer-compile-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/civicrm","download_url":"https://codeload.github.com/civicrm/composer-compile-plugin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253981929,"owners_count":21994359,"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":["build","composer","composer-plugin","php"],"created_at":"2024-08-04T01:00:37.275Z","updated_at":"2026-01-11T16:52:50.482Z","avatar_url":"https://github.com/civicrm.png","language":"PHP","funding_links":[],"categories":["Plugins"],"sub_categories":["Support"],"readme":"# Composer Compile Plugin\n\nThe \"Compile\" plugin enables developers of PHP libraries to define free-form \"compilation\" tasks, such as:\n\n* Converting SCSS to CSS\n* Generating PHP wrappers based on an XML schema\n\nFor site-builders who use these PHP libraries, compilation tasks run seamlessly during the regular download (`composer install`, etc).\n\nFor developers who publish PHP libraries, a task can be as simple as:\n\n```json\n{\n  \"require\": {\"civicrm/composer-compile-plugin\": \"~0.14\"},\n  \"extra\": {\n    \"compile\": [\n      {\"run\": \"@sh cd css; cat one.css two.css three.css \u003e all.css\"}\n    ]\n  }\n}\n```\n\nTasks may be defined in several ways, including:\n\n* Shell command (`@sh cat file-{1,2,3} \u003e big-file`)\n* PHP method (`@php-method MyBuilder::build`)\n* PHP eval (`@php-eval file_put_contents('big-file', make_big_file());`)\n* PHP script file (`@php-script my-script.php`)\n* Composer subcommand (`@composer dump-autoload`)\n\nFeatures:\n\n* Easy to enable. No manual configuration for downstream site-builders. Framework agnostic.\n* Plays well with other `composer` tooling, like [forked repositories](https://matthewsetter.com/series/tooling/composer/forked-repositories/), [composer-patches](https://github.com/cweagans/composer-patches), [composer-locator](https://github.com/mindplay-dk/composer-locator), [composer-downloads](https://github.com/civicrm/composer-downloads-plugin), and the autoloader.\n* Allows library repos to remain \"clean\" without committing build artifacts.\n* Runs locally in PHP. Does not require external/hosted services or additional interpreters.\n* Supports file monitoring for automatic rebuilds (`composer compile:watch`)\n* Enforces permission model to address historical concerns about `composer` hooks and untrusted libraries.\n* Integration-tests pass on both `composer` v1.10 and v2.0.\n\n## Documentation\n\n* [site-build.md](doc/site-build.md): Managing the root package (for site-builders)\n* [tasks.md](doc/tasks.md): Working with tasks (for library developers)\n* [evaluation.md](doc/evaluation.md): Evaluate and compare against similar options\n* [develop.md](doc/develop.md): How to work with `composer-compile-plugin.git` (for plugin-development)\n\n## See also\n\n* [composer-compile-lib](https://github.com/civicrm/composer-compile-lib): Small library of opinionated helpers/examples for specific compilation tasks -- meta-PHP, SCSS, etc\n* [composer#1193](https://github.com/composer/composer/issues/1193): Old discussion thread about post-install hooks for dependencies\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcivicrm%2Fcomposer-compile-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcivicrm%2Fcomposer-compile-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcivicrm%2Fcomposer-compile-plugin/lists"}