make bootstrap compile with Recess instead of Less

This commit is contained in:
Jacob Thornton 2012-04-18 16:16:42 -07:00
parent bc07e2adae
commit edb52a82d8
4 changed files with 1354 additions and 508 deletions

View File

@ -10,8 +10,8 @@ BOOTSTRAP_RESPONSIVE_LESS = ./less/responsive.less
docs: docs:
jshint js/*.js --config js/.jshintrc jshint js/*.js --config js/.jshintrc
jshint js/tests/unit/*.js --config js/.jshintrc jshint js/tests/unit/*.js --config js/.jshintrc
lessc ${BOOTSTRAP_LESS} > ${BOOTSTRAP} recess --compile ${BOOTSTRAP_LESS} > ${BOOTSTRAP}
lessc ${BOOTSTRAP_RESPONSIVE_LESS} > ${BOOTSTRAP_RESPONSIVE} recess --compile ${BOOTSTRAP_RESPONSIVE_LESS} > ${BOOTSTRAP_RESPONSIVE}
node docs/build node docs/build
cp img/* docs/assets/img/ cp img/* docs/assets/img/
cp js/*.js docs/assets/js/ cp js/*.js docs/assets/js/
@ -24,7 +24,7 @@ docs:
# #
# BUILD SIMPLE BOOTSTRAP DIRECTORY # BUILD SIMPLE BOOTSTRAP DIRECTORY
# lessc & uglifyjs are required # recess & uglifyjs are required
# #
bootstrap: bootstrap:
@ -32,10 +32,10 @@ bootstrap:
mkdir -p bootstrap/css mkdir -p bootstrap/css
mkdir -p bootstrap/js mkdir -p bootstrap/js
cp img/* bootstrap/img/ cp img/* bootstrap/img/
lessc ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.css recess --compile ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.css
lessc --yui-compress ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.min.css recess --compress ${BOOTSTRAP_LESS} > bootstrap/css/bootstrap.min.css
lessc ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.css recess --compile ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.css
lessc --yui-compress ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.min.css recess --compress ${BOOTSTRAP_RESPONSIVE_LESS} > bootstrap/css/bootstrap-responsive.min.css
cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js > bootstrap/js/bootstrap.js cat js/bootstrap-transition.js js/bootstrap-alert.js js/bootstrap-button.js js/bootstrap-carousel.js js/bootstrap-collapse.js js/bootstrap-dropdown.js js/bootstrap-modal.js js/bootstrap-tooltip.js js/bootstrap-popover.js js/bootstrap-scrollspy.js js/bootstrap-tab.js js/bootstrap-typeahead.js > bootstrap/js/bootstrap.js
uglifyjs -nc bootstrap/js/bootstrap.js > bootstrap/js/bootstrap.min.tmp.js uglifyjs -nc bootstrap/js/bootstrap.js > bootstrap/js/bootstrap.min.tmp.js
echo "/*!\n* Bootstrap.js by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/" > bootstrap/js/copyright.js echo "/*!\n* Bootstrap.js by @fat & @mdo\n* Copyright 2012 Twitter, Inc.\n* http://www.apache.org/licenses/LICENSE-2.0.txt\n*/" > bootstrap/js/copyright.js

View File

@ -82,14 +82,14 @@ Developers
We have included a makefile with convenience methods for working with the Bootstrap library. We have included a makefile with convenience methods for working with the Bootstrap library.
+ **dependencies** + **dependencies**
Our makefile depends on you having less, uglify.js, and jshint installed. To install, just run the following command in npm: Our makefile depends on you having recess, uglify.js, and jshint installed. To install, just run the following command in npm:
``` ```
$ npm install less uglify-js jshint -g $ npm install recess uglify-js jshint -g
``` ```
+ **build** - `make` + **build** - `make`
Runs the LESS compiler to rebuild the `/less` files and compiles the docs pages. Requires lessc and uglify-js. <a href="http://twitter.github.com/bootstrap/less.html#compiling">Read more in our docs &raquo;</a> Runs the recess compiler to rebuild the `/less` files and compiles the docs pages. Requires recess and uglify-js. <a href="http://twitter.github.com/bootstrap/less.html#compiling">Read more in our docs &raquo;</a>
+ **watch** - `make watch` + **watch** - `make watch`
This is a convenience method for watching just Less files and automatically building them whenever you save. Requires the Watchr gem. This is a convenience method for watching just Less files and automatically building them whenever you save. Requires the Watchr gem.

View File

@ -7,17 +7,21 @@
* *
* Designed and built with all the love in the world @twitter by @mdo and @fat. * Designed and built with all the love in the world @twitter by @mdo and @fat.
*/ */
.clearfix { .clearfix {
*zoom: 1; *zoom: 1;
} }
.clearfix:before, .clearfix:before,
.clearfix:after { .clearfix:after {
display: table; display: table;
content: ""; content: "";
} }
.clearfix:after { .clearfix:after {
clear: both; clear: both;
} }
.hide-text { .hide-text {
font: 0/0 a; font: 0/0 a;
color: transparent; color: transparent;
@ -25,28 +29,34 @@
background-color: transparent; background-color: transparent;
border: 0; border: 0;
} }
.input-block-level { .input-block-level {
display: block; display: block;
width: 100%; width: 100%;
min-height: 28px; min-height: 28px;
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
-moz-box-sizing: border-box; -moz-box-sizing: border-box;
-ms-box-sizing: border-box; -ms-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
} }
.hidden { .hidden {
display: none; display: none;
visibility: hidden; visibility: hidden;
} }
.visible-phone { .visible-phone {
display: none !important; display: none !important;
} }
.visible-tablet { .visible-tablet {
display: none !important; display: none !important;
} }
.hidden-desktop { .hidden-desktop {
display: none !important; display: none !important;
} }
@media (max-width: 767px) { @media (max-width: 767px) {
.visible-phone { .visible-phone {
display: inherit !important; display: inherit !important;
@ -61,6 +71,7 @@
display: none !important; display: none !important;
} }
} }
@media (min-width: 768px) and (max-width: 979px) { @media (min-width: 768px) and (max-width: 979px) {
.visible-tablet { .visible-tablet {
display: inherit !important; display: inherit !important;
@ -75,6 +86,7 @@
display: none !important ; display: none !important ;
} }
} }
@media (max-width: 480px) { @media (max-width: 480px) {
.nav-collapse { .nav-collapse {
-webkit-transform: translate3d(0, 0, 0); -webkit-transform: translate3d(0, 0, 0);
@ -100,14 +112,14 @@
padding-top: 0; padding-top: 0;
} }
.form-horizontal .form-actions { .form-horizontal .form-actions {
padding-left: 10px;
padding-right: 10px; padding-right: 10px;
padding-left: 10px;
} }
.modal { .modal {
position: absolute; position: absolute;
top: 10px; top: 10px;
left: 10px;
right: 10px; right: 10px;
left: 10px;
width: auto; width: auto;
margin: 0; margin: 0;
} }
@ -122,23 +134,24 @@
position: static; position: static;
} }
} }
@media (max-width: 767px) { @media (max-width: 767px) {
body { body {
padding-left: 20px;
padding-right: 20px; padding-right: 20px;
padding-left: 20px;
} }
.navbar-fixed-top, .navbar-fixed-top,
.navbar-fixed-bottom { .navbar-fixed-bottom {
margin-left: -20px;
margin-right: -20px; margin-right: -20px;
margin-left: -20px;
} }
.container-fluid { .container-fluid {
padding: 0; padding: 0;
} }
.dl-horizontal dt { .dl-horizontal dt {
float: none; float: none;
clear: none;
width: auto; width: auto;
clear: none;
text-align: left; text-align: left;
} }
.dl-horizontal dd { .dl-horizontal dd {
@ -156,8 +169,8 @@
} }
[class*="span"], [class*="span"],
.row-fluid [class*="span"] { .row-fluid [class*="span"] {
float: none;
display: block; display: block;
float: none;
width: auto; width: auto;
margin-left: 0; margin-left: 0;
} }
@ -172,9 +185,9 @@
width: 100%; width: 100%;
min-height: 28px; min-height: 28px;
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
-moz-box-sizing: border-box; -moz-box-sizing: border-box;
-ms-box-sizing: border-box; -ms-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
} }
.input-prepend input, .input-prepend input,
.input-append input, .input-append input,
@ -184,6 +197,7 @@
width: auto; width: auto;
} }
} }
@media (min-width: 768px) and (max-width: 979px) { @media (min-width: 768px) and (max-width: 979px) {
.row { .row {
margin-left: -20px; margin-left: -20px;
@ -292,14 +306,14 @@
} }
.row-fluid [class*="span"] { .row-fluid [class*="span"] {
display: block; display: block;
float: left;
width: 100%; width: 100%;
min-height: 28px; min-height: 28px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
float: left;
margin-left: 2.762430939%; margin-left: 2.762430939%;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
} }
.row-fluid [class*="span"]:first-child { .row-fluid [class*="span"]:first-child {
margin-left: 0; margin-left: 0;
@ -345,43 +359,68 @@
.uneditable-input { .uneditable-input {
margin-left: 0; margin-left: 0;
} }
input.span12, textarea.span12, .uneditable-input.span12 { input.span12,
textarea.span12,
.uneditable-input.span12 {
width: 714px; width: 714px;
} }
input.span11, textarea.span11, .uneditable-input.span11 { input.span11,
textarea.span11,
.uneditable-input.span11 {
width: 652px; width: 652px;
} }
input.span10, textarea.span10, .uneditable-input.span10 { input.span10,
textarea.span10,
.uneditable-input.span10 {
width: 590px; width: 590px;
} }
input.span9, textarea.span9, .uneditable-input.span9 { input.span9,
textarea.span9,
.uneditable-input.span9 {
width: 528px; width: 528px;
} }
input.span8, textarea.span8, .uneditable-input.span8 { input.span8,
textarea.span8,
.uneditable-input.span8 {
width: 466px; width: 466px;
} }
input.span7, textarea.span7, .uneditable-input.span7 { input.span7,
textarea.span7,
.uneditable-input.span7 {
width: 404px; width: 404px;
} }
input.span6, textarea.span6, .uneditable-input.span6 { input.span6,
textarea.span6,
.uneditable-input.span6 {
width: 342px; width: 342px;
} }
input.span5, textarea.span5, .uneditable-input.span5 { input.span5,
textarea.span5,
.uneditable-input.span5 {
width: 280px; width: 280px;
} }
input.span4, textarea.span4, .uneditable-input.span4 { input.span4,
textarea.span4,
.uneditable-input.span4 {
width: 218px; width: 218px;
} }
input.span3, textarea.span3, .uneditable-input.span3 { input.span3,
textarea.span3,
.uneditable-input.span3 {
width: 156px; width: 156px;
} }
input.span2, textarea.span2, .uneditable-input.span2 { input.span2,
textarea.span2,
.uneditable-input.span2 {
width: 94px; width: 94px;
} }
input.span1, textarea.span1, .uneditable-input.span1 { input.span1,
textarea.span1,
.uneditable-input.span1 {
width: 32px; width: 32px;
} }
} }
@media (min-width: 1200px) { @media (min-width: 1200px) {
.row { .row {
margin-left: -30px; margin-left: -30px;
@ -490,14 +529,14 @@
} }
.row-fluid [class*="span"] { .row-fluid [class*="span"] {
display: block; display: block;
float: left;
width: 100%; width: 100%;
min-height: 28px; min-height: 28px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
float: left;
margin-left: 2.564102564%; margin-left: 2.564102564%;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
} }
.row-fluid [class*="span"]:first-child { .row-fluid [class*="span"]:first-child {
margin-left: 0; margin-left: 0;
@ -543,40 +582,64 @@
.uneditable-input { .uneditable-input {
margin-left: 0; margin-left: 0;
} }
input.span12, textarea.span12, .uneditable-input.span12 { input.span12,
textarea.span12,
.uneditable-input.span12 {
width: 1160px; width: 1160px;
} }
input.span11, textarea.span11, .uneditable-input.span11 { input.span11,
textarea.span11,
.uneditable-input.span11 {
width: 1060px; width: 1060px;
} }
input.span10, textarea.span10, .uneditable-input.span10 { input.span10,
textarea.span10,
.uneditable-input.span10 {
width: 960px; width: 960px;
} }
input.span9, textarea.span9, .uneditable-input.span9 { input.span9,
textarea.span9,
.uneditable-input.span9 {
width: 860px; width: 860px;
} }
input.span8, textarea.span8, .uneditable-input.span8 { input.span8,
textarea.span8,
.uneditable-input.span8 {
width: 760px; width: 760px;
} }
input.span7, textarea.span7, .uneditable-input.span7 { input.span7,
textarea.span7,
.uneditable-input.span7 {
width: 660px; width: 660px;
} }
input.span6, textarea.span6, .uneditable-input.span6 { input.span6,
textarea.span6,
.uneditable-input.span6 {
width: 560px; width: 560px;
} }
input.span5, textarea.span5, .uneditable-input.span5 { input.span5,
textarea.span5,
.uneditable-input.span5 {
width: 460px; width: 460px;
} }
input.span4, textarea.span4, .uneditable-input.span4 { input.span4,
textarea.span4,
.uneditable-input.span4 {
width: 360px; width: 360px;
} }
input.span3, textarea.span3, .uneditable-input.span3 { input.span3,
textarea.span3,
.uneditable-input.span3 {
width: 260px; width: 260px;
} }
input.span2, textarea.span2, .uneditable-input.span2 { input.span2,
textarea.span2,
.uneditable-input.span2 {
width: 160px; width: 160px;
} }
input.span1, textarea.span1, .uneditable-input.span1 { input.span1,
textarea.span1,
.uneditable-input.span1 {
width: 60px; width: 60px;
} }
.thumbnails { .thumbnails {
@ -586,6 +649,7 @@
margin-left: 0; margin-left: 0;
} }
} }
@media (max-width: 979px) { @media (max-width: 979px) {
body { body {
padding-top: 0; padding-top: 0;
@ -602,8 +666,8 @@
padding: 0; padding: 0;
} }
.navbar .brand { .navbar .brand {
padding-left: 10px;
padding-right: 10px; padding-right: 10px;
padding-left: 10px;
margin: 0 0 0 -5px; margin: 0 0 0 -5px;
} }
.nav-collapse { .nav-collapse {
@ -632,15 +696,15 @@
font-weight: bold; font-weight: bold;
color: #999999; color: #999999;
-webkit-border-radius: 3px; -webkit-border-radius: 3px;
-moz-border-radius: 3px; -moz-border-radius: 3px;
border-radius: 3px; border-radius: 3px;
} }
.nav-collapse .btn { .nav-collapse .btn {
padding: 4px 10px 4px; padding: 4px 10px 4px;
font-weight: normal; font-weight: normal;
-webkit-border-radius: 4px; -webkit-border-radius: 4px;
-moz-border-radius: 4px; -moz-border-radius: 4px;
border-radius: 4px; border-radius: 4px;
} }
.nav-collapse .dropdown-menu li + li a { .nav-collapse .dropdown-menu li + li a {
margin-bottom: 2px; margin-bottom: 2px;
@ -650,26 +714,26 @@
background-color: #222222; background-color: #222222;
} }
.nav-collapse.in .btn-group { .nav-collapse.in .btn-group {
margin-top: 5px;
padding: 0; padding: 0;
margin-top: 5px;
} }
.nav-collapse .dropdown-menu { .nav-collapse .dropdown-menu {
position: static; position: static;
top: auto; top: auto;
left: auto; left: auto;
float: none;
display: block; display: block;
float: none;
max-width: none; max-width: none;
margin: 0 15px;
padding: 0; padding: 0;
margin: 0 15px;
background-color: transparent; background-color: transparent;
border: none; border: none;
-webkit-border-radius: 0; -webkit-border-radius: 0;
-moz-border-radius: 0; -moz-border-radius: 0;
border-radius: 0; border-radius: 0;
-webkit-box-shadow: none; -webkit-box-shadow: none;
-moz-box-shadow: none; -moz-box-shadow: none;
box-shadow: none; box-shadow: none;
} }
.nav-collapse .dropdown-menu:before, .nav-collapse .dropdown-menu:before,
.nav-collapse .dropdown-menu:after { .nav-collapse .dropdown-menu:after {
@ -685,9 +749,9 @@
margin: 9px 0; margin: 9px 0;
border-top: 1px solid #222222; border-top: 1px solid #222222;
border-bottom: 1px solid #222222; border-bottom: 1px solid #222222;
-webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
-moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
} }
.navbar .nav-collapse .nav.pull-right { .navbar .nav-collapse .nav.pull-right {
float: none; float: none;
@ -695,17 +759,18 @@
} }
.nav-collapse, .nav-collapse,
.nav-collapse.collapse { .nav-collapse.collapse {
overflow: hidden;
height: 0; height: 0;
overflow: hidden;
} }
.navbar .btn-navbar { .navbar .btn-navbar {
display: block; display: block;
} }
.navbar-static .navbar-inner { .navbar-static .navbar-inner {
padding-left: 10px;
padding-right: 10px; padding-right: 10px;
padding-left: 10px;
} }
} }
@media (min-width: 980px) { @media (min-width: 980px) {
.nav-collapse.collapse { .nav-collapse.collapse {
height: auto !important; height: auto !important;

File diff suppressed because it is too large Load Diff