added addObject
This commit is contained in:
parent
5c3f150147
commit
8bb333ae8d
67
README.md
67
README.md
|
@ -1,12 +1,38 @@
|
||||||
node-ff-assets
|
node-ff-assets
|
||||||
=========
|
=========
|
||||||
|
|
||||||
A small library providing automatic site assets local/remote aggregation with minify.
|
A Node.js library providing automatic site assets aggregation and content modifiers.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
npm install node-ff-assets --save
|
npm install node-ff-assets --save
|
||||||
|
|
||||||
|
## Target/Source locations
|
||||||
|
|
||||||
|
The asset target file location is a derived value.
|
||||||
|
Its created by mapping the buildConfig.linkTarget in the buildConfig.linkMapping keys
|
||||||
|
to get a prefix for the local file system location.
|
||||||
|
The same is also true for the buildConfig.linkSources list which are url paths
|
||||||
|
which need to be mapped to the file system files by the buildConfig.linkMapping data.
|
||||||
|
|
||||||
|
linkTarget: '/static/js/ffa/assets.js',
|
||||||
|
linkMapping: ['/static/':'www_static/',],
|
||||||
|
linkSources: ['/static/js/site.js','/static/js/ffa/jquery-2.1.3/jquery.js@http://code.jquery.com/jquery-2.1.3.js'],
|
||||||
|
Gives;
|
||||||
|
public js file: http://localhost:8080/static/js/site.js
|
||||||
|
public js file: http://localhost:8080/static/js/ffa/assets.js
|
||||||
|
public js file: http://localhost:8080/static/js/ffa/jquery-2.1.3/jquery.js
|
||||||
|
filesystem file: www_static/js/site.js
|
||||||
|
filesystem file: www_static/js/ffa/assets.js
|
||||||
|
filesystem file: www_static/js/ffa/jquery-2.1.3/jquery.js
|
||||||
|
.gitignore line: www_static/js/ffa
|
||||||
|
|
||||||
|
if buildConfig.linkTargetSingleResult = true render
|
||||||
|
static/js/ffa/assets.js
|
||||||
|
else
|
||||||
|
static/js/site.js
|
||||||
|
static/js/ffa/jquery-2.1.3/jquery.js
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
// Create config object
|
// Create config object
|
||||||
|
@ -19,10 +45,11 @@ A small library providing automatic site assets local/remote aggregation with mi
|
||||||
agent: 'node-ff-assets asset fetcher'
|
agent: 'node-ff-assets asset fetcher'
|
||||||
},
|
},
|
||||||
|
|
||||||
linkTargetSingleResult: process.env.DEV_ASSETS_SINGLE_RESULT || true,
|
linkTargetSingleResult: true,
|
||||||
linkTarget: '/static-uri/js/assets.js',
|
linkTarget: '/static-uri/js/assets.js',
|
||||||
linkSources: [
|
linkSources: [
|
||||||
'/static/js/lib/jquery-2.1.3/jquery.js@http://code.jquery.com/jquery-2.1.3.js',
|
'/static/js/lib/jquery-2.1.3/jquery.js@http://code.jquery.com/jquery-2.1.3.js',
|
||||||
|
'/static/js/lib/foobar/dyna.js@@http://localhost/force-download-on-every-build-for-this-file.js',
|
||||||
'/static/js/site.js'
|
'/static/js/site.js'
|
||||||
],
|
],
|
||||||
linkMapping: ['/static-uri/':'www_static/',],
|
linkMapping: ['/static-uri/':'www_static/',],
|
||||||
|
@ -40,14 +67,22 @@ A small library providing automatic site assets local/remote aggregation with mi
|
||||||
NodeFFAssets.pushLinkSourcesSync(buildConfig, '/static-uri/js/model/', 'www_public/js/model/');
|
NodeFFAssets.pushLinkSourcesSync(buildConfig, '/static-uri/js/model/', 'www_public/js/model/');
|
||||||
NodeFFAssets.pushLinkSourcesSync(buildConfig, '/static-uri/js/model/meta', 'www_public/js/model/meta');
|
NodeFFAssets.pushLinkSourcesSync(buildConfig, '/static-uri/js/model/meta', 'www_public/js/model/meta');
|
||||||
|
|
||||||
// Create builder
|
// Require library
|
||||||
var NodeFFAssets = require('node-ff-assets');
|
var NodeFFAssets = require('node-ff-assets');
|
||||||
|
|
||||||
|
// Create simpel builder
|
||||||
var assetBuilderA = new NodeFFAssets.ResourceBuilder(buildConfig);
|
var assetBuilderA = new NodeFFAssets.ResourceBuilder(buildConfig);
|
||||||
|
|
||||||
|
// Same as default, plain inclusion of content.
|
||||||
var assetBuilderB = new NodeFFAssets.ResourceBuilder(buildConfig,NodeFFAssets.FunctionFactory.Constructor.readFile());
|
var assetBuilderB = new NodeFFAssets.ResourceBuilder(buildConfig,NodeFFAssets.FunctionFactory.Constructor.readFile());
|
||||||
|
|
||||||
|
// Minify content, with optional Minify config options.
|
||||||
var assetBuilderC = new NodeFFAssets.ResourceBuilder(buildConfig,NodeFFAssets.FunctionFactory.Constructor.readFileMinify());
|
var assetBuilderC = new NodeFFAssets.ResourceBuilder(buildConfig,NodeFFAssets.FunctionFactory.Constructor.readFileMinify());
|
||||||
var assetBuilderD = new NodeFFAssets.ResourceBuilder(buildConfig,NodeFFAssets.FunctionFactory.Constructor.readFileMinify(minifyOptions));
|
var assetBuilderD = new NodeFFAssets.ResourceBuilder(buildConfig,NodeFFAssets.FunctionFactory.Constructor.readFileMinify(minifyOptions));
|
||||||
|
|
||||||
|
// Third party content modifiers, with readFile function
|
||||||
var assetBuilderE = new NodeFFAssets.ResourceBuilder(buildConfig,function(file,callback) {
|
var assetBuilderE = new NodeFFAssets.ResourceBuilder(buildConfig,function(file,callback) {
|
||||||
// return file data to callback(err,data);
|
// should return file data to callback(err,data);
|
||||||
);
|
);
|
||||||
|
|
||||||
// Hook events
|
// Hook events
|
||||||
|
@ -69,7 +104,7 @@ A small library providing automatic site assets local/remote aggregation with mi
|
||||||
|
|
||||||
// Run builder
|
// Run builder
|
||||||
assetBuilderC.run(function(err) {
|
assetBuilderC.run(function(err) {
|
||||||
//done
|
//done
|
||||||
});
|
});
|
||||||
|
|
||||||
// Run all builders
|
// Run all builders
|
||||||
|
@ -81,8 +116,7 @@ A small library providing automatic site assets local/remote aggregation with mi
|
||||||
// all done
|
// all done
|
||||||
});
|
});
|
||||||
|
|
||||||
// Use result
|
// Render result
|
||||||
|
|
||||||
function renderIndex(app) {
|
function renderIndex(app) {
|
||||||
return function (req, res, next) {
|
return function (req, res, next) {
|
||||||
res.render('index', {
|
res.render('index', {
|
||||||
|
@ -93,6 +127,7 @@ A small library providing automatic site assets local/remote aggregation with mi
|
||||||
};
|
};
|
||||||
app.get('/',renderIndex(app));
|
app.get('/',renderIndex(app));
|
||||||
|
|
||||||
|
// Template
|
||||||
index.jade
|
index.jade
|
||||||
doctype html
|
doctype html
|
||||||
html(lang='en',ng-app='ffUI')
|
html(lang='en',ng-app='ffUI')
|
||||||
|
@ -116,7 +151,15 @@ A small library providing automatic site assets local/remote aggregation with mi
|
||||||
script(src='#{jsFile}')
|
script(src='#{jsFile}')
|
||||||
|
|
||||||
|
|
||||||
## Example simple
|
## Example mapping node_modules
|
||||||
|
|
||||||
|
Some js libraries can be directly served from node_packages and thus also be
|
||||||
|
included the node-ff-assets output, but these required there own reverse mapping;
|
||||||
|
|
||||||
|
'/static/module/bootstrap/': 'node_modules/bootstrap/dist/',
|
||||||
|
|
||||||
|
This will let the parse find the /static/module/bootstrap/css/bootstrap.css resource and
|
||||||
|
maps it the local file; node_modules/bootstrap/dist/css/bootstrap.css
|
||||||
|
|
||||||
// note1: www_static/[js/css]/lib is versioned ingored.
|
// note1: www_static/[js/css]/lib is versioned ingored.
|
||||||
// note2: server routes;
|
// note2: server routes;
|
||||||
|
@ -141,7 +184,7 @@ A small library providing automatic site assets local/remote aggregation with mi
|
||||||
// done
|
// done
|
||||||
})
|
})
|
||||||
|
|
||||||
// Use result as in simple example.
|
// Render result as in usage example.
|
||||||
|
|
||||||
|
|
||||||
## Example complex
|
## Example complex
|
||||||
|
@ -152,7 +195,7 @@ A small library providing automatic site assets local/remote aggregation with mi
|
||||||
var NodeFFAssets = require('node-ff-assets');
|
var NodeFFAssets = require('node-ff-assets');
|
||||||
|
|
||||||
function createBuildConfig(type) {
|
function createBuildConfig(type) {
|
||||||
var singleResult = true || process.env.DEV_ASSETS_SINGLE_RESULT;
|
var singleResult = 'false' != process.env.DEV_ASSETS_SINGLE_RESULT;
|
||||||
var linkMapping = {
|
var linkMapping = {
|
||||||
'/static/module/bootstrap/': 'node_modules/bootstrap/dist/',
|
'/static/module/bootstrap/': 'node_modules/bootstrap/dist/',
|
||||||
'/static/module/flot/': 'node_modules/flot/',
|
'/static/module/flot/': 'node_modules/flot/',
|
||||||
|
@ -175,7 +218,6 @@ A small library providing automatic site assets local/remote aggregation with mi
|
||||||
linkTarget: '/static/js/lib/assets.js',
|
linkTarget: '/static/js/lib/assets.js',
|
||||||
linkSources: [
|
linkSources: [
|
||||||
'/static/js/lib/jquery-2.1.3/jquery.js@http://code.jquery.com/jquery-2.1.3.js',
|
'/static/js/lib/jquery-2.1.3/jquery.js@http://code.jquery.com/jquery-2.1.3.js',
|
||||||
'/static/js/lib/foobar/dyna.js@@http://localhost/force-download-on-every-build-for-this-file.js',
|
|
||||||
'/static/module/bootstrap/js/bootstrap.js',
|
'/static/module/bootstrap/js/bootstrap.js',
|
||||||
'/static/module/flot/jquery.flot.js',
|
'/static/module/flot/jquery.flot.js',
|
||||||
'/static/module/flot/jquery.flot.resize.js',
|
'/static/module/flot/jquery.flot.resize.js',
|
||||||
|
@ -283,7 +325,6 @@ A small library providing automatic site assets local/remote aggregation with mi
|
||||||
|
|
||||||
// Result Next runs
|
// Result Next runs
|
||||||
info: node-ff-assets-css build begin for: /static/css/lib/assets.css
|
info: node-ff-assets-css build begin for: /static/css/lib/assets.css
|
||||||
info: Started on port: 8008
|
|
||||||
debug: node-ff-assets-css readFile: node_modules/bootstrap/dist/css/bootstrap.css size: 285496
|
debug: node-ff-assets-css readFile: node_modules/bootstrap/dist/css/bootstrap.css size: 285496
|
||||||
debug: node-ff-assets-css readFile: www_static/css/boot.css size: 1606
|
debug: node-ff-assets-css readFile: www_static/css/boot.css size: 1606
|
||||||
debug: node-ff-assets-css readFile: www_static/css/flot.css size: 82
|
debug: node-ff-assets-css readFile: www_static/css/flot.css size: 82
|
||||||
|
@ -335,6 +376,8 @@ Add unit tests for any new or changed functionality. Lint and test your code.
|
||||||
|
|
||||||
## Release History
|
## Release History
|
||||||
|
|
||||||
|
* 0.1.2 added objectAdd
|
||||||
|
|
||||||
* 0.1.1 Doc updates
|
* 0.1.1 Doc updates
|
||||||
|
|
||||||
* 0.1.0 Initial release
|
* 0.1.0 Initial release
|
||||||
|
|
32
index.js
32
index.js
|
@ -4,12 +4,14 @@ var NodeEvents = require('events');
|
||||||
var NodeFetch = require('fetch');
|
var NodeFetch = require('fetch');
|
||||||
var NodeFs = require('fs');
|
var NodeFs = require('fs');
|
||||||
|
|
||||||
var FULL_OPTIONS = {
|
var DEFAULT_DOWNLOAD_MAX_SIZE = (1024*1024) * 10; // 10mb
|
||||||
|
var DEFAULT_DOWNLOAD_TIMEOUT = (1000*60) * 1; // 1min
|
||||||
|
var DEFAULT_OPTIONS = {
|
||||||
downloadStartDelay: null,
|
downloadStartDelay: null,
|
||||||
downloadForce: false,
|
downloadForce: false,
|
||||||
downloadOptions: {
|
downloadOptions: {
|
||||||
timeout: 10000,
|
timeout: DEFAULT_DOWNLOAD_TIMEOUT,
|
||||||
maxResponseLength: 10000000,
|
maxResponseLength: DEFAULT_DOWNLOAD_MAX_SIZE,
|
||||||
agent: 'node-ff-assets asset fetcher'
|
agent: 'node-ff-assets asset fetcher'
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -23,17 +25,6 @@ var FULL_OPTIONS = {
|
||||||
assetSeperator: '\n/* node-ff-assets: next */\n',
|
assetSeperator: '\n/* node-ff-assets: next */\n',
|
||||||
}
|
}
|
||||||
|
|
||||||
var DEFAULT_OPTIONS = {
|
|
||||||
downloadOptions: {
|
|
||||||
timeout: 10000,
|
|
||||||
maxResponseLength: 10000000,
|
|
||||||
agent: 'node-ff-assets asset fetcher'
|
|
||||||
},
|
|
||||||
assetHeader: '\n/* node-ff-assets: begin */\n\n',
|
|
||||||
assetFooter: '\n/* node-ff-assets: end */\n\n',
|
|
||||||
assetSeperator: '\n/* node-ff-assets: next */\n',
|
|
||||||
}
|
|
||||||
|
|
||||||
function ResourceBuilder(config, readFile) {
|
function ResourceBuilder(config, readFile) {
|
||||||
this.config = config;
|
this.config = config;
|
||||||
this.startTime = 0;
|
this.startTime = 0;
|
||||||
|
@ -104,6 +95,9 @@ var FunctionFactory = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
objectAdd: function(object,resultKey) {
|
||||||
|
return FunctionFactory.Event.result.objectFunction(object,'add',resultKey);
|
||||||
|
},
|
||||||
objectSet: function(object,resultKey) {
|
objectSet: function(object,resultKey) {
|
||||||
return FunctionFactory.Event.result.objectFunction(object,'set',resultKey);
|
return FunctionFactory.Event.result.objectFunction(object,'set',resultKey);
|
||||||
},
|
},
|
||||||
|
@ -388,7 +382,7 @@ function runAll(builderList,callback) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function pushLinkSourcesSync(builder, linkPrefix, fileFolder) {
|
function pushLinkSourcesSync(builder, linkPrefix, fileFolder) {
|
||||||
NodeFs.readdirSync(fileFolder).forEach(function (file) {
|
NodeFs.readdirSync(fileFolder).forEach(function (file) {
|
||||||
if (~file.indexOf('.js') || ~file.indexOf('.css')) {
|
if (~file.indexOf('.js') || ~file.indexOf('.css')) {
|
||||||
builder.linkSources.push(linkPrefix+file)
|
builder.linkSources.push(linkPrefix+file)
|
||||||
}
|
}
|
||||||
|
@ -396,8 +390,8 @@ function pushLinkSourcesSync(builder, linkPrefix, fileFolder) {
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
ResourceBuilder: ResourceBuilder,
|
ResourceBuilder: ResourceBuilder,
|
||||||
FunctionFactory: FunctionFactory,
|
FunctionFactory: FunctionFactory,
|
||||||
runAll: runAll,
|
runAll: runAll,
|
||||||
pushLinkSourcesSync: pushLinkSourcesSync,
|
pushLinkSourcesSync: pushLinkSourcesSync,
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "node-ff-assets",
|
"name": "node-ff-assets",
|
||||||
"version": "0.1.1",
|
"version": "0.1.2",
|
||||||
"description": "Site assets local/remote aggregation with minify.",
|
"description": "Site assets local/remote aggregation with minify.",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
Loading…
Reference in a new issue