forked from josdejong/jsoneditor
-
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.
- Loading branch information
Showing
47 changed files
with
9,232 additions
and
1,643 deletions.
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 |
---|---|---|
@@ -1,3 +1,4 @@ | ||
.idea | ||
build | ||
downloads | ||
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,13 @@ | ||
app | ||
build | ||
downloads | ||
jsoneditor | ||
misc | ||
node_modules | ||
test | ||
tools | ||
.idea | ||
component.json | ||
Jakefile.js | ||
.npmignore | ||
.gitignore |
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
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,316 @@ | ||
/** | ||
* Jake build script | ||
*/ | ||
var jake = require('jake'), | ||
path = require('path'), | ||
cleanCss = require('clean-css'), | ||
archiver = require('archiver'), | ||
fs = require('fs'); | ||
|
||
require('jake-utils'); | ||
|
||
// constants | ||
var JSONEDITOR = './jsoneditor.js', | ||
JSONEDITOR_CSS = './jsoneditor.css', | ||
JSONEDITOR_MIN = './jsoneditor-min.js', | ||
JSONEDITOR_CSS_MIN = './jsoneditor-min.css', | ||
BUILD = './build'; | ||
|
||
/** | ||
* default task | ||
*/ | ||
desc('Execute all tasks'); | ||
task('default', ['clear', 'build', 'minify', 'zip', 'webapp', 'chromeapp'], function () { | ||
console.log('Done'); | ||
}); | ||
|
||
/** | ||
* build the library | ||
*/ | ||
desc('Clear the build directory'); | ||
task('clear', function () { | ||
jake.rmRf(BUILD); | ||
}); | ||
|
||
/** | ||
* build the library | ||
*/ | ||
desc('Build the library'); | ||
task('build', ['clear'], function () { | ||
var jsoneditorSrc = './jsoneditor/'; | ||
// concatenate the javascript files | ||
concat({ | ||
src: [ | ||
jsoneditorSrc + 'js/jsoneditor.js', | ||
jsoneditorSrc + 'js/treeeditor.js', | ||
jsoneditorSrc + 'js/texteditor.js', | ||
jsoneditorSrc + 'js/node.js', | ||
jsoneditorSrc + 'js/appendnode.js', | ||
jsoneditorSrc + 'js/contextmenu.js', | ||
jsoneditorSrc + 'js/history.js', | ||
jsoneditorSrc + 'js/searchbox.js', | ||
jsoneditorSrc + 'js/highlighter.js', | ||
jsoneditorSrc + 'js/util.js', | ||
jsoneditorSrc + 'js/module.js' | ||
], | ||
dest: JSONEDITOR, | ||
header: read(jsoneditorSrc +'js/header.js') + '\n' + | ||
'(function () {\n', | ||
separator: '\n', | ||
footer: '\n})();\n' | ||
}); | ||
|
||
// update version number and stuff in the javascript files | ||
replacePlaceholders(JSONEDITOR); | ||
console.log('Created ' + JSONEDITOR); | ||
|
||
// concatenate and stringify the css files | ||
concat({ | ||
src: [ | ||
jsoneditorSrc + 'css/jsoneditor.css', | ||
jsoneditorSrc + 'css/contextmenu.css', | ||
jsoneditorSrc + 'css/menu.css', | ||
jsoneditorSrc + 'css/searchbox.css' | ||
], | ||
dest: JSONEDITOR_CSS, | ||
separator: '\n' | ||
}); | ||
console.log('Created ' + JSONEDITOR_CSS); | ||
|
||
// minify the css file | ||
write(JSONEDITOR_CSS_MIN, cleanCss.process(String(read(JSONEDITOR_CSS)))); | ||
|
||
// create a folder img and copy the icons | ||
jake.mkdirP('./img'); | ||
jake.cpR(jsoneditorSrc + 'css/img/jsoneditor-icons.png', './img/'); | ||
console.log('Copied jsoneditor-icons.png to ./img/'); | ||
}); | ||
|
||
/** | ||
* minify the library | ||
*/ | ||
desc('Minify the library'); | ||
task('minify', ['build'], function () { | ||
// minify javascript | ||
minify({ | ||
src: JSONEDITOR, | ||
dest: JSONEDITOR_MIN, | ||
header: read('./jsoneditor/js/header.js'), | ||
separator: '\n' | ||
}); | ||
|
||
// update version number and stuff in the javascript files | ||
replacePlaceholders(JSONEDITOR_MIN); | ||
|
||
console.log('Created ' + JSONEDITOR_MIN); | ||
}); | ||
|
||
/** | ||
* zip the library | ||
*/ | ||
desc('Zip the library'); | ||
task('zip', ['build', 'minify'], {async: true}, function () { | ||
var zipfolder = BUILD + '/lib'; | ||
var pkg = 'jsoneditor-' + version(); | ||
var zipfile = zipfolder + '/' + pkg + '.zip'; | ||
jake.mkdirP(zipfolder); | ||
|
||
var output = fs.createWriteStream(zipfile); | ||
var archive = archiver('zip'); | ||
|
||
archive.on('error', function(err) { | ||
throw err; | ||
}); | ||
|
||
archive.pipe(output); | ||
|
||
var filelist = new jake.FileList(); | ||
filelist.include([ | ||
'README.md', | ||
'NOTICE', | ||
'LICENSE', | ||
'HISTORY.md', | ||
JSONEDITOR, | ||
JSONEDITOR_CSS, | ||
JSONEDITOR_MIN, | ||
JSONEDITOR_CSS_MIN, | ||
'img/*.*', | ||
'lib/**/*.*', | ||
'docs/**/*.*', | ||
'examples/**/*.*' | ||
]); | ||
var files = filelist.toArray(); | ||
files.forEach(function (file) { | ||
archive.append(fs.createReadStream(file), { | ||
name: pkg + '/' + file | ||
}) | ||
}); | ||
|
||
archive.finalize(function(err, written) { | ||
if (err) { | ||
throw err; | ||
} | ||
|
||
console.log('Zipped ' + zipfile); | ||
complete(); | ||
}); | ||
}); | ||
|
||
/** | ||
* build the web app | ||
*/ | ||
desc('Build web app'); | ||
task('webapp', ['build', 'minify'], function () { | ||
var webAppSrc = './app/web/'; | ||
var libSrc = './lib/'; | ||
var webApp = BUILD + '/app/web/'; | ||
var webAppLib = webApp + 'lib/'; | ||
var webAppAce = webAppLib + 'ace/'; | ||
var webAppImg = webApp + 'img/'; | ||
var appJs = webApp + 'app.js'; | ||
var appCss = webApp + 'app.css'; | ||
var appCssMin = webApp + 'app-min.css'; | ||
var appJsMin = webApp + 'app-min.js'; | ||
|
||
// create directories | ||
// TODO: should be created automatically... | ||
jake.mkdirP(webApp); | ||
jake.mkdirP(webAppLib); | ||
jake.mkdirP(webAppLib + 'ace/'); | ||
jake.mkdirP(webAppLib + 'jsoneditor/'); | ||
jake.mkdirP(webAppLib + 'jsoneditor/img/'); | ||
jake.mkdirP(webAppLib + 'jsonlint/'); | ||
jake.mkdirP(webAppImg); | ||
|
||
// concatenate the javascript files | ||
concat({ | ||
src: [ | ||
webAppSrc + 'queryparams.js', | ||
webAppSrc + 'ajax.js', | ||
webAppSrc + 'fileretriever.js', | ||
webAppSrc + 'notify.js', | ||
webAppSrc + 'splitter.js', | ||
webAppSrc + 'app.js' | ||
], | ||
dest: appJs, | ||
separator: '\n' | ||
}); | ||
|
||
// minify javascript | ||
minify({ | ||
src: appJs, | ||
dest: appJsMin | ||
}); | ||
|
||
// concatenate the css files | ||
concat({ | ||
src: [ | ||
webAppSrc + 'fileretriever.css', | ||
webAppSrc + 'app.css' | ||
], | ||
dest: appCss, | ||
separator: '\n' | ||
}); | ||
|
||
// minify css file | ||
write(appCssMin, cleanCss.process(String(read(appCss)))); | ||
|
||
// remove non minified javascript and css file | ||
fs.unlinkSync(appJs); | ||
fs.unlinkSync(appCss); | ||
|
||
// copy files | ||
jake.cpR('./README.md', webApp); | ||
jake.cpR('./HISTORY.md', webApp); | ||
jake.cpR('./NOTICE', webApp); | ||
jake.cpR('./LICENSE', webApp); | ||
jake.cpR('./LICENSE', webApp); | ||
jake.cpR(webAppSrc + 'robots.txt', webApp); | ||
jake.cpR(webAppSrc + 'datapolicy.txt', webApp); | ||
jake.cpR(webAppSrc + 'index.html', webApp); | ||
jake.cpR(webAppSrc + 'favicon.ico', webApp); | ||
jake.cpR(webAppSrc + 'fileretriever.php', webApp); | ||
jake.cpR(webAppSrc + 'googlea47c4a0b36d11021.html', webApp); | ||
jake.cpR(webAppSrc + 'img/logo.png', webAppImg); | ||
jake.cpR(webAppSrc + 'img/header_background.png', webAppImg); | ||
jake.cpR(webAppSrc + 'doc/', webApp); | ||
|
||
// update date and verison in index.html | ||
replacePlaceholders(webApp + 'index.html'); | ||
replacePlaceholders(webApp + 'index.html'); // TODO: fix bug in replace, should replace all occurrences | ||
|
||
// concatenate and copy ace files | ||
concat({ | ||
src: [ | ||
libSrc + 'ace/ace.js', | ||
libSrc + 'ace/mode-json.js', | ||
libSrc + 'ace/theme-textmate.js', | ||
libSrc + 'ace/theme-jsoneditor.js' | ||
], | ||
dest: webAppAce + 'ace-min.js', | ||
separator: '\n' | ||
}); | ||
jake.cpR(libSrc + 'ace/worker-json.js', webAppAce); | ||
|
||
// copy json lint file | ||
jake.cpR(libSrc + 'jsonlint/jsonlint.js', webAppLib + 'jsonlint/') | ||
|
||
// copy jsoneditor files | ||
jake.cpR(JSONEDITOR_MIN, webAppLib + 'jsoneditor/'); | ||
jake.cpR(JSONEDITOR_CSS_MIN, webAppLib + 'jsoneditor/'); | ||
jake.cpR('img', webAppLib + 'jsoneditor/'); | ||
|
||
}); | ||
|
||
/** | ||
* build the chrome app | ||
*/ | ||
desc('Build chrome app'); | ||
task('chromeapp', {async: true}, function () { | ||
var folder = BUILD + '/app/'; | ||
var file = folder + 'chrome.zip'; | ||
jake.mkdirP(folder); | ||
|
||
var output = fs.createWriteStream(file); | ||
var archive = archiver('zip'); | ||
|
||
archive.on('error', function(err) { | ||
throw err; | ||
}); | ||
|
||
// create a temporary manifest file with version number | ||
var manifestTmp = folder + 'manifest.json.tmp'; | ||
jake.cpR('./app/chrome/manifest.json', manifestTmp); | ||
replacePlaceholders(manifestTmp); | ||
|
||
archive.pipe(output); | ||
archive.append(fs.createReadStream(manifestTmp), {name: 'manifest.json'}); | ||
archive.append(fs.createReadStream('./app/web/img/icon_16.png'), {name: 'icon_16.png'}); | ||
archive.append(fs.createReadStream('./app/web/img/icon_128.png'), {name: 'icon_128.png'}); | ||
|
||
// cleanup temporary manifest file | ||
fs.unlinkSync(manifestTmp); | ||
|
||
archive.finalize(function(err, written) { | ||
if (err) { | ||
throw err; | ||
} | ||
|
||
console.log('Created chrome app ' + file); | ||
complete(); | ||
}); | ||
}); | ||
|
||
/** | ||
* replace version, date, and name placeholders in the provided file | ||
* @param {String} filename | ||
*/ | ||
var replacePlaceholders = function (filename) { | ||
replace({ | ||
replacements: [ | ||
{pattern: '@@date', replacement: today()}, | ||
{pattern: '@@version', replacement: version()} | ||
], | ||
src: filename | ||
}); | ||
}; |
Oops, something went wrong.