PHPackages                             silverstripe/vendor-plugin - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. silverstripe/vendor-plugin

ActiveComposer-plugin[Utility &amp; Helpers](/categories/utility)

silverstripe/vendor-plugin
==========================

Allows vendor modules to expose directories to the webroot

3.0.0(1y ago)52.6M↓12.6%16[5 issues](https://github.com/silverstripe/vendor-plugin/issues)[1 PRs](https://github.com/silverstripe/vendor-plugin/pulls)20BSD-3-ClausePHPPHP ^8.1CI passing

Since Oct 3Pushed 9mo ago8 watchersCompare

[ Source](https://github.com/silverstripe/vendor-plugin)[ Packagist](https://packagist.org/packages/silverstripe/vendor-plugin)[ RSS](/packages/silverstripe-vendor-plugin/feed)WikiDiscussions 3 Synced 1mo ago

READMEChangelog (10)Dependencies (5)Versions (36)Used By (20)

Silverstripe Vendor Plugin
--------------------------

[](#silverstripe-vendor-plugin)

[![CI](https://github.com/silverstripe/vendor-plugin/actions/workflows/ci.yml/badge.svg)](https://github.com/silverstripe/vendor-plugin/actions/workflows/ci.yml)[![Silverstripe supported module](https://camo.githubusercontent.com/9b7e93d393a01f6d3091fb30983b870aa863ef076858115faaa1c74b995854ec/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f73696c7665727374726970652d737570706f727465642d3030373143342e737667)](https://www.silverstripe.org/software/addons/silverstripe-commercially-supported-module-list/)

When installing Silverstripe modules in the vendor directory it may also be necessary to ensure certain module assets are exposed to the webroot, as the 'vendor' url prefix is blocked from web-access by default.

Example
-------

[](#example)

For example, given the below module composer.json:

(note there is no need to explicitly add `silverstripe/vendor-plugin` as a dependency when `silverstripe/framework` is included)

```
{
    "name": "tractorcow/anothermodule",
    "description": "a test module",
    "type": "silverstripe-vendormodule",
    "extra": {
        "expose": [
            "client"
        ]
    },
    "require": {
        "silverstripe/framework": "^4.0"
    }
}
```

This will be installed into the `vendor/tractorcow/anothermodule` folder, and a symlink will be created in `resources/tractorcow/anothermodule/client`, allowing the web server to serve resources from the vendor folder without exposing any code or other internal server files.

Note: The module type `silverstripe-vendormodule` is mandatory, as this behaviour is not enabled for libraries of other types.

Customising behaviour
---------------------

[](#customising-behaviour)

By default the plugin will attempt to perform a symlink, failing back to a full filesystem copy.

If necessary, you can force the behaviour to one of the below using the `SS_VENDOR_METHOD` environment variable (set in your system environment prior to install):

- `none` - Disables all symlink / copy
- `copy` - Performs a copy only
- `symlink` - Performs a symlink only
- `junction` - Uses a junction (windows only)
- `auto` -&gt; Perfrm symlink (or junction on windows), but fail over to copy.

Updating all exposed folders
----------------------------

[](#updating-all-exposed-folders)

A custom composer command can be run at any time to update / refresh all

`composer vendor-expose []`

You can pass in one of the above methods to force a specific behaviour, otherwise the default will be chosen based on either a previously used method, or the `SS_VENDOR_METHOD` environment argument.

###  Health Score

55

—

FairBetter than 98% of packages

Maintenance32

Infrequent updates — may be unmaintained

Popularity49

Moderate usage in the ecosystem

Community49

Growing community involvement

Maturity83

Battle-tested with a long release history

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~81 days

Recently: every ~30 days

Total

36

Last Release

284d ago

Major Versions

1.6.x-dev → 2.0.0-alpha12022-08-09

1.x-dev → 2.0.12023-08-29

2.1.0-beta1 → 3.0.0-beta12025-02-21

2.x-dev → 3.0.02025-04-11

PHP version history (4 changes)1.5.0PHP ^7.1 || ^8

1.5.2PHP ^7.3 || ^8

1.6.0PHP ^7.4 || ^8

2.0.0-alpha1PHP ^8.1

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/654636?v=4)[Aaron Carlino](/maintainers/unclecheese)[@unclecheese](https://github.com/unclecheese)

![](https://www.gravatar.com/avatar/b0cba8b534e20e6ab4fff555a97b237a18436ebca1446fc0b29c8a8b504038b9?d=identicon)[GuySartorelli](/maintainers/GuySartorelli)

![](https://avatars.githubusercontent.com/u/111025?v=4)[Ingo Schommer](/maintainers/chillu)[@chillu](https://github.com/chillu)

![](https://www.gravatar.com/avatar/a25bc04c5720a36869d5a39c6449dde7eb43e19b7c8e666d5f632d6a9ab440b1?d=identicon)[emteknetnz](/maintainers/emteknetnz)

![](https://www.gravatar.com/avatar/afbb3dcc9ef29c1a6eedd6addcae5fce9ab1271915a85a4c349301b71237368d?d=identicon)[silverstripe-machine01](/maintainers/silverstripe-machine01)

![](https://www.gravatar.com/avatar/be6648e60fbab6f70bfc34dd8c14259562d28a47510a934ea9c01fe98633f3c2?d=identicon)[sminnee](/maintainers/sminnee)

![](https://avatars.githubusercontent.com/u/1168676?v=4)[Maxime Rainville](/maintainers/maxime-rainville)[@maxime-rainville](https://github.com/maxime-rainville)

---

Top Contributors

[![emteknetnz](https://avatars.githubusercontent.com/u/4809037?v=4)](https://github.com/emteknetnz "emteknetnz (36 commits)")[![GuySartorelli](https://avatars.githubusercontent.com/u/36352093?v=4)](https://github.com/GuySartorelli "GuySartorelli (32 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (12 commits)")[![robbieaverill](https://avatars.githubusercontent.com/u/5170590?v=4)](https://github.com/robbieaverill "robbieaverill (4 commits)")[![flamerohr](https://avatars.githubusercontent.com/u/1064889?v=4)](https://github.com/flamerohr "flamerohr (3 commits)")[![dhensby](https://avatars.githubusercontent.com/u/563596?v=4)](https://github.com/dhensby "dhensby (2 commits)")[![michalkleiner](https://avatars.githubusercontent.com/u/233342?v=4)](https://github.com/michalkleiner "michalkleiner (2 commits)")[![blueo](https://avatars.githubusercontent.com/u/948122?v=4)](https://github.com/blueo "blueo (1 commits)")[![wilr](https://avatars.githubusercontent.com/u/101629?v=4)](https://github.com/wilr "wilr (1 commits)")[![chillu](https://avatars.githubusercontent.com/u/111025?v=4)](https://github.com/chillu "chillu (1 commits)")[![dnsl48](https://avatars.githubusercontent.com/u/9313746?v=4)](https://github.com/dnsl48 "dnsl48 (1 commits)")[![lozcalver](https://avatars.githubusercontent.com/u/1655548?v=4)](https://github.com/lozcalver "lozcalver (1 commits)")[![maxime-rainville](https://avatars.githubusercontent.com/u/1168676?v=4)](https://github.com/maxime-rainville "maxime-rainville (1 commits)")[![sabina-talipova](https://avatars.githubusercontent.com/u/87288324?v=4)](https://github.com/sabina-talipova "sabina-talipova (1 commits)")[![tractorcow](https://avatars.githubusercontent.com/u/936064?v=4)](https://github.com/tractorcow "tractorcow (1 commits)")

---

Tags

hacktoberfest

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/silverstripe-vendor-plugin/health.svg)

```
[![Health](https://phpackages.com/badges/silverstripe-vendor-plugin/health.svg)](https://phpackages.com/packages/silverstripe-vendor-plugin)
```

###  Alternatives

[drupal/console-extend-plugin

Drupal Console Extend Plugin

13214.3M5](/packages/drupal-console-extend-plugin)[rainlab/blog-plugin

Blog plugin for October CMS

17257.7k](/packages/rainlab-blog-plugin)[php-composter/php-composter

Git Hooks Management through Composer.

10525.1k11](/packages/php-composter-php-composter)[mediawiki/semantic-glossary

A terminology markup extension with a Semantic MediaWiki back-end

1352.4k](/packages/mediawiki-semantic-glossary)[uma/composer-psysh

No-frills PsySH-Composer plugin

183.2k](/packages/uma-composer-psysh)[winter/wn-seo-plugin

Winter CMS plugin for managing SEO tags

106.3k](/packages/winter-wn-seo-plugin)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
