feat(fonts): download fonts from grafana instead of CDN

Makes its possible to run grafana without internet access.
The performance hit by not using a cdn is very small since
most grafana instances are setup on locally.

closes #4223
This commit is contained in:
bergquist
2016-03-16 10:39:45 +01:00
parent 0d7eb18d7b
commit 99e068643b
43 changed files with 441 additions and 152 deletions

View File

@@ -14,7 +14,6 @@
@import "base/reboot"; @import "base/reboot";
@import "base/type"; @import "base/type";
@import "base/forms"; @import "base/forms";
@import "base/fonts";
@import "base/grid"; @import "base/grid";
@import "base/font_awesome"; @import "base/font_awesome";

View File

@@ -1,185 +1,280 @@
/* cyrillic-ext */
@font-face { @font-face {
font-family: 'grafana-icons'; font-family: 'Open Sans';
src: url('../fonts/grafana-icons.eot?h6rv8b'); font-style: normal;
src: url('../fonts/grafana-icons.eot?h6rv8b#iefix') format('embedded-opentype'), font-weight: 300;
url('../fonts/grafana-icons.ttf?h6rv8b') format('truetype'), src: local('Open Sans Light'), local('OpenSans-Light'), url(../fonts/opensans/DXI1ORHCpsQm3Vp6mXoaTa-j2U0lmluP9RWlSytm3ho.woff2) format('woff2');
url('../fonts/grafana-icons.woff?h6rv8b') format('woff'), unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F;
url('../fonts/grafana-icons.svg?h6rv8b#grafana-icons') format('svg');
font-weight: normal;
font-style: normal;
} }
/* cyrillic */
.icon-gf { @font-face {
/* use !important to prevent issues with browser extensions that change fonts */ font-family: 'Open Sans';
font-family: 'grafana-icons' !important; font-style: normal;
speak: none; font-weight: 300;
font-style: normal; src: local('Open Sans Light'), local('OpenSans-Light'), url(../fonts/opensans/DXI1ORHCpsQm3Vp6mXoaTZX5f-9o1vgP2EXwfjgl7AY.woff2) format('woff2');
font-weight: normal; unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
} }
/* greek-ext */
.inline-icon-gf { @font-face {
vertical-align: middle; font-family: 'Open Sans';
font-style: normal;
font-weight: 300;
src: local('Open Sans Light'), local('OpenSans-Light'), url(../fonts/opensans/DXI1ORHCpsQm3Vp6mXoaTRWV49_lSm1NYrwo-zkhivY.woff2) format('woff2');
unicode-range: U+1F00-1FFF;
} }
/* greek */
.icon-gf-raintank_wordmark:before { @font-face {
content: "\e600"; font-family: 'Open Sans';
font-style: normal;
font-weight: 300;
src: local('Open Sans Light'), local('OpenSans-Light'), url(../fonts/opensans/DXI1ORHCpsQm3Vp6mXoaTaaRobkAwv3vxw3jMhVENGA.woff2) format('woff2');
unicode-range: U+0370-03FF;
} }
.icon-gf-raintank_icn:before { /* vietnamese */
content: "\e601"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 300;
src: local('Open Sans Light'), local('OpenSans-Light'), url(../fonts/opensans/DXI1ORHCpsQm3Vp6mXoaTf8zf_FOSsgRmwsS7Aa9k2w.woff2) format('woff2');
unicode-range: U+0102-0103, U+1EA0-1EF1, U+20AB;
} }
.icon-gf-raintank_r-icn:before { /* latin-ext */
content: "\e905"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 300;
src: local('Open Sans Light'), local('OpenSans-Light'), url(../fonts/opensans/DXI1ORHCpsQm3Vp6mXoaTT0LW-43aMEzIO6XUTLjad8.woff2) format('woff2');
unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
} }
.icon-gf-check-alt:before { /* latin */
content: "\e603"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 300;
src: local('Open Sans Light'), local('OpenSans-Light'), url(../fonts/opensans/DXI1ORHCpsQm3Vp6mXoaTegdm0LZdjqr5-oayXSOefg.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
} }
.icon-gf-check:before { /* cyrillic-ext */
content: "\e604"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 400;
src: local('Open Sans'), local('OpenSans'), url(../fonts/opensans/K88pR3goAWT7BTt32Z01mxJtnKITppOI_IvcXXDNrsc.woff2) format('woff2');
unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F;
} }
.icon-gf-collector:before { /* cyrillic */
content: "\e605"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 400;
src: local('Open Sans'), local('OpenSans'), url(../fonts/opensans/RjgO7rYTmqiVp7vzi-Q5URJtnKITppOI_IvcXXDNrsc.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
} }
.icon-gf-dashboard:before { /* greek-ext */
content: "\e606"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 400;
src: local('Open Sans'), local('OpenSans'), url(../fonts/opensans/LWCjsQkB6EMdfHrEVqA1KRJtnKITppOI_IvcXXDNrsc.woff2) format('woff2');
unicode-range: U+1F00-1FFF;
} }
.icon-gf-panel:before { /* greek */
content: "\e904"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 400;
src: local('Open Sans'), local('OpenSans'), url(../fonts/opensans/xozscpT2726on7jbcb_pAhJtnKITppOI_IvcXXDNrsc.woff2) format('woff2');
unicode-range: U+0370-03FF;
} }
.icon-gf-datasources:before { /* vietnamese */
content: "\e607"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 400;
src: local('Open Sans'), local('OpenSans'), url(../fonts/opensans/59ZRklaO5bWGqF5A9baEERJtnKITppOI_IvcXXDNrsc.woff2) format('woff2');
unicode-range: U+0102-0103, U+1EA0-1EF1, U+20AB;
} }
.icon-gf-endpoint-tiny:before { /* latin-ext */
content: "\e608"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 400;
src: local('Open Sans'), local('OpenSans'), url(../fonts/opensans/u-WUoqrET9fUeobQW7jkRRJtnKITppOI_IvcXXDNrsc.woff2) format('woff2');
unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
} }
.icon-gf-endpoint:before { /* latin */
content: "\e609"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 400;
src: local('Open Sans'), local('OpenSans'), url(../fonts/opensans/cJZKeOuBrn4kERxqtaUH3VtXRa8TVwTICgirnJhmVJw.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
} }
.icon-gf-filter:before { /* cyrillic-ext */
content: "\e60a"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 600;
src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(../fonts/opensans/MTP_ySUJH_bn48VBG8sNSq-j2U0lmluP9RWlSytm3ho.woff2) format('woff2');
unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F;
} }
.icon-gf-status:before { /* cyrillic */
content: "\e60b"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 600;
src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(../fonts/opensans/MTP_ySUJH_bn48VBG8sNSpX5f-9o1vgP2EXwfjgl7AY.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
} }
.icon-gf-monitoring:before { /* greek-ext */
content: "\e60c"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 600;
src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(../fonts/opensans/MTP_ySUJH_bn48VBG8sNShWV49_lSm1NYrwo-zkhivY.woff2) format('woff2');
unicode-range: U+1F00-1FFF;
} }
.icon-gf-monitoring-tiny:before { /* greek */
content: "\e620"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 600;
src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(../fonts/opensans/MTP_ySUJH_bn48VBG8sNSqaRobkAwv3vxw3jMhVENGA.woff2) format('woff2');
unicode-range: U+0370-03FF;
} }
.icon-gf-jump-to-dashboard:before { /* vietnamese */
content: "\e60d"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 600;
src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(../fonts/opensans/MTP_ySUJH_bn48VBG8sNSv8zf_FOSsgRmwsS7Aa9k2w.woff2) format('woff2');
unicode-range: U+0102-0103, U+1EA0-1EF1, U+20AB;
} }
.icon-gf-warn:before { /* latin-ext */
content: "\e60e"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 600;
src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(../fonts/opensans/MTP_ySUJH_bn48VBG8sNSj0LW-43aMEzIO6XUTLjad8.woff2) format('woff2');
unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
} }
.icon-gf-nodata:before { /* latin */
content: "\e60f"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 600;
src: local('Open Sans Semibold'), local('OpenSans-Semibold'), url(../fonts/opensans/MTP_ySUJH_bn48VBG8sNSugdm0LZdjqr5-oayXSOefg.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
} }
.icon-gf-critical:before { /* cyrillic-ext */
content: "\e610"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 700;
src: local('Open Sans Bold'), local('OpenSans-Bold'), url(../fonts/opensans/k3k702ZOKiLJc3WVjuplzK-j2U0lmluP9RWlSytm3ho.woff2) format('woff2');
unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F;
} }
.icon-gf-online:before { /* cyrillic */
content: "\e611"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 700;
src: local('Open Sans Bold'), local('OpenSans-Bold'), url(../fonts/opensans/k3k702ZOKiLJc3WVjuplzJX5f-9o1vgP2EXwfjgl7AY.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
} }
.icon-gf-event-error:before { /* greek-ext */
content: "\e623"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 700;
src: local('Open Sans Bold'), local('OpenSans-Bold'), url(../fonts/opensans/k3k702ZOKiLJc3WVjuplzBWV49_lSm1NYrwo-zkhivY.woff2) format('woff2');
unicode-range: U+1F00-1FFF;
} }
.icon-gf-event:before { /* greek */
content: "\e624"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 700;
src: local('Open Sans Bold'), local('OpenSans-Bold'), url(../fonts/opensans/k3k702ZOKiLJc3WVjuplzKaRobkAwv3vxw3jMhVENGA.woff2) format('woff2');
unicode-range: U+0370-03FF;
} }
.icon-gf-sadface:before { /* vietnamese */
content: "\e907"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 700;
src: local('Open Sans Bold'), local('OpenSans-Bold'), url(../fonts/opensans/k3k702ZOKiLJc3WVjuplzP8zf_FOSsgRmwsS7Aa9k2w.woff2) format('woff2');
unicode-range: U+0102-0103, U+1EA0-1EF1, U+20AB;
} }
.icon-gf-private-collector:before { /* latin-ext */
content: "\e612"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 700;
src: local('Open Sans Bold'), local('OpenSans-Bold'), url(../fonts/opensans/k3k702ZOKiLJc3WVjuplzD0LW-43aMEzIO6XUTLjad8.woff2) format('woff2');
unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
} }
.icon-gf-alert:before { /* latin */
content: "\e61f"; @font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 700;
src: local('Open Sans Bold'), local('OpenSans-Bold'), url(../fonts/opensans/k3k702ZOKiLJc3WVjuplzOgdm0LZdjqr5-oayXSOefg.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
} }
.icon-gf-alert-disabled:before { /* cyrillic-ext */
content: "\e621"; @font-face {
font-family: 'Open Sans';
font-style: italic;
font-weight: 400;
src: local('Open Sans Italic'), local('OpenSans-Italic'), url(../fonts/opensans/xjAJXh38I15wypJXxuGMBjTOQ_MqJVwkKsUn0wKzc2I.woff2) format('woff2');
unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F;
} }
.icon-gf-refresh:before { /* cyrillic */
content: "\e613"; @font-face {
font-family: 'Open Sans';
font-style: italic;
font-weight: 400;
src: local('Open Sans Italic'), local('OpenSans-Italic'), url(../fonts/opensans/xjAJXh38I15wypJXxuGMBjUj_cnvWIuuBMVgbX098Mw.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
} }
.icon-gf-save:before { /* greek-ext */
content: "\e614"; @font-face {
font-family: 'Open Sans';
font-style: italic;
font-weight: 400;
src: local('Open Sans Italic'), local('OpenSans-Italic'), url(../fonts/opensans/xjAJXh38I15wypJXxuGMBkbcKLIaa1LC45dFaAfauRA.woff2) format('woff2');
unicode-range: U+1F00-1FFF;
} }
.icon-gf-settings:before { /* greek */
content: "\e615"; @font-face {
font-family: 'Open Sans';
font-style: italic;
font-weight: 400;
src: local('Open Sans Italic'), local('OpenSans-Italic'), url(../fonts/opensans/xjAJXh38I15wypJXxuGMBmo_sUJ8uO4YLWRInS22T3Y.woff2) format('woff2');
unicode-range: U+0370-03FF;
} }
.icon-gf-share:before { /* vietnamese */
content: "\e616"; @font-face {
font-family: 'Open Sans';
font-style: italic;
font-weight: 400;
src: local('Open Sans Italic'), local('OpenSans-Italic'), url(../fonts/opensans/xjAJXh38I15wypJXxuGMBr6up8jxqWt8HVA3mDhkV_0.woff2) format('woff2');
unicode-range: U+0102-0103, U+1EA0-1EF1, U+20AB;
} }
.icon-gf-star:before { /* latin-ext */
content: "\e617"; @font-face {
font-family: 'Open Sans';
font-style: italic;
font-weight: 400;
src: local('Open Sans Italic'), local('OpenSans-Italic'), url(../fonts/opensans/xjAJXh38I15wypJXxuGMBiYE0-AqJ3nfInTTiDXDjU4.woff2) format('woff2');
unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF;
} }
.icon-gf-search:before { /* latin */
content: "\e618"; @font-face {
font-family: 'Open Sans';
font-style: italic;
font-weight: 400;
src: local('Open Sans Italic'), local('OpenSans-Italic'), url(../fonts/opensans/xjAJXh38I15wypJXxuGMBo4P5ICox8Kq3LLUNMylGO4.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000;
} }
.icon-gf-tag-add:before {
content: "\e619";
}
.icon-gf-tag-remove:before {
content: "\e61a";
}
.icon-gf-video:before {
content: "\e61b";
}
.icon-gf-bulk_action:before {
content: "\e61c";
}
.icon-gf-users:before {
content: "\e622";
}
.icon-gf-globe:before {
content: "\e61d";
}
.icon-gf-snapshot:before {
content: "\e61e";
}
.icon-gf-play-grafana-icon:before {
content: "\e629";
}
.icon-gf-grafana-icon:before {
content: "\e625";
}
.icon-gf-email:before {
content: "\e628";
}
.icon-gf-stopwatch:before {
content: "\e626";
}
.icon-gf-skull:before {
content: "\e900";
}
.icon-gf-probe:before {
content: "\e901";
}
.icon-gf-apps:before {
content: "\e902";
}
.icon-gf-scale:before {
content: "\e906";
}
.icon-gf-litmus:before {
content: "\e627";
}
.icon-gf-grafana_wordmark:before {
content: "\e903";
}
.icon-gf-app:before {
content: "\e902";
}
.icon-gf-datasource:before {
content: "\e607";
}

View File

@@ -0,0 +1,185 @@
@font-face {
font-family: 'grafana-icons';
src: url('../fonts/grafana-icons.eot?h6rv8b');
src: url('../fonts/grafana-icons.eot?h6rv8b#iefix') format('embedded-opentype'),
url('../fonts/grafana-icons.ttf?h6rv8b') format('truetype'),
url('../fonts/grafana-icons.woff?h6rv8b') format('woff'),
url('../fonts/grafana-icons.svg?h6rv8b#grafana-icons') format('svg');
font-weight: normal;
font-style: normal;
}
.icon-gf {
/* use !important to prevent issues with browser extensions that change fonts */
font-family: 'grafana-icons' !important;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering =========== */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.inline-icon-gf {
vertical-align: middle;
}
.icon-gf-raintank_wordmark:before {
content: "\e600";
}
.icon-gf-raintank_icn:before {
content: "\e601";
}
.icon-gf-raintank_r-icn:before {
content: "\e905";
}
.icon-gf-check-alt:before {
content: "\e603";
}
.icon-gf-check:before {
content: "\e604";
}
.icon-gf-collector:before {
content: "\e605";
}
.icon-gf-dashboard:before {
content: "\e606";
}
.icon-gf-panel:before {
content: "\e904";
}
.icon-gf-datasources:before {
content: "\e607";
}
.icon-gf-endpoint-tiny:before {
content: "\e608";
}
.icon-gf-endpoint:before {
content: "\e609";
}
.icon-gf-filter:before {
content: "\e60a";
}
.icon-gf-status:before {
content: "\e60b";
}
.icon-gf-monitoring:before {
content: "\e60c";
}
.icon-gf-monitoring-tiny:before {
content: "\e620";
}
.icon-gf-jump-to-dashboard:before {
content: "\e60d";
}
.icon-gf-warn:before {
content: "\e60e";
}
.icon-gf-nodata:before {
content: "\e60f";
}
.icon-gf-critical:before {
content: "\e610";
}
.icon-gf-online:before {
content: "\e611";
}
.icon-gf-event-error:before {
content: "\e623";
}
.icon-gf-event:before {
content: "\e624";
}
.icon-gf-sadface:before {
content: "\e907";
}
.icon-gf-private-collector:before {
content: "\e612";
}
.icon-gf-alert:before {
content: "\e61f";
}
.icon-gf-alert-disabled:before {
content: "\e621";
}
.icon-gf-refresh:before {
content: "\e613";
}
.icon-gf-save:before {
content: "\e614";
}
.icon-gf-settings:before {
content: "\e615";
}
.icon-gf-share:before {
content: "\e616";
}
.icon-gf-star:before {
content: "\e617";
}
.icon-gf-search:before {
content: "\e618";
}
.icon-gf-tag-add:before {
content: "\e619";
}
.icon-gf-tag-remove:before {
content: "\e61a";
}
.icon-gf-video:before {
content: "\e61b";
}
.icon-gf-bulk_action:before {
content: "\e61c";
}
.icon-gf-users:before {
content: "\e622";
}
.icon-gf-globe:before {
content: "\e61d";
}
.icon-gf-snapshot:before {
content: "\e61e";
}
.icon-gf-play-grafana-icon:before {
content: "\e629";
}
.icon-gf-grafana-icon:before {
content: "\e625";
}
.icon-gf-email:before {
content: "\e628";
}
.icon-gf-stopwatch:before {
content: "\e626";
}
.icon-gf-skull:before {
content: "\e900";
}
.icon-gf-probe:before {
content: "\e901";
}
.icon-gf-apps:before {
content: "\e902";
}
.icon-gf-scale:before {
content: "\e906";
}
.icon-gf-litmus:before {
content: "\e627";
}
.icon-gf-grafana_wordmark:before {
content: "\e903";
}
.icon-gf-app:before {
content: "\e902";
}
.icon-gf-datasource:before {
content: "\e607";
}

3
public/sass/fonts.scss Normal file
View File

@@ -0,0 +1,3 @@
@import "base/fonts";
@import "base/font_awesome";
@import "base/grafana_icons";

View File

@@ -8,7 +8,7 @@
<title>Grafana</title> <title>Grafana</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,400italic,600,300,700' rel='stylesheet' type='text/css'> <link href='[[.AppSubUrl]]/public/css/fonts.min.css' rel='stylesheet' type='text/css'>
[[if .User.LightTheme]] [[if .User.LightTheme]]
<link rel="stylesheet" href="[[.AppSubUrl]]/public/css/grafana.light.min.css"> <link rel="stylesheet" href="[[.AppSubUrl]]/public/css/grafana.light.min.css">

View File

@@ -6,6 +6,7 @@ module.exports = function(grunt) {
'sass', 'sass',
'concat:cssDark', 'concat:cssDark',
'concat:cssLight', 'concat:cssLight',
'concat:cssFonts',
'styleguide', 'styleguide',
'sasslint', 'sasslint',
'postcss' 'postcss'

View File

@@ -22,6 +22,11 @@ module.exports = function(config) {
dest: '<%= genDir %>/css/grafana.light.min.css' dest: '<%= genDir %>/css/grafana.light.min.css'
}, },
cssFonts: {
src: [ '<%= genDir %>/css/fonts.css' ],
dest: '<%= genDir %>/css/fonts.min.css'
},
js: { js: {
src: [ src: [
'<%= genDir %>/vendor/npm/es5-shim/es5-shim.js', '<%= genDir %>/vendor/npm/es5-shim/es5-shim.js',

View File

@@ -6,6 +6,7 @@ module.exports = function(config) {
files: { files: {
"<%= genDir %>/css/grafana.dark.css": "<%= srcDir %>/sass/grafana.dark.scss", "<%= genDir %>/css/grafana.dark.css": "<%= srcDir %>/sass/grafana.dark.scss",
"<%= genDir %>/css/grafana.light.css": "<%= srcDir %>/sass/grafana.light.scss", "<%= genDir %>/css/grafana.light.css": "<%= srcDir %>/sass/grafana.light.scss",
"<%= genDir %>/css/fonts.css": "<%= srcDir %>/sass/fonts.scss",
} }
} }
}; };