Skip to content
This repository has been archived by the owner on Dec 11, 2021. It is now read-only.

Build: add jsass-vars and completely modularize grunt #89

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ style.css
# Folders
bower_components/
node_modules/
external/
icons/svg-min/
.sass-cache/
dist/
4 changes: 3 additions & 1 deletion .jshintrc
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
"trailing": true,
"undef": true,
"unused": true,

"globals": {
"define": true
},
"node": true
}
205 changes: 8 additions & 197 deletions Gruntfile.js
Original file line number Diff line number Diff line change
@@ -1,199 +1,10 @@
module.exports = function( grunt ) {
require( "load-grunt-tasks" )( grunt );

var config = {
htmllint: {
dist: {
options: {},
src: [ "demos/*.html" ]
}
},
autoprefixer: {
dist: {
options: {
map: true,
browsers: [
"> 1%",
"last 2 versions",
"safari >= 5.1",
"ios >= 6.1",
"android 2.3",
"android >= 4",
"ie >= 8"
]
},
src: "dist/css/*.css"
}
},
csscomb: {
dist: {
files: {
"dist/css/chassis.css": "dist/css/chassis.css"
}
},
scss: {
files: [ {
expand: true,
src: [ "scss/**/*.scss" ]
} ]
}
},
cssmin: {
options: {
report: "gzip",
sourceMap: true
},
target: {
files: {
"dist/css/chassis.min.css": "dist/css/chassis.css"
}
}
},
csslint: {
src: [ "dist/css/chassis.lint.css", "dist/css/chassis.lint.css", "demos/demos.css" ]
},
jscs: {
all: [ "*.js", "performance/**/*.js" ]
},
jshint: {
files: [ "*.js", "performance/**/*.js" ],
options: {
jshintrc: ".jshintrc"
}
},
npmcopy: {
options: {
destPrefix: "external"
},
normalize: {
files: {
"normalize.css/LICENSE.md": "normalize.css/LICENSE.md",
"normalize.css/normalize.scss": "normalize.css/normalize.css"
}
}
},
sass: {

// This is the same as lint below except including normalize.css
dist: {
options: {
sourceMap: true,

// This actually does nested until libsass updates to support expanded
outputStyle: "expanded"
},
files: {
"dist/css/chassis.css": "scss/style.scss"
}
},

// This is everything except normalize.css which won't pass our lint settings
lint: {
options: {
sourceMap: true,

// This actually does nested until libsass updates to support expanded
outputStyle: "expanded"
},
files: {
"dist/css/chassis.lint.css": "scss/lint.scss"
}
}
},

// Minifies SVGs
svgmin: {
options: {
plugins: [
{
removeViewBox: false
},
{
removeUselessStrokeAndFill: false
}
]
},
dist: {
files: [ {
expand: true,
cwd: "icons/svg-source",
src: [ "*.svg" ],
dest: "icons/svg-min/",
ext: ".svg"
} ]
}
},

// Combines SVGs into single file
svgstore: {
defaults: {
options: {

// This will prefix each ID
prefix: "icon-",

// Adds attributes to the resulting SVG
svg: {
viewBox: "0 0 24 24",
xmlns: "http://www.w3.org/2000/svg"
},
cleanup: [ "style", "fill", "id" ]
},
files: {
"icons/icons.svg": [ "icons/svg-min/*.svg" ]
}
}
},
watch: {
sass: {
files: [ "scss/**/*.scss" ],
tasks: [ "build" ],
options: {
spawn: false
}
},
svg: {
files: [ "svg-source/**/*.svg" ],
tasks: [ "svg" ],
options: {
spawn: false
}
}
},
"stop-selenium-server": {
dev: {}
}
};

// This loads files in the options folder as task options
// and builds an object based on their file names
function loadConfig(path) {
var glob = require( "glob" ),
object = {},
key;

glob.sync( "*", { cwd: path } ).forEach( function( option ) {
key = option.replace( /\.js$/, "" );
object[ key ] = require( path + option );
});

return object;
}

// We no combine the loaded task options with the ones defined in config above
grunt.util._.extend( config, loadConfig( "./tasks/options/" ) );

grunt.initConfig( config );
grunt.loadTasks( "tasks" );
grunt.loadNpmTasks( "perfjankie" );
grunt.registerTask( "default", [ "test" ] );
grunt.registerTask( "test", [ "build", "jshint", "jscs", "csslint", "htmllint" ] );
grunt.registerTask( "build", [ "svg", "sass", "csscomb", "cssmin" ] );
grunt.registerTask( "perf", [
"start-selenium-server",
"connect:perf",
"perfjankie",
"stop-selenium-server"
]);
grunt.registerTask( "svg", [ "svgmin", "svgstore" ] );
var path = require( "path" );
require( "load-grunt-config" )( grunt, {
configPath: [
path.join( process.cwd(), "tasks/options" ),
path.join( process.cwd(), "tasks" )
],
init: true
} );
};
12 changes: 5 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "css-chassis",
"title": "Chassis",
"description": "An attempt at creating open standards designed for CSS libraries, JavaScript UI libraries, and web developers in general",
"version": "0.0.1-pre",
"version": "0.0.1",
"author": {
"name": "jQuery Foundation and other contributors",
"url": "https://github.com/jquery/css-chassis/blob/master/AUTHORS.txt"
Expand Down Expand Up @@ -48,7 +48,6 @@
"chromedriver": "2.13.0",
"commitplease": "2.0.0",
"ejs-template": "0.1.0",
"glob": "4.4.2",
"grunt": "0.4.5",
"grunt-autoprefixer": "2.1.0",
"grunt-contrib-cssmin": "0.10.0",
Expand All @@ -59,14 +58,13 @@
"grunt-csscomb": "3.0.0",
"grunt-git-authors": "2.0.0",
"grunt-html": "1.6.0",
"grunt-htmllint": "0.2.7",
"grunt-jscs": "0.6.2",
"grunt-npmcopy": "0.1.0",
"grunt-sass": "0.18.1",
"grunt-jscs": "1.8.0",
"grunt-sass": "0.17.0",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why was this switched to an older version of grunt-sass?

"grunt-selenium-server": "0.1.2",
"grunt-svgmin": "2.0.0",
"grunt-svgstore": "0.5.0",
"load-grunt-tasks": "3.1.0",
"jsass-vars": "0.0.3",
"load-grunt-config": "0.16.0",
"perfjankie": "1.2.2"
},
"keywords": []
Expand Down
4 changes: 2 additions & 2 deletions performance/component.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ var components = {
html = "";

function render( i ) {
framework[ component ].variations[ keys[ i ] ].forEach(function( value ) {
framework[ component ].variations[ keys[ i ] ].forEach( function( value ) {
current[ keys[ i ] ] = value;
if ( i < keys.length - 1 ) {
render( i + 1 );
Expand All @@ -17,7 +17,7 @@ var components = {
html = html + framework[ component ].generator.call( this, current );
}
}
});
} );
}
while ( currentCount < count ) {
render( 0 );
Expand Down
2 changes: 1 addition & 1 deletion performance/frameworks/bootstrap.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ module.exports = {
],
icon: [
false,
"asterisk",
"astrisk",
"plus",
"minus",
"euro",
Expand Down
3 changes: 0 additions & 3 deletions scss/_utilities/_colors.scss

This file was deleted.

2 changes: 1 addition & 1 deletion scss/atoms/typography/_functions.scss
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
// Examples:
// 1. font-size: em(14px);
// 2. font-size: em(30px/14px);
@function em($value, $context: map-get($root-font, font-size)) {
@function em($value, $context: map-get($defaultFont, font-size)) {
@return ($value / $context * 1em);
}
4 changes: 2 additions & 2 deletions scss/atoms/typography/_typography.scss
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
// ==========================================================================

@import
"variables",
"dist/chassis",
"functions",
"mixins";

body {
font: $normal #{ map-get( $root-font, font-size ) }/1.5 $sans-serif;
font: $normal #{ map-get( $defaultFont, font-size ) }/1.5 $sans;

@media ( max-width: 800px ) {
font-size: 16px;
Expand Down
18 changes: 0 additions & 18 deletions scss/atoms/typography/_variables.scss

This file was deleted.

11 changes: 8 additions & 3 deletions scss/style.scss
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
// ==========================================================================
// CSS Chassis
// ==========================================================================
// This just adds normalize to the build see lint.scss for explanation.

@import
"external/normalize.css/normalize.scss",
"lint.scss";
"_utilities/clearfix";

@import
"atoms/icons/icons",
"atoms/typography/typography";

@import
"views/main";
13 changes: 13 additions & 0 deletions scss/variables/chassis.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// This is just boiuler plate dont worry about it
// This just supports loading in any enviroment
( function( root, factory ) {
if ( typeof define === "function" && define.amd ) {
define( [], factory );
} else if ( typeof exports === "object" ) {
module.exports = factory();
} else {
root.chassis = factory();
}
}( this, function() {
return {};
} ) );
Loading