https://github.com/base-repos/base-plugins
Add "smart plugin" support to your base application. Adds a `.run` method, allowing plugins to be called on a given object, at any time.
https://github.com/base-repos/base-plugins
assemble base generate plugin plugins smart-plugin toolkit update verb
Last synced: about 1 month ago
JSON representation
Add "smart plugin" support to your base application. Adds a `.run` method, allowing plugins to be called on a given object, at any time.
- Host: GitHub
- URL: https://github.com/base-repos/base-plugins
- Owner: base-repos
- License: mit
- Created: 2015-10-07T22:00:11.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-04-01T19:39:25.000Z (about 8 years ago)
- Last Synced: 2025-04-30T00:34:52.106Z (about 1 month ago)
- Topics: assemble, base, generate, plugin, plugins, smart-plugin, toolkit, update, verb
- Language: JavaScript
- Homepage: https://github.com/node-base
- Size: 35.2 KB
- Stars: 21
- Watchers: 3
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# base-plugins [](https://www.npmjs.com/package/base-plugins) [](https://npmjs.org/package/base-plugins) [](https://npmjs.org/package/base-plugins) [](https://travis-ci.org/node-base/base-plugins)
> Adds 'smart plugin' support to your base application.
## Install
Install with [npm](https://www.npmjs.com/):
```sh
$ npm install --save base-plugins
```**What does this do?**
This plugin augments the generic plugin functionality that ships with [base](https://github.com/node-base/base).
* Without this plugin, any plugins that registered with the `use` method and are only called once upon init.
* With this plugin, other plugins that return a function will be pushed onto a `plugins` array, and can be called again later with the `run` method.## Usage
```js
var plugins = require('base-plugins');
var Base = require('base');
var base = new Base();// register the `plugins` plugin
base.use(plugins());
```## Examples
### .use example
Once the `use` method is called:
1. a `fns` array is added to the instance for storing plugin functions
2. a `run` method is added to the instance for running stored plugins
3. the `use` method is modified so that anytime a function is returned by a plugin, the function will be pushed onto the `fns` array. Aside from that, you shouldn't see any difference in how the `use` method works.## .run example
The `run` method iterates over the `fns` array and calls each stored plugin function on the given object.
```js
var collection = {};
base.use(function(app) {
app.x = 'y';
return function(obj) {
obj.a = 'b';
};
});
base.run(collection);console.log(base.x);
//=> 'y'
console.log(collection.a);
//=> 'b'
```## API
### [.use](index.js#L54)
Define a plugin function to be called immediately upon init. The only parameter exposed to the plugin is the application instance.
Also, if a plugin returns a function, the function will be pushed
onto the `fns` array, allowing the plugin to be called at a
later point, elsewhere in the application.**Params**
* `fn` **{Function}**: plugin function to call
* `returns` **{Object}**: Returns the item instance for chaining.**Example**
```js
// define a plugin
function foo(app) {
// do stuff
}// register plugins
var app = new Base()
.use(foo)
.use(bar)
.use(baz)
```### [.run](index.js#L69)
Run all plugins
**Params**
* `value` **{Object}**: Object to be modified by plugins.
* `returns` **{Object}**: Returns the item instance for chaining.**Example**
```js
var config = {};
app.run(config);
```## About
### Related projects
* [base-cli](https://www.npmjs.com/package/base-cli): Plugin for base-methods that maps built-in methods to CLI args (also supports methods from a… [more](https://github.com/node-base/base-cli) | [homepage](https://github.com/node-base/base-cli "Plugin for base-methods that maps built-in methods to CLI args (also supports methods from a few plugins, like 'base-store', 'base-options' and 'base-data'.")
* [base-config](https://www.npmjs.com/package/base-config): base-methods plugin that adds a `config` method for mapping declarative configuration values to other 'base… [more](https://github.com/node-base/base-config) | [homepage](https://github.com/node-base/base-config "base-methods plugin that adds a `config` method for mapping declarative configuration values to other 'base' methods or custom functions.")
* [base-data](https://www.npmjs.com/package/base-data): adds a `data` method to base-methods. | [homepage](https://github.com/node-base/base-data "adds a `data` method to base-methods.")
* [base-fs](https://www.npmjs.com/package/base-fs): base-methods plugin that adds vinyl-fs methods to your 'base' application for working with the file… [more](https://github.com/node-base/base-fs) | [homepage](https://github.com/node-base/base-fs "base-methods plugin that adds vinyl-fs methods to your 'base' application for working with the file system, like src, dest, copy and symlink.")
* [base-option](https://www.npmjs.com/package/base-option): Adds a few options methods to base, like `option`, `enable` and `disable`. See the readme… [more](https://github.com/node-base/base-option) | [homepage](https://github.com/node-base/base-option "Adds a few options methods to base, like `option`, `enable` and `disable`. See the readme for the full API.")
* [base](https://www.npmjs.com/package/base): Framework for rapidly creating high quality node.js applications, using plugins like building blocks | [homepage](https://github.com/node-base/base "Framework for rapidly creating high quality node.js applications, using plugins like building blocks")### Contributing
Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
### Building docs
_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
To generate the readme, run the following command:
```sh
$ npm install -g verbose/verb#dev verb-generate-readme && verb
```### Running tests
Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
```sh
$ npm install && npm test
```### Author
**Jon Schlinkert**
* [github/jonschlinkert](https://github.com/jonschlinkert)
* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)### License
Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
Released under the [MIT License](LICENSE).***
_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.4.3, on April 01, 2017._