diff --git a/package.json b/package.json index 7359233..afcce5d 100644 --- a/package.json +++ b/package.json @@ -14,20 +14,20 @@ ], "scripts": { "jshint": "jshint lib/*.js lib/**/*.js --exclude lib/dotjs/**/*", - "eslint": "if-node-version '>=4' eslint lib/*.js lib/compile/*.js spec", + "eslint": "if-node-version \">=4\" eslint lib/*.js lib/compile/*.js spec", "test-spec": "mocha spec/*.spec.js -R spec", "test-fast": "AJV_FAST_TEST=true npm run test-spec", "test-debug": "mocha spec/*.spec.js --debug-brk -R spec", "test-cov": "nyc npm run test-spec", "test-ts": "tsc --target ES5 --noImplicitAny lib/ajv.d.ts", - "bundle": "./scripts/bundle . Ajv pure_getters", - "bundle-regenerator": "./scripts/bundle regenerator", - "bundle-nodent": "./scripts/bundle nodent", - "bundle-all": "rm -rf dist && npm run bundle && npm run bundle-regenerator && npm run bundle-nodent", - "bundle-beautify": "./scripts/bundle js-beautify", - "build": "rm -f lib/dotjs/*.js && node scripts/compile-dots.js", + "bundle": "node ./scripts/bundle.js . Ajv pure_getters", + "bundle-regenerator": "node ./scripts/bundle.js regenerator", + "bundle-nodent": "node ./scripts/bundle.js nodent", + "bundle-all": "del-cli dist && npm run bundle && npm run bundle-regenerator && npm run bundle-nodent", + "bundle-beautify": "node ./scripts/bundle.js js-beautify", + "build": "del-cli lib/dotjs/*.js && node scripts/compile-dots.js", "test-karma": "karma start --single-run --browsers PhantomJS", - "test-browser": "rm -rf .browser && npm run bundle-all && scripts/prepare-tests && npm run test-karma", + "test-browser": "del-cli .browser && npm run bundle-all && scripts/prepare-tests && npm run test-karma", "test": "npm run jshint && npm run eslint && npm run test-ts && npm run build && npm run test-cov && npm run test-browser", "prepublish": "npm run build && npm run bundle-all", "watch": "watch 'npm run build' ./lib/dot" @@ -73,6 +73,7 @@ "browserify": "^14.1.0", "chai": "^3.5.0", "coveralls": "^2.11.4", + "del-cli": "^0.2.1", "dot": "^1.0.3", "eslint": "^3.2.2", "gh-pages-generator": "^0.2.0", diff --git a/scripts/bundle b/scripts/bundle deleted file mode 100755 index caa03e5..0000000 --- a/scripts/bundle +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env sh - -set -e - -package=$1 -standalone=$2 -compress=$3 - -name=$(./scripts/info $package name) -main=$(./scripts/info $package main) -version=$(./scripts/info $package version) -description=$(./scripts/info $package description) - -if [ "$package" != "." ]; then - package="./node_modules/$package" -fi - -mkdir -p dist - -browserify -r "$package/$main:$name" \ - -o "dist/$name.bundle.js" \ - $([ -n "$standalone" ] && echo "-s $standalone") - -uglifyjs dist/$name.bundle.js \ - -o dist/$name.min.js \ - -c $compress \ - -m \ - $([ -n "$standalone" ] && echo "--source-map dist/$name.min.js.map -r $standalone") \ - --preamble "/* $name $version: $description */" - -if [ -z "$standalone" ]; then - rm dist/$name.bundle.js -fi diff --git a/scripts/bundle.js b/scripts/bundle.js new file mode 100644 index 0000000..b26cfd0 --- /dev/null +++ b/scripts/bundle.js @@ -0,0 +1,56 @@ +'use strict'; + +var pkg = process.argv[2]; +var standalone = process.argv[3]; +var compress = process.argv[4]; + +var fs = require('fs'); +var packageDir = __dirname + '/..'; +if ('.' !== pkg) { + packageDir += '/node_modules/' + pkg; +} +var json = JSON.parse(fs.readFileSync(packageDir + '/package.json', 'utf8')); + +var distDir = __dirname + '/../dist'; +if (!fs.existsSync(distDir)) { + fs.mkdirSync(distDir); +} + +var browserify = require('browserify'); +var bo = {}; +if (standalone) { + bo.standalone = standalone; +} +var b = browserify(bo); +b.require(packageDir + '/' + json.main, {expose: json.name}); +var outputPath = distDir + '/' + json.name + '.bundle.js'; +b.bundle().pipe(fs.createWriteStream(outputPath)).on('close', function () { + var UglifyJS = require("uglify-js"); + var uglifyOpts = { + warnings: true, + compress: {}, + output: { + preamble: '/* ' + json.name + ' ' + json.version + ': ' + json.description + ' */' + } + }; + if (compress) { + var compressOpts = compress.split(','); + for (var i = 0, l = compressOpts.length; i