Awesome
Composer Plugin for installing Assets using native npm/bower
This Composer plugin installs assets using native npm/bower. Not only the root package can have dependencies.
Npm packages will be installed in package folder, bower will be installed in root - with all dependencies merged.
Example usage
composer.json
"require": {
"koala-framework/composer-extra-assets": "~1.1"
},
"extra": {
"require-npm": {
"grunt": "0.4.*"
},
"require-bower": {
"jquery": "*"
},
"require-dev-bower": {
"qunit": "*"
},
"require-dev-npm": {
}
}
Bower dependencies
Bower dependencies will be installed in the vendor/bower_components
directory.
NPM dependencies
NPM dependencies will be installed in the node_modules
directory of the package that requires the dependency.
Some NPM packages provide binary files (for instance gulp
and grunt
).
NPM binaries will be exposed in the vendor/bin
directory if the NPM dependency is declared in the root Composer
package.
If you are writing a package and want a NPM package to be available in the node_modules
directory of Composer's root
(instead of the node_modules
directory of your package), you can add the expose-npm-packages
attribute to the composer extra
session of your package:
"require": {
"koala-framework/composer-extra-assets": "~1.1"
},
"extra": {
"require-npm": {
"gulp": "*"
},
"expose-npm-packages": true
}
Generated files
This plugin will automatically generate 3 files: .bowerrc
, bower.json
, package.json
/
Unless you have special requirements, you can ignore those 3 files in your VCS. If you are using GIT,
add this to your .gitignore
:
.gitignore
vendor/
.bowerrc
bower.json
package.json
Lock
This plugin will generate a file named composer-extra-assets.lock
which can be used just like composer.lock
. Put it
under version control if you want to be able to install the exact same dependencies.
Warning
This plugins removes (and re-installs) the complete node_modules folder. Any changes will be lost.