diff --git a/README.md b/README.md index 258cd57..92fbc2b 100644 --- a/README.md +++ b/README.md @@ -1 +1,102 @@ -todo +node-ff-assets +========= + +A small library providing automatic site assets local/remote aggregation with minify. + +## Installation + + npm install node-ff-assets --save + + +## Usage + + // Create config object; + var buildConfig = { + downloadStartDelay: null, + downloadForce: false, + downloadOptions: { + timeout: 10000, + maxResponseLength: 10000000, + agent: 'node-ff-assets asset fetcher' + }, + + linkTargetSingleResult: true, + linkTarget: null, + linkSources: [], + linkMapping: [], + + assetHeader: '\n/* node-ff-assets: begin */\n\n', + assetFooter: '\n/* node-ff-assets: end */\n\n', + assetSeperator: '\n/* node-ff-assets: next */\n', + } + + // Create builder + var NodeFFAssets = require('node-ff-assets'); + var assetBuilderA = new NodeFFAssets.ResourceBuilder(buildConfig); + var assetBuilderB = new NodeFFAssets.ResourceBuilder(buildConfig,NodeFFAssets.FunctionFactory.Constructor.readFile()); + var assetBuilderC = new NodeFFAssets.ResourceBuilder(buildConfig,NodeFFAssets.FunctionFactory.Constructor.readFileMinify()); + var assetBuilderD = new NodeFFAssets.ResourceBuilder(buildConfig,NodeFFAssets.FunctionFactory.Constructor.readFileMinify(minifyOptions)); + var assetBuilderE = new NodeFFAssets.ResourceBuilder(buildConfig,function(file,callback) { + // return file data to callback(err,data); + ); + + // Create events + assetBuilderA.on('begin', function() { }); + assetBuilderA.on('end', function() { }); + assetBuilderA.on('log', function(logLevel, logMessage) { }); + assetBuilderA.on('error', function(err) { }); + assetBuilderA.on('result', function(resultValue) { }); + assetBuilderA.on('file-download-pre', function(remoteUrl) { }); + assetBuilderA.on('file-download-post', function(localFile) { }); + assetBuilderA.on('file-read-pre', function(localFile) { }); + assetBuilderA.on('file-read-post', function(localFile) { }); + assetBuilderA.on('file-write-pre', function(targetFile) { }); + assetBuilderA.on('file-write-post', function(targetFile) { }); + + // Use build in event functions + assetBuilderB.on('log', NodeFFAssets.FunctionFactory.Event.log.console('css')); + assetBuilderB.on('result', NodeFFAssets.FunctionFactory.Event.result.objectSet(server,'includeCssFiles')); + + // Run builder + assetBuilderC.run(function(err) { + //done + }); + + +## Example simple + + // note1: www_static/[js/css]/lib is versioned ingored. + // note2: server routes; + // app.use('/static',express.static(path.join(__dirname,'www_static'))); + // app.use('/static/module/bootstrap',express.static(path.join(__dirname,'node_modules/bootstrap/dist'))); + + var NodeFFAssets = require('node-ff-assets'); + var buildCss = new NodeFFAssets.ResourceBuilder({ + linkMapping: { + '/static/module/bootstrap/': 'node_modules/bootstrap/dist/', + '/static/': 'www_static/', + }, + linkTarget: '/static/css/lib/assets.css', + linkSources: [ + '/static/module/bootstrap/css/bootstrap.css', + '/static/css/site.css', + ], + }); + buildCss.on('log', NodeFFAssets.FunctionFactory.Event.log.console('css')); + buildCss.on('result', NodeFFAssets.FunctionFactory.Event.result.objectSet(server,'includeCssFiles')); + buildCss.run(function(err) { + // done + }) + +## Tests + + npm test (TODO) + +## Contributing + +In lieu of a formal styleguide, take care to maintain the existing coding style. +Add unit tests for any new or changed functionality. Lint and test your code. + +## Release History + +* 0.1.0 Initial release diff --git a/package.json b/package.json index ebdd5db..2daa860 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "node-ff-assets", "version": "0.1.0", - "description": "Node.js library providing single resource assets.", + "description": "Site assets local/remote aggregation with minify.", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" @@ -9,6 +9,8 @@ "author": "Willem (http://forwardfire.net/)", "license": "BSD-2-Clause", "dependencies": { - "fs-extra": "^0.16.3" + "fetch": "^0.3.6", + "fs-extra": "^0.16.3", + "minify": "^1.4.8" } }