diff --git a/Gruntfile.js b/Gruntfile.js index c7b6caca1999..7d16ff4320f7 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -226,6 +226,12 @@ module.exports = function (grunt) { htmlhint: { command: 'npm run htmlhint' }, + sass: { + command: 'npm run sass' + }, + 'sass-docs': { + command: 'npm run sass-docs' + }, 'scss-lint': { command: 'npm run scss-lint' }, @@ -278,9 +284,7 @@ module.exports = function (grunt) { // These plugins provide necessary tasks. - require('load-grunt-tasks')(grunt, { scope: 'devDependencies', - // Exclude Sass compilers. We choose the one to load later on. - pattern: ['grunt-*', '!grunt-sass', '!grunt-contrib-sass'] }) + require('load-grunt-tasks')(grunt) require('time-grunt')(grunt) // Docs HTML validation task @@ -324,15 +328,10 @@ module.exports = function (grunt) { // JS distribution task. grunt.registerTask('dist-js', ['babel:dev', 'concat', 'babel:dist', 'stamp', 'exec:uglify']) - grunt.registerTask('test-scss', ['exec:scss-lint']); + grunt.registerTask('test-scss', ['exec:scss-lint']) // CSS distribution task. - // Supported Compilers: sass (Ruby) and libsass. - (function (sassCompilerName) { - require('./grunt/bs-sass-compile/' + sassCompilerName + '.js')(grunt) - }(process.env.TWBS_SASS || 'libsass')) - // grunt.registerTask('sass-compile', ['sass:core', 'sass:extras', 'sass:docs']); - grunt.registerTask('sass-compile', ['sass:core', 'sass:extras', 'sass:docs']) + grunt.registerTask('sass-compile', ['exec:sass', 'exec:sass-docs']) grunt.registerTask('dist-css', ['sass-compile', 'exec:postcss', 'exec:clean-css', 'exec:clean-css-docs']) diff --git a/docs/getting-started/build-tools.md b/docs/getting-started/build-tools.md index a48304ebcc4c..0d441d216d4e 100644 --- a/docs/getting-started/build-tools.md +++ b/docs/getting-started/build-tools.md @@ -39,15 +39,6 @@ Our Gruntfile includes the following commands and tasks: | `grunt docs` | Builds and tests CSS, JavaScript, and other assets which are used when running the documentation locally via `jekyll serve`. | | `grunt watch` | This is a convenience method for watching just Sass files and automatically building them whenever you save. | -## Switching Sass compilers - -Bootstrap will be compiled with [libsass][libsass] by default, but you can opt into traditional Ruby Sass by setting the `TWBS_SASS` environment variable. Two options are supported: - -* `libsass` (default) to use [libsass][libsass] via [grunt-sass][grunt-sass]. -* `sass` to use [Ruby Sass][ruby-sass] via [grunt-contrib-sass][grunt-contrib-sass]. - -For example, run `TWBS_SASS=sass grunt` to test and build Bootstrap with Ruby Sass. - ## Autoprefixer Bootstrap uses [Autoprefixer][autoprefixer] (included in our Gruntfile and build process) to automatically add vendor prefixes to some CSS properties at build time. Doing so saves us time and code by allowing us to write key parts of our CSS a single time while eliminating the need for vendor mixins like those found in v3. @@ -68,8 +59,4 @@ Learn more about using Jekyll by reading its [documentation](https://jekyllrb.co Should you encounter problems with installing dependencies or running Grunt commands, uninstall all previous dependency versions (global and local). Then, rerun `npm install`. -[ruby-sass]: https://github.com/sass/sass -[grunt-contrib-sass]: https://github.com/gruntjs/grunt-contrib-sass -[libsass]: https://github.com/sass/libsass -[grunt-sass]: https://github.com/sindresorhus/grunt-sass [autoprefixer]: https://github.com/postcss/autoprefixer diff --git a/grunt/bs-sass-compile/libsass.js b/grunt/bs-sass-compile/libsass.js deleted file mode 100644 index 06b9dcc0cdad..000000000000 --- a/grunt/bs-sass-compile/libsass.js +++ /dev/null @@ -1,33 +0,0 @@ -// Compile Bootstrap with [libsass][1] using [grunt-sass][2] -// [1]: https://github.com/sass/libsass -// [2]: https://github.com/sindresorhus/grunt-sass -module.exports = function configureLibsass(grunt) { - grunt.config.merge({ - sass: { - options: { - includePaths: ['scss'], - precision: 6, - sourceComments: false, - sourceMap: true, - outputStyle: 'expanded' - }, - core: { - files: { - 'dist/css/<%= pkg.name %>.css': 'scss/<%= pkg.name %>.scss' - } - }, - extras: { - files: { - 'dist/css/<%= pkg.name %>-grid.css': 'scss/<%= pkg.name %>-grid.scss', - 'dist/css/<%= pkg.name %>-reboot.css': 'scss/<%= pkg.name %>-reboot.scss' - } - }, - docs: { - files: { - 'docs/assets/css/docs.min.css': 'docs/assets/scss/docs.scss' - } - } - } - }) - grunt.loadNpmTasks('grunt-sass') -} diff --git a/grunt/bs-sass-compile/sass.js b/grunt/bs-sass-compile/sass.js deleted file mode 100644 index dadd93d40522..000000000000 --- a/grunt/bs-sass-compile/sass.js +++ /dev/null @@ -1,37 +0,0 @@ -// Compile Bootstrap with [Ruby Sass][1] using [grunt-contrib-sass][2] -// [1]: https://github.com/sass/sass -// [2]: https://github.com/gruntjs/grunt-contrib-sass -module.exports = function configureRubySass(grunt) { - var options = { - loadPath: ['scss'], - precision: 6, - sourcemap: 'auto', - style: 'expanded', - trace: true, - bundleExec: true - } - grunt.config.merge({ - sass: { - core: { - options: options, - files: { - 'dist/css/<%= pkg.name %>.css': 'scss/<%= pkg.name %>.scss' - } - }, - extras: { - options: options, - files: { - 'dist/css/<%= pkg.name %>-grid.css': 'scss/<%= pkg.name %>-grid.scss', - 'dist/css/<%= pkg.name %>-reboot.css': 'scss/<%= pkg.name %>-reboot.scss' - } - }, - docs: { - options: options, - files: { - 'docs/assets/css/docs.min.css': 'docs/assets/scss/docs.scss' - } - } - } - }) - grunt.loadNpmTasks('grunt-contrib-sass') -} diff --git a/grunt/npm-shrinkwrap.json b/grunt/npm-shrinkwrap.json index 06435123ec72..22da376c73db 100644 --- a/grunt/npm-shrinkwrap.json +++ b/grunt/npm-shrinkwrap.json @@ -49,15 +49,15 @@ } }, "ajv": { - "version": "4.10.0", + "version": "4.10.3", "from": "ajv@>=4.7.0 <5.0.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.10.0.tgz", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.10.3.tgz", "dev": true }, "ajv-keywords": { - "version": "1.3.0", + "version": "1.5.0", "from": "ajv-keywords@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.0.tgz", "dev": true }, "align-text": { @@ -230,9 +230,9 @@ "dev": true }, "autoprefixer": { - "version": "6.5.4", + "version": "6.6.0", "from": "autoprefixer@>=6.5.0 <7.0.0", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.5.4.tgz", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.6.0.tgz", "dev": true }, "aws-sign2": { @@ -645,9 +645,9 @@ "optional": true }, "browserslist": { - "version": "1.4.0", - "from": "browserslist@>=1.4.0 <1.5.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.4.0.tgz", + "version": "1.5.1", + "from": "browserslist@>=1.5.1 <1.6.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.5.1.tgz", "dev": true }, "buffer-crc32": { @@ -700,7 +700,7 @@ }, "caniuse-db": { "version": "1.0.30000602", - "from": "caniuse-db@>=1.0.30000597 <2.0.0", + "from": "caniuse-db@>=1.0.30000602 <2.0.0", "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000602.tgz", "dev": true }, @@ -783,20 +783,6 @@ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", "dev": true }, - "cli-table": { - "version": "0.3.1", - "from": "cli-table@>=0.3.1 <0.4.0", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", - "dev": true, - "dependencies": { - "colors": { - "version": "1.0.3", - "from": "colors@1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "dev": true - } - } - }, "cli-width": { "version": "2.1.0", "from": "cli-width@>=2.0.0 <3.0.0", @@ -804,18 +790,10 @@ "dev": true }, "cliui": { - "version": "2.1.0", - "from": "cliui@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "dev": true, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "from": "wordwrap@0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "dev": true - } - } + "version": "3.2.0", + "from": "cliui@>=3.2.0 <4.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "dev": true }, "co": { "version": "4.6.0", @@ -853,12 +831,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", "dev": true }, - "comment-parser": { - "version": "0.3.1", - "from": "comment-parser@>=0.3.1 <0.4.0", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.3.1.tgz", - "dev": true - }, "compress-commons": { "version": "1.1.0", "from": "compress-commons@>=1.1.0 <2.0.0", @@ -946,10 +918,18 @@ "dev": true }, "cross-spawn": { - "version": "0.2.9", - "from": "cross-spawn@>=0.2.3 <0.3.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-0.2.9.tgz", - "dev": true + "version": "3.0.1", + "from": "cross-spawn@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "dev": true, + "dependencies": { + "lru-cache": { + "version": "4.0.2", + "from": "lru-cache@>=4.0.1 <5.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", + "dev": true + } + } }, "cryptiles": { "version": "2.0.5", @@ -963,36 +943,18 @@ "resolved": "https://registry.npmjs.org/csslint/-/csslint-0.10.0.tgz", "dev": true }, - "cst": { - "version": "0.4.9", - "from": "cst@>=0.4.3 <0.5.0", - "resolved": "https://registry.npmjs.org/cst/-/cst-0.4.9.tgz", - "dev": true - }, "currently-unhandled": { "version": "0.4.1", "from": "currently-unhandled@>=0.4.1 <0.5.0", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", "dev": true }, - "cycle": { - "version": "1.0.3", - "from": "cycle@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "dev": true - }, "d": { "version": "0.1.1", "from": "d@>=0.1.1 <0.2.0", "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz", "dev": true }, - "dargs": { - "version": "4.1.0", - "from": "dargs@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", - "dev": true - }, "dashdash": { "version": "1.14.1", "from": "dashdash@>=1.12.0 <2.0.0", @@ -1026,9 +988,9 @@ "dev": true }, "debug": { - "version": "2.5.1", + "version": "2.6.0", "from": "debug@>=2.2.0 <3.0.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.5.1.tgz", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", "dev": true }, "decamelize": { @@ -1037,12 +999,6 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "dev": true }, - "deep-equal": { - "version": "1.0.1", - "from": "deep-equal@*", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "dev": true - }, "deep-is": { "version": "0.1.3", "from": "deep-is@>=0.1.3 <0.2.0", @@ -1129,12 +1085,6 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", "dev": true }, - "each-async": { - "version": "1.1.1", - "from": "each-async@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/each-async/-/each-async-1.1.1.tgz", - "dev": true - }, "ecc-jsbn": { "version": "0.1.1", "from": "ecc-jsbn@>=0.1.1 <0.2.0", @@ -1198,6 +1148,12 @@ "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.4.tgz", "dev": true }, + "es6-object-assign": { + "version": "1.0.3", + "from": "es6-object-assign@>=1.0.3 <2.0.0", + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.0.3.tgz", + "dev": true + }, "es6-promise": { "version": "4.0.5", "from": "es6-promise@>=4.0.3 <4.1.0", @@ -1379,16 +1335,10 @@ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", "dev": true }, - "eyes": { - "version": "0.1.8", - "from": "eyes@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "dev": true - }, "fast-levenshtein": { - "version": "2.0.5", + "version": "2.0.6", "from": "fast-levenshtein@>=2.0.4 <2.1.0", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.5.tgz", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "dev": true }, "faye-websocket": { @@ -1769,20 +1719,6 @@ "resolved": "https://registry.npmjs.org/grunt-contrib-qunit/-/grunt-contrib-qunit-1.2.0.tgz", "dev": true }, - "grunt-contrib-sass": { - "version": "1.0.0", - "from": "grunt-contrib-sass@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/grunt-contrib-sass/-/grunt-contrib-sass-1.0.0.tgz", - "dev": true, - "dependencies": { - "async": { - "version": "0.9.2", - "from": "async@>=0.9.0 <0.10.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "dev": true - } - } - }, "grunt-contrib-watch": { "version": "1.0.0", "from": "grunt-contrib-watch@>=1.0.0 <2.0.0", @@ -1877,12 +1813,6 @@ "resolved": "https://registry.npmjs.org/grunt-lib-phantomjs/-/grunt-lib-phantomjs-1.1.0.tgz", "dev": true }, - "grunt-sass": { - "version": "1.2.1", - "from": "grunt-sass@>=1.2.1 <2.0.0", - "resolved": "https://registry.npmjs.org/grunt-sass/-/grunt-sass-1.2.1.tgz", - "dev": true - }, "grunt-saucelabs": { "version": "9.0.0", "from": "grunt-saucelabs@>=9.0.0 <10.0.0", @@ -2053,12 +1983,6 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", "dev": true }, - "i": { - "version": "0.3.5", - "from": "i@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/i/-/i-0.3.5.tgz", - "dev": true - }, "iconv-lite": { "version": "0.4.15", "from": "iconv-lite@>=0.4.13 <0.5.0", @@ -2095,12 +2019,6 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "dev": true }, - "inherit": { - "version": "2.2.6", - "from": "inherit@>=2.2.2 <3.0.0", - "resolved": "https://registry.npmjs.org/inherit/-/inherit-2.2.6.tgz", - "dev": true - }, "inherits": { "version": "2.0.3", "from": "inherits@>=2.0.3 <3.0.0", @@ -2313,7 +2231,7 @@ }, "jquery": { "version": "3.1.1", - "from": "jquery@>=1.9.1 <4.0.0", + "from": "jquery@>=1.9.1", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.1.1.tgz" }, "js-base64": { @@ -2341,76 +2259,6 @@ "dev": true, "optional": true }, - "jscs": { - "version": "3.0.7", - "from": "jscs@>=3.0.7 <4.0.0", - "resolved": "https://registry.npmjs.org/jscs/-/jscs-3.0.7.tgz", - "dev": true, - "dependencies": { - "commander": { - "version": "2.9.0", - "from": "commander@>=2.9.0 <2.10.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "dev": true - }, - "glob": { - "version": "5.0.15", - "from": "glob@>=5.0.1 <6.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "dev": true - }, - "js-yaml": { - "version": "3.4.6", - "from": "js-yaml@>=3.4.0 <3.5.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.4.6.tgz", - "dev": true - }, - "lodash": { - "version": "3.10.1", - "from": "lodash@>=3.10.0 <3.11.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "dev": true - }, - "natural-compare": { - "version": "1.2.2", - "from": "natural-compare@>=1.2.2 <1.3.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.2.2.tgz", - "dev": true - }, - "strip-bom": { - "version": "2.0.0", - "from": "strip-bom@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "dev": true - } - } - }, - "jscs-jsdoc": { - "version": "2.0.0", - "from": "jscs-jsdoc@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/jscs-jsdoc/-/jscs-jsdoc-2.0.0.tgz", - "dev": true - }, - "jscs-preset-wikimedia": { - "version": "1.0.0", - "from": "jscs-preset-wikimedia@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/jscs-preset-wikimedia/-/jscs-preset-wikimedia-1.0.0.tgz", - "dev": true - }, - "jsdoctypeparser": { - "version": "1.2.0", - "from": "jsdoctypeparser@>=1.2.0 <1.3.0", - "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-1.2.0.tgz", - "dev": true, - "dependencies": { - "lodash": { - "version": "3.10.1", - "from": "lodash@>=3.7.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "dev": true - } - } - }, "jsesc": { "version": "0.5.0", "from": "jsesc@>=0.5.0 <0.6.0", @@ -2479,12 +2327,6 @@ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", "dev": true }, - "jsonlint": { - "version": "1.6.2", - "from": "jsonlint@>=1.6.2 <1.7.0", - "resolved": "https://registry.npmjs.org/jsonlint/-/jsonlint-1.6.2.tgz", - "dev": true - }, "jsonpointer": { "version": "4.0.1", "from": "jsonpointer@>=4.0.0 <5.0.0", @@ -2497,12 +2339,6 @@ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.1.tgz", "dev": true }, - "JSV": { - "version": "4.0.2", - "from": "JSV@>=4.0.0", - "resolved": "https://registry.npmjs.org/JSV/-/JSV-4.0.2.tgz", - "dev": true - }, "kew": { "version": "0.7.0", "from": "kew@>=0.7.0 <0.8.0", @@ -2572,14 +2408,14 @@ } }, "lodash": { - "version": "4.17.2", + "version": "4.17.4", "from": "lodash@>=4.2.0 <5.0.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.2.tgz", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", "dev": true }, "lodash.assign": { "version": "4.2.0", - "from": "lodash.assign@>=4.0.9 <5.0.0", + "from": "lodash.assign@>=4.2.0 <5.0.0", "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", "dev": true }, @@ -2589,6 +2425,12 @@ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "dev": true }, + "lodash.mergewith": { + "version": "4.6.0", + "from": "lodash.mergewith@>=4.6.0 <5.0.0", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", + "dev": true + }, "lodash.pickby": { "version": "4.6.0", "from": "lodash.pickby@>=4.6.0 <5.0.0", @@ -2615,7 +2457,7 @@ }, "lru-cache": { "version": "2.7.3", - "from": "lru-cache@>=2.5.0 <3.0.0", + "from": "lru-cache@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", "dev": true }, @@ -2738,12 +2580,6 @@ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "dev": true }, - "ncp": { - "version": "0.4.2", - "from": "ncp@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", - "dev": true - }, "negotiator": { "version": "0.6.1", "from": "negotiator@0.6.1", @@ -2771,50 +2607,10 @@ } }, "node-sass": { - "version": "3.13.1", - "from": "node-sass@>=3.7.0 <4.0.0", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-3.13.1.tgz", - "dev": true, - "dependencies": { - "cross-spawn": { - "version": "3.0.1", - "from": "cross-spawn@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "dev": true - }, - "lru-cache": { - "version": "4.0.2", - "from": "lru-cache@>=4.0.1 <5.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", - "dev": true - } - } - }, - "nomnom": { - "version": "1.8.1", - "from": "nomnom@>=1.5.0", - "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", - "dev": true, - "dependencies": { - "ansi-styles": { - "version": "1.0.0", - "from": "ansi-styles@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "dev": true - }, - "chalk": { - "version": "0.4.0", - "from": "chalk@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "dev": true - }, - "strip-ansi": { - "version": "0.1.1", - "from": "strip-ansi@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "dev": true - } - } + "version": "4.1.1", + "from": "node-sass@>=4.1.1 <5.0.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.1.1.tgz", + "dev": true }, "nopt": { "version": "3.0.6", @@ -3017,12 +2813,6 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "dev": true }, - "pathval": { - "version": "0.1.1", - "from": "pathval@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-0.1.1.tgz", - "dev": true - }, "pend": { "version": "1.2.0", "from": "pend@>=1.2.0 <1.3.0", @@ -3059,12 +2849,6 @@ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", "dev": true }, - "pkginfo": { - "version": "0.4.0", - "from": "pkginfo@>=0.0.0 <1.0.0", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.0.tgz", - "dev": true - }, "plur": { "version": "1.0.0", "from": "plur@>=1.0.0 <2.0.0", @@ -3084,9 +2868,9 @@ "dev": true }, "postcss": { - "version": "5.2.6", + "version": "5.2.8", "from": "postcss@>=5.2.6 <6.0.0", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.6.tgz", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.8.tgz", "dev": true }, "postcss-cli": { @@ -3095,12 +2879,6 @@ "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-2.6.0.tgz", "dev": true, "dependencies": { - "cliui": { - "version": "3.2.0", - "from": "cliui@>=3.2.0 <4.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "dev": true - }, "glob": { "version": "6.0.4", "from": "glob@>=6.0.1 <7.0.0", @@ -3112,18 +2890,6 @@ "from": "globby@>=4.1.0 <5.0.0", "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz", "dev": true - }, - "window-size": { - "version": "0.2.0", - "from": "window-size@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "dev": true - }, - "yargs": { - "version": "4.8.1", - "from": "yargs@>=4.7.1 <5.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", - "dev": true } } }, @@ -3182,12 +2948,6 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", "dev": true }, - "prompt": { - "version": "0.2.14", - "from": "prompt@>=0.2.14 <0.3.0", - "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz", - "dev": true - }, "pseudomap": { "version": "1.0.2", "from": "pseudomap@>=1.0.1 <2.0.0", @@ -3245,12 +3005,6 @@ } } }, - "read": { - "version": "1.0.7", - "from": "read@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "dev": true - }, "read-file-stdin": { "version": "0.2.1", "from": "read-file-stdin@>=0.2.0 <0.3.0", @@ -3397,12 +3151,6 @@ "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", "dev": true }, - "reserved-words": { - "version": "0.1.1", - "from": "reserved-words@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.1.tgz", - "dev": true - }, "resolve": { "version": "1.2.0", "from": "resolve@>=1.1.6 <2.0.0", @@ -3435,12 +3183,6 @@ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", "dev": true }, - "revalidator": { - "version": "0.1.8", - "from": "revalidator@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", - "dev": true - }, "right-align": { "version": "0.1.3", "from": "right-align@>=0.1.1 <0.2.0", @@ -3469,27 +3211,7 @@ "version": "2.1.2", "from": "sass-graph@>=2.1.1 <3.0.0", "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.1.2.tgz", - "dev": true, - "dependencies": { - "cliui": { - "version": "3.2.0", - "from": "cliui@>=3.2.0 <4.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "dev": true - }, - "window-size": { - "version": "0.2.0", - "from": "window-size@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "dev": true - }, - "yargs": { - "version": "4.8.1", - "from": "yargs@>=4.7.1 <5.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", - "dev": true - } - } + "dev": true }, "sauce-tunnel": { "version": "2.5.0", @@ -3563,9 +3285,10 @@ }, "set-immediate-shim": { "version": "1.0.1", - "from": "set-immediate-shim@>=1.0.0 <2.0.0", + "from": "set-immediate-shim@>=1.0.1 <2.0.0", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "dev": true + "dev": true, + "optional": true }, "setprototypeof": { "version": "1.0.2", @@ -3580,9 +3303,9 @@ "dev": true }, "shx": { - "version": "0.1.4", - "from": "shx@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/shx/-/shx-0.1.4.tgz", + "version": "0.2.1", + "from": "shx@>=0.2.1 <0.3.0", + "resolved": "https://registry.npmjs.org/shx/-/shx-0.2.1.tgz", "dev": true, "dependencies": { "minimist": { @@ -3630,9 +3353,9 @@ "dev": true }, "source-map-support": { - "version": "0.4.7", + "version": "0.4.8", "from": "source-map-support@>=0.4.2 <0.5.0", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.7.tgz", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.8.tgz", "dev": true }, "spdx-correct": { @@ -3679,18 +3402,18 @@ } } }, - "stack-trace": { - "version": "0.0.9", - "from": "stack-trace@>=0.0.0 <0.1.0", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", - "dev": true - }, "statuses": { "version": "1.3.1", "from": "statuses@>=1.3.0 <1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", "dev": true }, + "stdout-stream": { + "version": "1.4.0", + "from": "stdout-stream@>=1.4.0 <2.0.0", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", + "dev": true + }, "stream-buffers": { "version": "2.2.0", "from": "stream-buffers@>=2.1.0 <3.0.0", @@ -3850,24 +3573,12 @@ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz", "dev": true }, - "to-double-quotes": { - "version": "2.0.0", - "from": "to-double-quotes@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/to-double-quotes/-/to-double-quotes-2.0.0.tgz", - "dev": true - }, "to-fast-properties": { "version": "1.0.2", "from": "to-fast-properties@>=1.0.1 <2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.2.tgz", "dev": true }, - "to-single-quotes": { - "version": "2.0.1", - "from": "to-single-quotes@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/to-single-quotes/-/to-single-quotes-2.0.1.tgz", - "dev": true - }, "tough-cookie": { "version": "2.3.2", "from": "tough-cookie@>=2.3.0 <2.4.0", @@ -3919,7 +3630,7 @@ }, "uglify-js": { "version": "2.7.5", - "from": "uglify-js@latest", + "from": "uglify-js@>=2.7.5 <3.0.0", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.7.5.tgz", "dev": true, "dependencies": { @@ -3928,6 +3639,36 @@ "from": "async@>=0.2.6 <0.3.0", "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", "dev": true + }, + "camelcase": { + "version": "1.2.1", + "from": "camelcase@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "from": "cliui@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "dev": true + }, + "window-size": { + "version": "0.1.0", + "from": "window-size@0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "dev": true + }, + "wordwrap": { + "version": "0.0.2", + "from": "wordwrap@0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "from": "yargs@>=3.10.0 <3.11.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "dev": true } } }, @@ -3937,12 +3678,6 @@ "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", "dev": true }, - "underscore": { - "version": "1.6.0", - "from": "underscore@>=1.6.0 <1.7.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "dev": true - }, "underscore.string": { "version": "3.2.3", "from": "underscore.string@>=3.2.3 <3.3.0", @@ -3967,20 +3702,6 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "dev": true }, - "utile": { - "version": "0.2.1", - "from": "utile@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", - "dev": true, - "dependencies": { - "async": { - "version": "0.2.10", - "from": "async@>=0.2.9 <0.3.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "dev": true - } - } - }, "utils-merge": { "version": "1.0.0", "from": "utils-merge@1.0.0", @@ -4011,32 +3732,6 @@ "resolved": "https://registry.npmjs.org/vnu-jar/-/vnu-jar-16.6.29.tgz", "dev": true }, - "vow": { - "version": "0.4.13", - "from": "vow@>=0.4.8 <0.5.0", - "resolved": "https://registry.npmjs.org/vow/-/vow-0.4.13.tgz", - "dev": true - }, - "vow-fs": { - "version": "0.3.6", - "from": "vow-fs@>=0.3.4 <0.4.0", - "resolved": "https://registry.npmjs.org/vow-fs/-/vow-fs-0.3.6.tgz", - "dev": true, - "dependencies": { - "uuid": { - "version": "2.0.3", - "from": "uuid@>=2.0.2 <3.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "dev": true - } - } - }, - "vow-queue": { - "version": "0.4.2", - "from": "vow-queue@>=0.4.1 <0.5.0", - "resolved": "https://registry.npmjs.org/vow-queue/-/vow-queue-0.4.2.tgz", - "dev": true - }, "walkdir": { "version": "0.0.11", "from": "walkdir@>=0.0.11 <0.0.12", @@ -4080,37 +3775,11 @@ "dev": true }, "window-size": { - "version": "0.1.0", - "from": "window-size@0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "version": "0.2.0", + "from": "window-size@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", "dev": true }, - "winston": { - "version": "0.8.3", - "from": "winston@>=0.8.0 <0.9.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", - "dev": true, - "dependencies": { - "async": { - "version": "0.2.10", - "from": "async@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "dev": true - }, - "colors": { - "version": "0.6.2", - "from": "colors@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", - "dev": true - }, - "pkginfo": { - "version": "0.3.1", - "from": "pkginfo@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", - "dev": true - } - } - }, "wordwrap": { "version": "1.0.0", "from": "wordwrap@>=1.0.0 <1.1.0", @@ -4141,20 +3810,6 @@ "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.0.tgz", "dev": true }, - "xmlbuilder": { - "version": "3.1.0", - "from": "xmlbuilder@>=3.1.0 <4.0.0", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-3.1.0.tgz", - "dev": true, - "dependencies": { - "lodash": { - "version": "3.10.1", - "from": "lodash@>=3.5.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "dev": true - } - } - }, "xtend": { "version": "4.0.1", "from": "xtend@>=4.0.0 <5.0.0", @@ -4174,18 +3829,10 @@ "dev": true }, "yargs": { - "version": "3.10.0", - "from": "yargs@>=3.10.0 <3.11.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "dev": true, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "from": "camelcase@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "dev": true - } - } + "version": "4.8.1", + "from": "yargs@>=4.7.1 <5.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", + "dev": true }, "yargs-parser": { "version": "2.4.1", diff --git a/package.json b/package.json index bace757224d8..ee7c2a26dc46 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,8 @@ "htmlhint": "htmlhint --config docs/.htmlhintrc _gh_pages/", "postcss": "postcss --config grunt/postcss.js --replace dist/css/*.css", "postcss-docs": "postcss --config grunt/postcss.js --no-map --replace docs/assets/css/docs.min.css && postcss --config grunt/postcss.js --no-map --replace docs/examples/**/*.css", + "sass": "node-sass --output-style expanded --source-map true --precision 6 scss/bootstrap.scss dist/css/bootstrap.css && node-sass --output-style expanded --source-map true --precision 6 scss/bootstrap-grid.scss dist/css/bootstrap-grid.css && node-sass --output-style expanded --source-map true --precision 6 scss/bootstrap-reboot.scss dist/css/bootstrap-reboot.css", + "sass-docs": "node-sass --output-style expanded --source-map true --precision 6 docs/assets/scss/docs.scss docs/assets/css/docs.min.css", "scss-lint": "bundle exec scss-lint --config scss/.scss-lint.yml --exclude scss/_normalize.scss scss/*.scss", "scss-lint-docs": "bundle exec scss-lint --config scss/.scss-lint.yml --exclude docs/assets/scss/docs.scss docs/assets/scss/*.scss", "uglify": "uglifyjs --compress warnings=false --mangle --comments '/^!/' --output dist/js/bootstrap.min.js dist/js/bootstrap.js", @@ -62,17 +64,16 @@ "grunt-contrib-connect": "^1.0.2", "grunt-contrib-copy": "^1.0.0", "grunt-contrib-qunit": "^1.2.0", - "grunt-contrib-sass": "^1.0.0", "grunt-contrib-watch": "^1.0.0", "grunt-exec": "^1.0.1", "grunt-html": "^8.0.2", "grunt-jekyll": "^0.4.4", - "grunt-sass": "2.0.0", "grunt-saucelabs": "^9.0.0", "grunt-stamp": "^0.3.0", "htmlhint": "^0.9.13", "is-travis": "^1.0.0", "load-grunt-tasks": "^3.5.2", + "node-sass": "^4.1.1", "postcss-cli": "^2.6.0", "postcss-flexbugs-fixes": "^2.0.0", "shelljs": "^0.7.4",