systemjs-builder
Advanced tools
Comparing version 0.0.5 to 0.0.6
{ | ||
"name": "systemjs-builder", | ||
"main": "index.js", | ||
"version": "0.0.5", | ||
"version": "0.0.6", | ||
"authors": [ | ||
@@ -6,0 +6,0 @@ "guybedford <guybedford@gmail.com>" |
78
index.js
@@ -34,10 +34,16 @@ var Promise = require('rsvp').Promise; | ||
.then(function(trace) { | ||
return exports.buildTree(trace.tree, trace.moduleName, outFile) | ||
return exports.buildTree(trace.tree, outFile) | ||
}); | ||
} | ||
exports.buildTree = function(tree, moduleName, outFile) { | ||
exports.buildTree = function(tree, outFile) { | ||
var concatOutput = ['"format register";\n']; | ||
return visitTree(tree, moduleName, function(load) { | ||
var treeNames = []; | ||
for (var moduleName in tree) | ||
treeNames.push(moduleName); | ||
return Promise.all(treeNames.map(function(name) { | ||
var load = tree[name]; | ||
if (load.metadata.build == false) { | ||
@@ -76,5 +82,65 @@ return; | ||
} | ||
})) | ||
.then(function() { | ||
return asp(fs.writeFile)(outFile, concatOutput.join('\n')); | ||
}); | ||
} | ||
exports.config = function(config) { | ||
loader.config(config); | ||
pluginLoader.config(config); | ||
} | ||
// returns a new tree containing tree1 n tree2 | ||
exports.intersectTrees = function(tree1, tree2) { | ||
var intersectTree = {}; | ||
var tree1Names = []; | ||
for (var name in tree1) | ||
tree1Names.push(name); | ||
for (var name in tree2) { | ||
if (tree1Names.indexOf(name) == -1) | ||
continue; | ||
intersectTree[name] = tree1[name]; | ||
} | ||
return intersectTree; | ||
} | ||
// returns a new tree containing tree1 + tree2 | ||
exports.addTrees = function(tree1, tree2) { | ||
var unionTree = {}; | ||
for (var name in tree2) | ||
unionTree[name] = tree2[name]; | ||
for (var name in tree1) | ||
unionTree[name] = tree1[name]; | ||
return unionTree; | ||
} | ||
// returns a new tree containing tree1 - tree2 | ||
exports.subtractTrees = function(tree1, tree2) { | ||
var subtractTree = {}; | ||
for (var name in tree1) | ||
subtractTree[name] = tree1[name]; | ||
for (var name in tree2) | ||
delete subtractTree[name]; | ||
return subtractTree; | ||
} | ||
// copies a subtree out of the tree | ||
exports.extractTree = function(tree, moduleName) { | ||
var outTree = {}; | ||
return visitTree(tree, moduleName, function(load) { | ||
outTree[load.name] = load; | ||
}) | ||
.then(function() { | ||
return asp(fs.writeFile)(outFile, concatOutput.join('\n')); | ||
return outTree; | ||
}); | ||
@@ -128,3 +194,3 @@ } | ||
if (!load) | ||
return; | ||
return Promise.resolve() | ||
@@ -131,0 +197,0 @@ // visit the deps first |
{ | ||
"name": "systemjs-builder", | ||
"version": "0.0.5", | ||
"version": "0.0.6", | ||
"description": "", | ||
@@ -11,7 +11,7 @@ "main": "index.js", | ||
"rsvp": "^3.0.6", | ||
"systemjs": "^0.6.6", | ||
"traceur": "google/traceur-compiler#0.0.43" | ||
"systemjs": "^0.6.7", | ||
"traceur": "0.0.49" | ||
}, | ||
"devDependencies": { | ||
"es6-module-loader": "^0.6.1" | ||
"es6-module-loader": "^0.7.1" | ||
}, | ||
@@ -18,0 +18,0 @@ "scripts": { |
@@ -74,5 +74,7 @@ SystemJS Build Tool | ||
Basic Use | ||
Usage | ||
--- | ||
### Install | ||
```javascript | ||
@@ -82,2 +84,4 @@ npm install systemjs-builder | ||
### Basic Use | ||
```javascript | ||
@@ -105,1 +109,77 @@ var builder = require('systemjs-builder'); | ||
### Advanced build | ||
The trace trees can be adjusted between tracing and building allowing for custom build layer creation. | ||
Some simple trace tree operators are provided for subtraction addition and intersection. | ||
Tree operations include `addTrees`, `subtractTrees`, `intersectTrees` and `extractTree`. | ||
#### Example - Exclusion | ||
In this example we build `app/core` excluding `app/corelibs`: | ||
```javascript | ||
var builder = require('systemjs-builder'); | ||
builder.config({ | ||
baseURL: '...', | ||
map: { | ||
}, // etc. config | ||
}); | ||
builder.trace('app/main') | ||
.then(function(appTree) { | ||
return builder.trace('app/corelibs') | ||
.then(function(coreTree) { | ||
return builder.subtractTrees(appTree, coreTree); | ||
}); | ||
}) | ||
.then(function(appMinusCoreTree) { | ||
return builder.buildTree(appMinusCoreTree, 'output-file.js'); | ||
}); | ||
``` | ||
#### Example - Common Libraries | ||
In this example we build `app/first` and `app/second` creating a separate `app/shared` library: | ||
```javascript | ||
var builder = require('systemjs-builder'); | ||
builder.config({ | ||
// ... | ||
}); | ||
var firstTree, secondTree, commonTree; | ||
builder.trace('app/first') | ||
.then(function(tree) { | ||
firstTree = tree; | ||
return builder.trace('app/second'); | ||
}) | ||
.then(function(tree) { | ||
secondTree = tree; | ||
commonTree = builder.intersectTrees(firstTree, secondTree); | ||
firstTree = builder.subtractTrees(firstTree, commonTree); | ||
secondTree = builder.subtractTrees(secondTree, commonTree); | ||
return builder.buildTree(firstTree, 'first-bundle.js'); | ||
}) | ||
.then(function() { | ||
return builder.buildTree(secondTree, 'second-bundle.js'); | ||
}) | ||
.then(function() { | ||
return builder.buildTree(commonTree, 'shared-bundle.js'); | ||
}); | ||
``` | ||
License | ||
--- | ||
MIT | ||
@@ -11,7 +11,25 @@ var builder = require('../index'); | ||
.catch(function(e) { | ||
console.log(e); | ||
setTimeout(function() { | ||
throw e; | ||
}); | ||
}); | ||
var treeFirst; | ||
builder.trace('tree/first').then(function(traceTree) { | ||
treeFirst = traceTree.tree; | ||
console.log(JSON.stringify(traceTree, null, 2)); | ||
}); | ||
}) | ||
.then(function() { | ||
console.log('Build exclusion'); | ||
return builder.trace('tree/amd'); | ||
}) | ||
.then(function(traceTree) { | ||
return builder.buildTree( | ||
builder.subtractTrees(treeFirst, traceTree.tree), 'excluded.js' | ||
); | ||
}) | ||
.catch(function(e) { | ||
setTimeout(function() { | ||
throw e; | ||
}); | ||
}); |
"format register"; | ||
System.register("tree/second", ["./third", "./cjs"], function($__0) { | ||
"use strict"; | ||
var __moduleName = "tree/second"; | ||
var q; | ||
return { | ||
exports: { | ||
get q() { | ||
return q; | ||
}, | ||
set q(value) { | ||
q = value; | ||
} | ||
}, | ||
execute: function() { | ||
; | ||
; | ||
q = 4; | ||
} | ||
}; | ||
}); | ||
System.register("tree/first", ["./second", "./amd"], function($__0) { | ||
"use strict"; | ||
var __moduleName = "tree/first"; | ||
var p; | ||
return { | ||
exports: { | ||
get p() { | ||
return p; | ||
}, | ||
set p(value) { | ||
p = value; | ||
} | ||
}, | ||
execute: function() { | ||
; | ||
; | ||
p = 5; | ||
} | ||
}; | ||
}); | ||
System.register("tree/third", [], function(deps) { | ||
@@ -47,23 +89,2 @@ return { | ||
System.register("tree/second", ["./third", "./cjs"], function($__0) { | ||
"use strict"; | ||
var __moduleName = "tree/second"; | ||
var q; | ||
return { | ||
exports: { | ||
get q() { | ||
return q; | ||
}, | ||
set q(value) { | ||
q = value; | ||
} | ||
}, | ||
execute: function() { | ||
; | ||
; | ||
q = 4; | ||
} | ||
}; | ||
}); | ||
System.register("tree/global", ["./jquery"], false, function(__require, __exports, __moduleName) { | ||
@@ -85,22 +106,1 @@ System.get("@@global-helpers").prepareGlobal(__moduleName, ["./jquery"]); | ||
System.register("tree/first", ["./second", "./amd"], function($__0) { | ||
"use strict"; | ||
var __moduleName = "tree/first"; | ||
var p; | ||
return { | ||
exports: { | ||
get p() { | ||
return p; | ||
}, | ||
set p(value) { | ||
p = value; | ||
} | ||
}, | ||
execute: function() { | ||
; | ||
; | ||
p = 5; | ||
} | ||
}; | ||
}); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
GitHub dependency
Supply chain riskContains a dependency which resolves to a GitHub URL. Dependencies fetched from GitHub specifiers are not immutable can be used to inject untrusted code or reduce the likelihood of a reproducible install.
Found 1 instance in 1 package
21374
23
469
183
0
+ Addedtraceur@0.0.49(transitive)
Updatedsystemjs@^0.6.7
Updatedtraceur@0.0.49