0.0.2 • Published 11 years ago
brass v0.0.2
brass
Build Node.js project to a native OS package.
Installation
Install as dependency:
npm install brass
Install as CLI tool:
npm install -g brass
How to use
CLI
Run brass in your project directory where file package.json is located.
Run brass -h for usage.
Programmatically
var brass = require('brass');
var options, emitter;
options = {
workDir: '.'
};
emitter = brass.build(options, function (error) {
console.log('finish');
});
emitter.on('info', function (data) {
console.log(data);
});API
build(options, callback)
options Object- an optional object that supersedes options frompackage.json.callback(error) Function- an optional callback function to run once package building have completed.
Options
Options are read from several locations and merged key-wise in particular order:
- Standard package.json properties (
pkg). - Object
brassin package.json file. optionsargument in API function or CLI overrides.
Example
For given package.json file
{
"name": "theapp",
"version": "0.0.0",
"brass": {
"name": "myapp"
}
}and API call
brass.build({ version: "0.0.1" });final options object would be:
{
name: "myapp",
version: "0.0.1"
}Properties
Required:
type(default: rpm) - package type. For now only RPM is supported.name(default:pkg.name) - package name.version(default:pkg.version) - package version.package(default:process.cwd()) - path to npm package to build.workDir(default:os.tmpdir()) - work directory for temporary and build files.summary(default: 'Node.js module '+pkg.name) - short description.description(default:pkg.description) - long description.release(default: 1) - release number.group(default: 'Applications/Internet') - RPM group (valid groups).license(default:pkg.license) - license.prefix(default: '/usr') - install prefix.
Binaries and service:
bin(default:pkg.bin) - map of command names to local filenames that will be symlinked intoprefix/bin.service(default: none) - system service description.service.type- valid type: (systemd, sysv).service.name- command name that will be placed intoprefix/sbin.service.target- local filename that the command will be linking to.service.user- run process as another user.
File mapping:
files- an array of map objects.files[].target- directory to copy files to.files[].files- glob pattern.files[].cwd- directory to start globbing from.files[].type- 'config' for configuration files or empty for normal files.files[].noreplace- don't replace files on package upgrade, it can be used in combination withtype = config.files[].attr- an file permission array[ chmod, user, group ].
Instead of map object a shorthand expression can be used. Simple glob pattern, e.g. **\*.js is equal to:
{
"target": "/usr/lib/<name>",
"files": "**/*.js",
"cwd": "."
}Optional RPM properties:
url(default: empty) - documentation URL.distribution(default: empty) - usually Linux distribution name.vendor(default:pkg.author) - organization that distributes the software.packager(default: empty) - organization that actually packaged the software.
License
ISC