Skip to content
Snippets Groups Projects
Commit f4fe34e8 authored by Alvaro Cabrera's avatar Alvaro Cabrera
Browse files

Upgrade build system

parent b9e836a0
No related branches found
No related tags found
No related merge requests found
# IDEs # IDEs
.idea .idea
.vscode .vscode
.tarima
*~ *~
*.log *.log
*.tgz *.tgz
......
{ {
"name": "json-schema-faker", "name": "json-schema-faker",
"version": "0.3.6", "version": "0.4.4",
"description": "JSON-Schema + fake data generators", "description": "JSON-Schema + fake data generators",
"homepage": "http://json-schema-faker.js.org", "homepage": "http://json-schema-faker.js.org",
"main": "dist/json-schema-faker.js", "main": "dist/json-schema-faker.js",
......
#!/bin/sh
VERSION="$(cat package.json | grep '"version":')"
VERSION=${VERSION##*:}
VERSION=${VERSION%,*}
VERSION=$(echo $VERSION | sed 's/"//g')
SEARCH='("version":[[:space:]]*").+(")'
REPLACE="\1${VERSION}\2"
sed -i ".tmp" -E "s/${SEARCH}/${REPLACE}/g" bower.json
rm *.tmp
echo $VERSION
// discuss // discuss
var bundleName = 'jsf'; var bundleName = 'JSONSchemaFaker';
// boilerplate... // boilerplate...
var fs = require('fs-extra'), var fs = require('fs-extra'),
path = require('path'), path = require('path'),
glob = require('glob'), glob = require('glob'),
uglifyjs = require('uglify-js'), rollup = require('rollup'),
browserify = require('browserify'), commonJs = require('rollup-plugin-commonjs'),
nodeResolve = require('rollup-plugin-node-resolve'),
template = require('lodash.template'); template = require('lodash.template');
var buildDir = __dirname, var buildDir = __dirname,
projectDir = path.join(__dirname, '..'); projectDir = path.join(__dirname, '..');
var BANNER_TEXT = fs.readFileSync(path.join(buildDir, '.banner.txt')).toString(), var BANNER_TEXT = fs.readFileSync(path.join(buildDir, '.banner.txt')).toString();
LOCALE_TEXT = fs.readFileSync(path.join(buildDir, '.locale.js')).toString();
var pkg = require(path.join(projectDir, 'package.json')), var pkg = require(path.join(projectDir, 'package.json')),
bannerTemplate = template(BANNER_TEXT), bannerTemplate = template(BANNER_TEXT);
localeTemplate = template(LOCALE_TEXT);
var banner = bannerTemplate({ pkg: pkg, now: (new Date()).toISOString().replace('T', ' ') }); var banner = bannerTemplate({ pkg: pkg, now: (new Date()).toISOString().replace('T', ' ') });
// reuse instance later
var b = browserify({
detectGlobals: false,
insertGlobals: false,
builtins: false,
standalone: bundleName
});
// custom bundler // custom bundler
function bundle(options, next) { function bundle(options, next) {
b.reset();
var destFile = path.join(projectDir, 'dist', options.dest || '', options.id + '.js'); var destFile = path.join(projectDir, 'dist', options.dest || '', options.id + '.js');
if (!options.src) { rollup.rollup({
// bundle from generated source input: options.src,
options.src = path.join(projectDir, options.dest, options.id + '.js'); plugins: [
{
fs.outputFileSync(options.src, localeTemplate({ lang: options.id })); resolveId(importee, importer) {
} if (!importer) {
return importee;
b.add(path.resolve(options.src), { expose: pkg.name, entry: true }); }
b.bundle(function(err, buffer) { switch (importee) {
if (err) { case 'json-schema-ref-parser':
return next(err); return importee;
}
},
load(importee) {
switch (importee) {
case 'json-schema-ref-parser':
return 'export default __DEREQ__("' + importee + '");';
}
},
},
commonJs(),
nodeResolve({
module: true,
jsnext: true,
main: true,
browser: true,
}),
],
}).then(function(_bundle) {
return _bundle.generate({
banner,
format: 'umd',
name: bundleName,
});
}).then(function(result) {
function dereq(file) {
return 'createCommonjsModule(function(module, exports) {'
+ fs.readFileSync(file).toString().replace(/\brequire\b/g, '_dereq_')
+ '});';
} }
// write out the generated bundle! var _bundle = result.code.replace(/__DEREQ__\("(.+?)"\);/g, (_, src) => {
var code = buffer.toString(); if (src === 'json-schema-ref-parser') {
return dereq(require.resolve('json-schema-ref-parser/dist/ref-parser.js'));
var min = uglifyjs.minify(code, {
fromString: true,
compress: true,
mangle: true,
filename: options.src,
output: {
comments: /^!|^\*!|@preserve|@license|@cc_on/
} }
}); });
var gcc = require('google-closure-compiler-js').compile;
var min = gcc({
jsCode: [{ src: _bundle }],
languageIn: 'ECMASCRIPT6',
languageOut: 'ECMASCRIPT5',
compilationLevel: 'ADVANCED',
warningLevel: 'VERBOSE',
env: 'CUSTOM',
createSourceMap: false,
applyInputSourceMaps: false,
}).compiledCode;
// minified output // minified output
fs.outputFileSync(destFile.replace(/\.js$/, '.min.js'), banner + min.code); fs.outputFileSync(destFile.replace(/\.js$/, '.min.js'), min);
// regular output // regular output
fs.outputFileSync(destFile, banner + code); fs.outputFileSync(destFile, _bundle);
// OK // OK
console.log('Bundle: ' + destFile); console.log('Bundle: ' + destFile);
next(); next();
})
.catch(function(error) {
console.log(error.stack);
}); });
} }
console.log('Building...');
bundle({ id: pkg.name, src: path.join(projectDir, 'lib/index.js') }, function(err) {
if (err) {
throw err;
return;
}
});
var outputs = [ var outputs = [
{ id: pkg.name, src: projectDir } { id: pkg.name, src: projectDir }
]; ];
......
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
...@@ -12,7 +12,9 @@ ...@@ -12,7 +12,9 @@
"dev": "jasmine-node spec/schema --coffee --verbose --autoTest --watchFolders lib", "dev": "jasmine-node spec/schema --coffee --verbose --autoTest --watchFolders lib",
"cover": "istanbul cover --root lib --x '**/spec/**' -- jasmine-node --coffee spec", "cover": "istanbul cover --root lib --x '**/spec/**' -- jasmine-node --coffee spec",
"cover:up": "codecov --file=coverage/lcov.info --disable=gcov -e TRAVIS_NODE_VERSION", "cover:up": "codecov --file=coverage/lcov.info --disable=gcov -e TRAVIS_NODE_VERSION",
"dist": "node build/dist.js", "dist": "yarn build && yarn build:dist",
"build": "tarima -qfe dist VERSION=`./build/VERSION`",
"build:dist": "yarn build && node build/dist.js",
"tsc": "bash build/tsc.sh", "tsc": "bash build/tsc.sh",
"tsify": "browserify ts/index.ts -p [ tsify ] > dist/temp-bundle.js", "tsify": "browserify ts/index.ts -p [ tsify ] > dist/temp-bundle.js",
"typedoc": "typedoc --out docs/html ts/ --module commonjs", "typedoc": "typedoc --out docs/html ts/ --module commonjs",
...@@ -35,26 +37,50 @@ ...@@ -35,26 +37,50 @@
}, },
"bugs": "https://github.com/json-schema-faker/json-schema-faker/issues", "bugs": "https://github.com/json-schema-faker/json-schema-faker/issues",
"license": "MIT", "license": "MIT",
"tarima": {
"src": "ts",
"dest": "lib",
"bundle": true,
"ignore": [
"**/*.d.ts"
],
"filter": [
"!*/*/**"
],
"rename": [
"ts/**:{filepath/1}/{filename}.{extname}"
],
"bundleOptions": {
"rollup": {
"bundle": "JSONSchemaFaker",
"format": "cjs",
"interop": false
}
}
},
"dependencies": { "dependencies": {
"chance": "^1.0.11", "chance": "^1.0.11",
"deref": "^0.6.4", "deref": "^0.7.0",
"faker": "^4.1.0", "faker": "^4.1.0",
"randexp": "^0.4.6" "randexp": "^0.4.6"
}, },
"devDependencies": { "devDependencies": {
"browserify": "^13.1.1",
"casual": "^1.5.8",
"clone": "^2.1.0", "clone": "^2.1.0",
"codecov": "^1.0.1", "codecov": "^1.0.1",
"eslint": "^3.11.1", "eslint": "^3.11.1",
"fs-extra": "^1.0.0", "fs-extra": "^1.0.0",
"glob": "^7.1.1", "glob": "^7.1.1",
"google-closure-compiler-js": "^20170910.0.0",
"istanbul": "^0.4.5", "istanbul": "^0.4.5",
"jasmine-node": "2.0.0-beta4", "jasmine-node": "2.0.0-beta4",
"jayschema": "^0.3.1", "jayschema": "^0.3.1",
"lodash.template": "^4.4.0", "lodash.template": "^4.4.0",
"rollup": "^0.50.0",
"rollup-plugin-commonjs": "^8.2.1",
"rollup-plugin-node-resolve": "^3.0.0",
"seedrandom": "^2.4.3", "seedrandom": "^2.4.3",
"semver": "^5.3.0", "semver": "^5.3.0",
"tarima": "^3.8.1",
"tslint": "^4.0.2", "tslint": "^4.0.2",
"tv4": "^1.2.7", "tv4": "^1.2.7",
"typedoc": "^0.5.1", "typedoc": "^0.5.1",
......
...@@ -17,6 +17,8 @@ jsf.extend = function(name: string, cb: Function) { ...@@ -17,6 +17,8 @@ jsf.extend = function(name: string, cb: Function) {
return jsf; return jsf;
}; };
jsf.version = '0.4.3'; /* global VERSION */
jsf.version = VERSION;
export = jsf; export = jsf;
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment