Add minified js & Use jshint

This commit is contained in:
yushijinhun 2017-10-02 21:29:41 +08:00
parent 8e730add6f
commit 5f621c06a3
No known key found for this signature in database
GPG Key ID: 5BC167F73EA558E4
15 changed files with 275 additions and 64 deletions

3
.jshintrc Normal file
View File

@ -0,0 +1,3 @@
{
"esversion": 6
}

View File

@ -49,9 +49,7 @@ Three.js powered Minecraft skin viewer.
``` ```
# Build # Build
`npm run build` Concatenation only. `npm run build`
`npm run build-babel` Concatenate and compile using Babel (es2015).
[npm-badge]: https://img.shields.io/npm/v/skinview3d.svg [npm-badge]: https://img.shields.io/npm/v/skinview3d.svg

195
package-lock.json generated
View File

@ -714,6 +714,16 @@
"readdirp": "2.1.0" "readdirp": "2.1.0"
} }
}, },
"cli": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz",
"integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=",
"dev": true,
"requires": {
"exit": "0.1.2",
"glob": "7.1.2"
}
},
"commander": { "commander": {
"version": "2.11.0", "version": "2.11.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz",
@ -726,6 +736,15 @@
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"dev": true "dev": true
}, },
"console-browserify": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
"integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
"dev": true,
"requires": {
"date-now": "0.1.4"
}
},
"convert-source-map": { "convert-source-map": {
"version": "1.5.0", "version": "1.5.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz",
@ -742,8 +761,13 @@
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true, "dev": true
"optional": true },
"date-now": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
"integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
"dev": true
}, },
"debug": { "debug": {
"version": "2.6.9", "version": "2.6.9",
@ -763,6 +787,61 @@
"repeating": "2.0.1" "repeating": "2.0.1"
} }
}, },
"dom-serializer": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
"integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
"dev": true,
"requires": {
"domelementtype": "1.1.3",
"entities": "1.1.1"
},
"dependencies": {
"domelementtype": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
"integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=",
"dev": true
},
"entities": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
"integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
"dev": true
}
}
},
"domelementtype": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
"integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
"dev": true
},
"domhandler": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
"integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=",
"dev": true,
"requires": {
"domelementtype": "1.3.0"
}
},
"domutils": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
"integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
"dev": true,
"requires": {
"dom-serializer": "0.1.0",
"domelementtype": "1.3.0"
}
},
"entities": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
"integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=",
"dev": true
},
"escape-string-regexp": { "escape-string-regexp": {
"version": "1.0.5", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
@ -781,6 +860,12 @@
"integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
"dev": true "dev": true
}, },
"exit": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
"integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
"dev": true
},
"expand-brackets": { "expand-brackets": {
"version": "0.1.5", "version": "0.1.5",
"resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
@ -926,6 +1011,45 @@
"os-tmpdir": "1.0.2" "os-tmpdir": "1.0.2"
} }
}, },
"htmlparser2": {
"version": "3.8.3",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
"integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=",
"dev": true,
"requires": {
"domelementtype": "1.3.0",
"domhandler": "2.3.0",
"domutils": "1.5.1",
"entities": "1.0.0",
"readable-stream": "1.1.14"
},
"dependencies": {
"isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
"dev": true
},
"readable-stream": {
"version": "1.1.14",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
"dev": true,
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
"isarray": "0.0.1",
"string_decoder": "0.10.31"
}
},
"string_decoder": {
"version": "0.10.31",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
"dev": true
}
}
},
"inflight": { "inflight": {
"version": "1.0.6", "version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@ -1067,6 +1191,30 @@
"integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
"dev": true "dev": true
}, },
"jshint": {
"version": "2.9.5",
"resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.5.tgz",
"integrity": "sha1-HnJSkVzmgbQIJ+4UJIxG006apiw=",
"dev": true,
"requires": {
"cli": "1.0.1",
"console-browserify": "1.1.0",
"exit": "0.1.2",
"htmlparser2": "3.8.3",
"lodash": "3.7.0",
"minimatch": "3.0.4",
"shelljs": "0.3.0",
"strip-json-comments": "1.0.4"
},
"dependencies": {
"lodash": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz",
"integrity": "sha1-Nni9irmVBXwHreg27S7wh9qBHUU=",
"dev": true
}
}
},
"json5": { "json5": {
"version": "0.5.1", "version": "0.5.1",
"resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
@ -1428,6 +1576,27 @@
"rollup-pluginutils": "1.5.2" "rollup-pluginutils": "1.5.2"
} }
}, },
"rollup-plugin-uglify": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/rollup-plugin-uglify/-/rollup-plugin-uglify-2.0.1.tgz",
"integrity": "sha1-Z7N60e/a+9g69MNrQMGJ7khmyWk=",
"dev": true,
"requires": {
"uglify-js": "3.1.3"
},
"dependencies": {
"uglify-js": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.3.tgz",
"integrity": "sha512-5ZUOgufCHjN2mBBLfz63UtWTP6va2sSzBpNCM+/iqI6RnPzEhANmB0EKiKBYdQbc3v7KeomXJ2DJx0Xq9gvUvA==",
"dev": true,
"requires": {
"commander": "2.11.0",
"source-map": "0.5.7"
}
}
}
},
"rollup-pluginutils": { "rollup-pluginutils": {
"version": "1.5.2", "version": "1.5.2",
"resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz", "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz",
@ -1451,6 +1620,12 @@
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"shelljs": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz",
"integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=",
"dev": true
},
"slash": { "slash": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
@ -1491,6 +1666,12 @@
"ansi-regex": "2.1.1" "ansi-regex": "2.1.1"
} }
}, },
"strip-json-comments": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
"integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=",
"dev": true
},
"supports-color": { "supports-color": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@ -1514,6 +1695,16 @@
"integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
"dev": true "dev": true
}, },
"uglify-es": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.1.3.tgz",
"integrity": "sha512-Nuo5gkv/Q6PmLa+Ui2LvK+87YdMAcuXfRIWF0uVfkHVSfpT3Ue0euCSu4t0b8xv4Bt05lmXUT8bLI9OmnyPj8A==",
"dev": true,
"requires": {
"commander": "2.11.0",
"source-map": "0.5.7"
}
},
"user-home": { "user-home": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz",

View File

@ -4,10 +4,9 @@
"description": "Three.js powered Minecraft skin viewer", "description": "Three.js powered Minecraft skin viewer",
"main": "src/skinview3d.js", "main": "src/skinview3d.js",
"scripts": { "scripts": {
"build": "./node_modules/.bin/rollup -c rollup.config.default.js", "build": "rollup -c tools/rollup.default.js && rollup -c tools/rollup.min.js && rollup -c tools/rollup.babel.js && rollup -c tools/rollup.babel.min.js",
"build-babel": "./node_modules/.bin/rollup -c rollup.config.babel.js", "prepare": "npm test && rm -rf build && npm run build",
"prepare": "rm -rf build && npm run build && npm run build-babel", "test": "jshint src"
"test": "echo \"Error: no test specified\" && exit 1"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
@ -26,7 +25,10 @@
"babel-cli": "^6.26.0", "babel-cli": "^6.26.0",
"babel-plugin-external-helpers": "^6.22.0", "babel-plugin-external-helpers": "^6.22.0",
"babel-preset-es2015": "^6.24.1", "babel-preset-es2015": "^6.24.1",
"jshint": "^2.9.5",
"rollup": "^0.50.0", "rollup": "^0.50.0",
"rollup-plugin-babel": "^3.0.2" "rollup-plugin-babel": "^3.0.2",
"rollup-plugin-uglify": "^2.0.1",
"uglify-es": "^3.1.3"
} }
} }

View File

@ -1,27 +0,0 @@
import babel from 'rollup-plugin-babel';
export default {
input: 'src/skinview3d.js',
indent: '\t',
sourcemap: true,
external: ['three'],
globals: {
three: 'THREE'
},
output: [
{
format: 'umd',
name: 'skinview3d',
file: 'build/skinview3d.babel.js'
},
{
format: 'es',
file: 'build/skinview3d.babel.module.js'
}
],
plugins: [
babel({
exclude: 'node_modules/**',
}),
]
};

View File

@ -1,20 +0,0 @@
export default {
input: 'src/skinview3d.js',
indent: '\t',
sourcemap: true,
external: ['three'],
globals: {
three: 'THREE'
},
output: [
{
format: 'umd',
name: 'skinview3d',
file: 'build/skinview3d.js'
},
{
format: 'es',
file: 'build/skinview3d.module.js'
}
],
};

View File

@ -287,7 +287,7 @@ class SkinObject extends THREE.Group {
this.leftLeg.position.x = 2; this.leftLeg.position.x = 2;
this.add(this.leftLeg); this.add(this.leftLeg);
} }
}; }
class CapeObject extends THREE.Group { class CapeObject extends THREE.Group {
constructor(capeMaterial) { constructor(capeMaterial) {
@ -309,7 +309,7 @@ class CapeObject extends THREE.Group {
this.cape.position.z = -0.5; this.cape.position.z = -0.5;
this.add(this.cape); this.add(this.cape);
} }
}; }
class PlayerObject extends THREE.Group { class PlayerObject extends THREE.Group {
constructor(slim, layer1Material, layer2Material, capeMaterial) { constructor(slim, layer1Material, layer2Material, capeMaterial) {
@ -328,6 +328,6 @@ class PlayerObject extends THREE.Group {
this.cape.visible = false; this.cape.visible = false;
this.add(this.cape); this.add(this.cape);
} }
}; }
export { SkinObject, CapeObject, PlayerObject }; export { SkinObject, CapeObject, PlayerObject };

View File

@ -1,4 +1,5 @@
/** /**
* @license
* Copyright (C) 2010-2017 three.js authors * Copyright (C) 2010-2017 three.js authors
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy * Permission is hereby granted, free of charge, to any person obtaining a copy
@ -19,12 +20,15 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE. * THE SOFTWARE.
*/ */
// The code was originally from https://github.com/mrdoob/three.js/blob/d45a042cf962e9b1aa9441810ba118647b48aacb/examples/js/controls/OrbitControls.js /**
* @preserve
* The code was originally from https://github.com/mrdoob/three.js/blob/d45a042cf962e9b1aa9441810ba118647b48aacb/examples/js/controls/OrbitControls.js
*/
import THREE from "three"; import THREE from "three";
class OrbitControls extends THREE.EventDispatcher { class OrbitControls extends THREE.EventDispatcher {
/** /**
* @preserve
* @author qiao / https://github.com/qiao * @author qiao / https://github.com/qiao
* @author mrdoob / http://mrdoob.com * @author mrdoob / http://mrdoob.com
* @author alteredq / http://alteredqualia.com/ * @author alteredq / http://alteredqualia.com/

View File

@ -1,4 +1,5 @@
/** /**
* @license
* skinview3d <https://github.com/to2mbn/skinview3d> * skinview3d <https://github.com/to2mbn/skinview3d>
* *
* Copyright (C) 2017 the original author or authors * Copyright (C) 2017 the original author or authors

View File

@ -213,7 +213,7 @@ class SkinViewer {
set height(newHeight) { set height(newHeight) {
this.setSize(this.width, newHeight); this.setSize(this.width, newHeight);
} }
}; }
class SkinControl { class SkinControl {
constructor(skinViewer) { constructor(skinViewer) {
@ -240,6 +240,6 @@ class SkinControl {
this.skinViewer.domElement.removeEventListener("contextmenu", this.animationPauseListener, false); this.skinViewer.domElement.removeEventListener("contextmenu", this.animationPauseListener, false);
this.orbitControls.dispose(); this.orbitControls.dispose();
} }
}; }
export { SkinViewer, SkinControl }; export { SkinViewer, SkinControl };

2
tools/rollup.babel.js Normal file
View File

@ -0,0 +1,2 @@
import { buildType } from './rollup.common';
export default buildType({ postfix: '.babel', babel: true, uglify: false });

2
tools/rollup.babel.min.js vendored Normal file
View File

@ -0,0 +1,2 @@
import { buildType } from './rollup.common';
export default buildType({ postfix: '.babel.min', babel: true, uglify: true });

51
tools/rollup.common.js Normal file
View File

@ -0,0 +1,51 @@
import uglify from 'rollup-plugin-uglify';
import { minify } from 'uglify-es';
import babel from 'rollup-plugin-babel';
let buildType = config => {
let options = {
input: 'src/skinview3d.js',
indent: '\t',
sourcemap: true,
external: ['three'],
globals: {
three: 'THREE'
},
output: [
{
format: 'umd',
name: 'skinview3d',
file: `build/skinview3d${config.postfix}.js`
},
{
format: 'es',
file: `build/skinview3d${config.postfix}.module.js`
}
],
plugins: []
};
if (config.babel) {
options.plugins.push(
babel({
exclude: 'node_modules/**',
})
);
}
if (config.uglify) {
options.plugins.push(
uglify({
output: {
comments: (node, comment) => {
let text = comment.value;
let type = comment.type;
if (type == "comment2") {
// multiline comment
return /@preserve|@license|@cc_on/i.test(text);
}
}
}
}, minify)
);
}
return options;
};
export { buildType };

2
tools/rollup.default.js Normal file
View File

@ -0,0 +1,2 @@
import { buildType } from './rollup.common';
export default buildType({ postfix: '', babel: false, uglify: false });

2
tools/rollup.min.js vendored Normal file
View File

@ -0,0 +1,2 @@
import { buildType } from './rollup.common';
export default buildType({ postfix: '.min', babel: false, uglify: true });