forked from Leaflet/Leaflet.markercluster
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add build scripts from leaflet updated for our files.
- Loading branch information
Showing
7 changed files
with
498 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,4 +3,5 @@ bin | |
obj | ||
|
||
# mstest test results | ||
TestResults | ||
TestResults | ||
node_modules |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
var build = require('./build/build.js'), | ||
lint = require('./build/hint.js'); | ||
|
||
var COPYRIGHT = '/*\n Copyright (c) 2012, Smartrak, David Leaver\n' + | ||
' Leaflet.markercluster is an open-source JavaScript library for Marker Clustering on leaflet powered maps.\n' + | ||
' https://github.com/danzel/Leaflet.markercluster\n*/\n'; | ||
|
||
desc('Check Leaflet.markercluster source for errors with JSHint'); | ||
task('lint', function () { | ||
|
||
var files = build.getFiles(); | ||
|
||
console.log('Checking for JS errors...'); | ||
|
||
var errorsFound = lint.jshint(files); | ||
|
||
if (errorsFound > 0) { | ||
console.log(errorsFound + ' error(s) found.\n'); | ||
fail(); | ||
} else { | ||
console.log('\tCheck passed'); | ||
} | ||
}); | ||
|
||
desc('Combine and compress Leaflet.markercluster source files'); | ||
task('build', ['lint'], function (compsBase32, buildName) { | ||
|
||
var files = build.getFiles(compsBase32); | ||
|
||
console.log('Concatenating ' + files.length + ' files...'); | ||
|
||
var content = build.combineFiles(files), | ||
newSrc = COPYRIGHT + content, | ||
|
||
pathPart = 'dist/leaflet.markercluster' + (buildName ? '-' + buildName : ''), | ||
srcPath = pathPart + '-src.js', | ||
|
||
oldSrc = build.load(srcPath), | ||
srcDelta = build.getSizeDelta(newSrc, oldSrc); | ||
|
||
console.log('\tUncompressed size: ' + newSrc.length + ' bytes (' + srcDelta + ')'); | ||
|
||
if (newSrc === oldSrc) { | ||
console.log('\tNo changes'); | ||
} else { | ||
build.save(srcPath, newSrc); | ||
console.log('\tSaved to ' + srcPath); | ||
} | ||
|
||
console.log('Compressing...'); | ||
|
||
var path = pathPart + '.js', | ||
oldCompressed = build.load(path), | ||
newCompressed = COPYRIGHT + build.uglify(content), | ||
delta = build.getSizeDelta(newCompressed, oldCompressed); | ||
|
||
console.log('\tCompressed size: ' + newCompressed.length + ' bytes (' + delta + ')'); | ||
|
||
if (newCompressed === oldCompressed) { | ||
console.log('\tNo changes'); | ||
} else { | ||
build.save(path, newCompressed); | ||
console.log('\tSaved to ' + path); | ||
} | ||
}); | ||
|
||
task('default', ['build']); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,243 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<title>Leaflet.markercluster Build Helper</title> | ||
|
||
<script type="text/javascript" src="deps.js"></script> | ||
|
||
<style type="text/css"> | ||
body { | ||
font: 12px/1.4 Verdana, sans-serif; | ||
text-align: center; | ||
padding: 2em 0; | ||
} | ||
#container { | ||
text-align: left; | ||
margin: 0 auto; | ||
width: 780px; | ||
} | ||
#deplist { | ||
list-style: none; | ||
padding: 0; | ||
} | ||
#deplist li { | ||
padding-top: 7px; | ||
padding-bottom: 7px; | ||
border-bottom: 1px solid #ddd; | ||
} | ||
#deplist li.heading { | ||
border: none; | ||
background: #ddd; | ||
padding: 5px 10px; | ||
margin-top: 25px; | ||
border-radius: 5px; | ||
} | ||
#deplist input { | ||
float: left; | ||
margin-right: 5px; | ||
display: inline; | ||
} | ||
#deplist label { | ||
float: left; | ||
width: 160px; | ||
font-weight: bold; | ||
} | ||
#deplist div { | ||
display: table-cell; | ||
height: 1%; | ||
} | ||
#deplist .desc { | ||
} | ||
|
||
#deplist .deps { | ||
color: #777; | ||
} | ||
|
||
#command { | ||
width: 100%; | ||
} | ||
#command2 { | ||
width: 200px; | ||
} | ||
|
||
#toolbar { | ||
padding-bottom: 10px; | ||
border-bottom: 1px solid #ddd; | ||
} | ||
|
||
h2 { | ||
margin-top: 2em; | ||
} | ||
</style> | ||
</head> | ||
<body> | ||
<div id="container"> | ||
<h1>Leaflet.markercluster Build Helper</h1> | ||
|
||
<p id="toolbar"> | ||
<a id="select-all" href="#all">Select All</a> | | ||
<a id="deselect-all" href="#none">Deselect All</a> | ||
</p> | ||
|
||
<ul id="deplist"></ul> | ||
|
||
<h2>Building using Node and UglifyJS</h2> | ||
<ol> | ||
<li><a href="http://nodejs.org/#download">Download and install Node</a></li> | ||
<li>Run this in the command line:<br /> | ||
<pre><code>npm install -g jake | ||
npm install jshint | ||
npm install uglify-js</code></pre></li> | ||
<li>Run this command inside the Leaflet.markercluster directory: <br /><input type="text" id="command2" /> | ||
</ol> | ||
<h2>Building using Closure Compiler</h2> | ||
<ol> | ||
<li><a href="http://closure-compiler.googlecode.com/files/compiler-latest.zip">Download Closure Compiler</a>, extract it into <code>closure-compiler</code> directory</li> | ||
<li>Run this command in the root Leaflet directory: <br /><input type="text" id="command" /></li> | ||
</ol> | ||
</div> | ||
|
||
<script type="text/javascript"> | ||
var deplist = document.getElementById('deplist'), | ||
commandInput = document.getElementById('command'), | ||
commandInput2 = document.getElementById('command2'); | ||
|
||
document.getElementById('select-all').onclick = function() { | ||
var checks = deplist.getElementsByTagName('input'); | ||
for (var i = 0; i < checks.length; i++) { | ||
checks[i].checked = true; | ||
} | ||
updateCommand(); | ||
return false; | ||
}; | ||
|
||
document.getElementById('deselect-all').onclick = function() { | ||
var checks = deplist.getElementsByTagName('input'); | ||
for (var i = 0; i < checks.length; i++) { | ||
if (!checks[i].disabled) { | ||
checks[i].checked = false; | ||
} | ||
} | ||
updateCommand(); | ||
return false; | ||
}; | ||
|
||
function updateCommand() { | ||
var files = {}; | ||
var checks = deplist.getElementsByTagName('input'); | ||
var compsStr = ''; | ||
|
||
for (var i = 0, len = checks.length; i < len; i++) { | ||
if (checks[i].checked) { | ||
var srcs = deps[checks[i].id].src; | ||
for (var j = 0, len2 = srcs.length; j < len2; j++) { | ||
files[srcs[j]] = true; | ||
} | ||
compsStr = '1' + compsStr; | ||
} else { | ||
compsStr = '0' + compsStr; | ||
} | ||
} | ||
|
||
var command = 'java -jar closure-compiler/compiler.jar '; | ||
for (var src in files) { | ||
command += '--js src/' + src + ' '; | ||
} | ||
command += '--js_output_file dist/leaflet-custom.js'; | ||
|
||
commandInput.value = command; | ||
|
||
commandInput2.value = 'jake build[' + parseInt(compsStr, 2).toString(32) + ',custom]'; | ||
} | ||
|
||
function inputSelect() { | ||
this.focus(); | ||
this.select(); | ||
}; | ||
|
||
commandInput.onclick = inputSelect; | ||
commandInput2.onclick = inputSelect; | ||
|
||
function onCheckboxChange() { | ||
if (this.checked) { | ||
var depDeps = deps[this.id].deps; | ||
if (depDeps) { | ||
for (var i = 0; i < depDeps.length; i++) { | ||
var check = document.getElementById(depDeps[i]); | ||
if (!check.checked) { | ||
check.checked = true; | ||
check.onchange(); | ||
} | ||
} | ||
} | ||
} else { | ||
var checks = deplist.getElementsByTagName('input'); | ||
for (var i = 0; i < checks.length; i++) { | ||
var dep = deps[checks[i].id]; | ||
if (!dep.deps) { continue; } | ||
for (var j = 0; j < dep.deps.length; j++) { | ||
if (dep.deps[j] === this.id) { | ||
if (checks[i].checked) { | ||
checks[i].checked = false; | ||
checks[i].onchange(); | ||
} | ||
} | ||
} | ||
} | ||
} | ||
updateCommand(); | ||
} | ||
|
||
for (var name in deps) { | ||
var li = document.createElement('li'); | ||
|
||
if (deps[name].heading) { | ||
var heading = document.createElement('li'); | ||
heading.className = 'heading'; | ||
heading.appendChild(document.createTextNode(deps[name].heading)); | ||
deplist.appendChild(heading); | ||
} | ||
|
||
var div = document.createElement('div'); | ||
|
||
var label = document.createElement('label'); | ||
|
||
var check = document.createElement('input'); | ||
check.type = 'checkbox'; | ||
check.id = name; | ||
label.appendChild(check); | ||
check.onchange = onCheckboxChange; | ||
|
||
if (name == 'Core') { | ||
check.checked = true; | ||
check.disabled = true; | ||
} | ||
|
||
label.appendChild(document.createTextNode(name)); | ||
label.htmlFor = name; | ||
|
||
li.appendChild(label); | ||
|
||
var desc = document.createElement('span'); | ||
desc.className = 'desc'; | ||
desc.appendChild(document.createTextNode(deps[name].desc)); | ||
|
||
var depText = deps[name].deps && deps[name].deps.join(', '); | ||
if (depText) { | ||
var depspan = document.createElement('span'); | ||
depspan.className = 'deps'; | ||
depspan.appendChild(document.createTextNode('Deps: ' + depText)); | ||
} | ||
|
||
div.appendChild(desc); | ||
div.appendChild(document.createElement('br')); | ||
if (depText) { div.appendChild(depspan); } | ||
|
||
li.appendChild(div); | ||
|
||
deplist.appendChild(li); | ||
} | ||
updateCommand(); | ||
</script> | ||
</body> | ||
</html> |
Oops, something went wrong.