component-as-module
v0.3.0
Published
Require components from node programs
Downloads
14
Readme
component-as-module
It allows to require components from node modules as well as share them with npm community.
Examples
Require stand-alone component (with all dependencies in a components dir):
var component = require('component-as-module')
var min = component('component-min')
Add additional lookup paths or enable dev dependencies:
var boot = component('boot', function(loader) {
loader.addLookup('node_modules')
loader.development()
})
Alternative way to require components is to create a special require function:
var req = component.createRequire(function (loader) {
loader.addLookup('components')
})
var min = req('component-min')
This differs from the above examples in that all loaded components are preserved
between calls, so, for example, requiring component-min
second time is fast and
you recieve the same instance.
Sharing components with npm
To make a component consumable with npm:
Create a package.json file
Set the
name
field to either full or partial component name, i.e. tousername-foo
or tofoo
.List dependencies. Because npm understands github urls you can safely specify them in a component style:
{
"name": "foo",
"dependencies": {
"bar": "org/bar",
"baz": "org/baz",
"qux": "*" // dependency from npm (assuming it is a component) is also ok.
}
}
- Create a node specific main file:
node-main.js
module.exports = require('component-as-module')(__dirname)
package.json
{
"name": "foo",
"dependencies": {
"bar": "org/bar",
"baz": "org/baz",
"qux": "*", // dependency from npm (assuming it is a component) is also ok.
"component-as-module": "*" // add additional component-as-module dependency
},
"main": "node-main"
}
After that you can safely publish it to npm. It will work like any other npm module. (Just don't forget to include
component.json
to package.)
Why
I believe there should be only one package convention for the web. No matter what side it is. Component is a good one. This project should help to use it for both node and browser.
Installation
with npm
npm install component-as-module
To run tests
npm install -d
npm test
License
MIT