diff --git a/package-lock.json b/package-lock.json index f7ad2be433..d600450942 100644 --- a/package-lock.json +++ b/package-lock.json @@ -262,6 +262,16 @@ "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", "dev": true }, + "axios": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.16.2.tgz", + "integrity": "sha1-uk+S8XFn37q0CYN4VFS5rBScPG0=", + "dev": true, + "requires": { + "follow-redirects": "1.2.4", + "is-buffer": "1.1.5" + } + }, "babel-cli": { "version": "7.0.0-beta.2", "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-7.0.0-beta.2.tgz", @@ -1230,6 +1240,79 @@ "glob": "7.1.2" } }, + "bundlesize": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/bundlesize/-/bundlesize-0.14.4.tgz", + "integrity": "sha512-Qi04ADUB+FoeBD98XuSLNt54SW4onfMyuNHnyaHS6rq6/+D11RR+lzADoxFmf5ei9iu1sBqxdltAh6lbJGCT0Q==", + "dev": true, + "requires": { + "axios": "0.16.2", + "bytes": "2.5.0", + "ci-env": "1.4.0", + "commander": "2.11.0", + "github-build": "1.2.0", + "glob": "7.1.2", + "gzip-size": "3.0.0", + "prettycli": "1.4.3", + "read-pkg-up": "2.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "bytes": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.5.0.tgz", + "integrity": "sha1-TJQj6i0lLCcMQbK97+/5u2tiwGo=", + "dev": true + }, "caller-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", @@ -1312,6 +1395,12 @@ "readdirp": "2.1.0" } }, + "ci-env": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ci-env/-/ci-env-1.4.0.tgz", + "integrity": "sha512-IRvBrZSkdlsHgGZtaM41WBHJKEHpheqMO6B8lHN452zHiKN0imDcDjI9rIqIA4Y5/2uOAxnA8yYqWBzoYqxMMQ==", + "dev": true + }, "circular-json": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", @@ -2300,6 +2389,26 @@ "write": "0.2.1" } }, + "follow-redirects": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.2.4.tgz", + "integrity": "sha512-Suw6KewLV2hReSyEOeql+UUkBVyiBm3ok1VPrVFRZnQInWpdoZbbiG5i8aJVSjTr0yQ4Ava0Sh6/joCg1Brdqw==", + "dev": true, + "requires": { + "debug": "2.6.9" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -2480,6 +2589,44 @@ "assert-plus": "1.0.0" } }, + "github-build": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/github-build/-/github-build-1.2.0.tgz", + "integrity": "sha512-Iq7NialLYz5yRZDkiX8zaOWd+N3BssJJfUvG7wd8r4MeLCN88SdxEYo2esseMLpLtP4vNXhgamg1eRm7hw59qw==", + "dev": true, + "requires": { + "axios": "0.15.3" + }, + "dependencies": { + "axios": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.15.3.tgz", + "integrity": "sha1-LJ1jiy4ZGgjqHWzJiOrda6W9wFM=", + "dev": true, + "requires": { + "follow-redirects": "1.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "follow-redirects": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.0.0.tgz", + "integrity": "sha1-jjQpjL0uF28lTv/sdaHHjMhJ/Tc=", + "dev": true, + "requires": { + "debug": "2.6.9" + } + } + } + }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", @@ -2613,6 +2760,15 @@ "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", "dev": true }, + "gzip-size": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", + "dev": true, + "requires": { + "duplexer": "0.1.1" + } + }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -5002,6 +5158,15 @@ "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", "dev": true }, + "prettycli": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/prettycli/-/prettycli-1.4.3.tgz", + "integrity": "sha512-KLiwAXXfSWXZqGmZlnKPuGMTFp+0QbcySplL1ft9gfteT/BNsG64Xo8u2Qr9r+qnsIZWBQ66Zs8tg+8s2fmzvw==", + "dev": true, + "requires": { + "chalk": "2.1.0" + } + }, "private": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", diff --git a/package.json b/package.json index d0dfbe9d84..8f7196851e 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ ], "scripts": { "bash": "bash", + "bundlesize": "bundlesize", "css": "npm-run-all --parallel css-lint* css-compile* --sequential css-prefix* css-minify*", "css-main": "npm-run-all --parallel css-lint css-compile --sequential css-prefix css-minify", "css-docs": "npm-run-all --parallel css-lint-docs css-compile-docs --sequential css-prefix-docs css-minify-docs", @@ -56,7 +57,7 @@ "release-version": "node build/change-version.js", "release-zip": "cd dist/ && zip -r9 bootstrap-$npm_package_version-dist.zip * && shx mv bootstrap-$npm_package_version-dist.zip ..", "dist": "npm-run-all --parallel css js", - "test": "npm-run-all dist --parallel js-test --sequential docs-compile docs-lint", + "test": "npm-run-all dist --parallel js-test --sequential docs-compile docs-lint bundlesize", "watch": "npm-run-all --parallel watch-css watch-js", "watch-css": "nodemon --ignore js/ --ignore dist/ -e scss -x \"npm run css\"", "watch-js": "nodemon --ignore scss/ --ignore js/dist/ --ignore dist/ -e js -x \"npm-run-all --parallel js-compile-*\"" @@ -84,6 +85,7 @@ "babel-plugin-external-helpers": "^7.0.0-beta.0", "babel-plugin-transform-es2015-modules-strip": "^0.1.1", "babel-preset-env": "^2.0.0-beta.0", + "bundlesize": "^0.14.4", "clean-css-cli": "^4.1.6", "cross-env": "^5.0.5", "eslint": "^4.2.0", @@ -131,6 +133,28 @@ "Android >= 4.4", "Opera >= 30" ], + "bundlesize": [ + { + "path": "./dist/css/bootstrap*.css", + "maxSize": "25 kB" + }, + { + "path": "./dist/js/bootstrap.bundle.js", + "maxSize": "50 kB" + }, + { + "path": "./dist/js/bootstrap.bundle.min.js", + "maxSize": "25 kB" + }, + { + "path": "./dist/js/bootstrap.js", + "maxSize": "20 kB" + }, + { + "path": "./dist/js/bootstrap.min.js", + "maxSize": "15 kB" + } + ], "jspm": { "registry": "npm", "main": "js/bootstrap",