pure/Gruntfile.js

284 lines
8.4 KiB
JavaScript
Raw Normal View History

2013-05-09 21:56:32 +00:00
module.exports = function (grunt) {
2020-05-16 18:09:14 +00:00
// -- Config -------------------------------------------------------------------
2013-05-09 21:56:32 +00:00
2020-05-16 18:09:14 +00:00
grunt.initConfig({
2013-05-09 21:56:32 +00:00
2020-05-16 18:09:14 +00:00
nick : 'pure',
pkg : grunt.file.readJSON('package.json'),
2013-05-09 21:56:32 +00:00
2020-05-16 18:09:14 +00:00
// -- Clean Config ---------------------------------------------------------
2020-05-16 18:09:14 +00:00
clean: {
build : ['build/'],
build_res: ['build/*-r.css'],
release : ['release/<%= pkg.version %>/']
2014-02-05 17:52:39 +00:00
},
2020-05-16 18:09:14 +00:00
// -- Copy Config ----------------------------------------------------------
2013-05-09 21:56:32 +00:00
2020-05-16 18:09:14 +00:00
copy: {
build: {
src : 'src/**/css/*.css',
dest : 'build/',
expand : true,
flatten: true
},
2020-05-16 18:09:14 +00:00
release: {
src : '{LICENSE,README.md,HISTORY.md}',
2020-05-16 18:09:14 +00:00
dest: 'build/'
}
},
2020-05-16 18:09:14 +00:00
// -- Concat Config --------------------------------------------------------
concat: {
build: {
files: [
{'build/base.css': [
'node_modules/normalize.css/normalize.css',
'build/base.css'
]},
{'build/buttons.css': [
'build/buttons-core.css',
'build/buttons.css'
]},
{'build/forms-nr.css': [
'build/forms.css'
]},
{'build/forms.css': [
'build/forms-nr.css',
'build/forms-r.css'
]},
{'build/grids.css': [
'build/grids-core.css',
'build/grids-units.css'
]},
{'build/menus.css': [
'build/menus-core.css',
'build/menus-horizontal.css',
'build/menus-dropdown.css',
'build/menus-scrollable.css',
'build/menus-skin.css',
]},
// Rollups
{'build/<%= nick %>.css': [
'build/base.css',
'build/grids.css',
'build/buttons.css',
'build/forms.css',
'build/menus.css',
'build/tables.css'
]},
{'build/<%= nick %>-nr.css': [
'build/base.css',
'build/grids.css',
'build/buttons.css',
'build/forms-nr.css',
'build/menus.css',
'build/tables.css'
]}
]
}
},
2020-05-16 18:09:14 +00:00
// -- PostCSS Config --------------------------------------------------------
2020-05-16 18:09:14 +00:00
postcss: {
options: {
processors: [
require('autoprefixer')()
]
},
dist: {
src: 'build/*.css'
}
2013-05-09 21:56:32 +00:00
},
2020-05-16 18:09:14 +00:00
// -- CSSLint Config -------------------------------------------------------
2020-05-16 18:09:14 +00:00
csslint: {
options: {
2020-05-16 18:09:14 +00:00
csslintrc: '.csslintrc'
},
2020-05-16 18:09:14 +00:00
base : ['src/base/css/*.css'],
buttons: ['src/buttons/css/*.css'],
forms : ['src/forms/css/*.css'],
grids : ['src/grids/css/*.css'],
menus : ['src/menus/css/*.css'],
tables : ['src/tables/css/*.css']
},
2020-05-16 18:09:14 +00:00
// -- CSSMin Config --------------------------------------------------------
2020-05-16 18:09:14 +00:00
cssmin: {
options: {
2020-05-16 18:09:14 +00:00
noAdvanced: true
},
2020-05-16 18:09:14 +00:00
files: {
expand: true,
src : 'build/*.css',
ext : '-min.css'
}
},
2020-05-16 18:09:14 +00:00
// -- Compress Config ------------------------------------------------------
2020-05-16 18:09:14 +00:00
compress: {
release: {
options: {
archive: 'release/<%= pkg.version %>/<%= nick %>-<%= pkg.version %>.tar.gz'
},
2020-05-16 18:09:14 +00:00
expand : true,
flatten: true,
src : 'build/*',
dest : '<%= nick %>/<%= pkg.version %>/'
}
},
2020-05-16 18:09:14 +00:00
// -- License Config -------------------------------------------------------
license: {
normalize: {
options: {
banner: [
'/*!',
2022-04-28 16:54:43 +00:00
'normalize.css v<%= pkg.devDependencies["normalize-css"] %> | MIT License | https://necolas.github.io/normalize.css/',
2020-05-16 18:09:14 +00:00
'Copyright (c) Nicolas Gallagher and Jonathan Neal',
'*/\n'
].join('\n')
},
expand: true,
cwd : 'build/',
src : ['base*.css', '<%= nick %>*.css']
},
2020-05-16 18:09:14 +00:00
yahoo: {
options: {
banner: [
'/*!',
'Pure v<%= pkg.version %>',
'Copyright 2013 Yahoo!',
'Licensed under the BSD License.',
2024-10-07 17:52:34 +00:00
'https://github.com/pure-css/pure/blob/main/LICENSE',
2020-05-16 18:09:14 +00:00
'*/\n'
].join('\n')
},
expand: true,
src : ['build/*.css']
2014-02-18 16:55:22 +00:00
}
},
2020-05-16 18:09:14 +00:00
// -- Pure Grids Units Config ----------------------------------------------
2020-05-16 18:09:14 +00:00
pure_grids: {
default_units: {
dest: 'build/grids-units.css',
options: {
units: [5, 24]
}
},
responsive: {
dest: 'build/grids-responsive.css',
options: {
mediaQueries: {
sm: 'screen and (min-width: 35.5em)', // 568px
md: 'screen and (min-width: 48em)', // 768px
lg: 'screen and (min-width: 64em)', // 1024px
xl: 'screen and (min-width: 80em)', // 1280px
xxl: 'screen and (min-width: 120em)', // 1920px
xxxl: 'screen and (min-width: 160em)', // 2560px
x4k: 'screen and (min-width: 240em)' // 3840px
2020-05-16 18:09:14 +00:00
}
}
}
2020-05-16 18:09:14 +00:00
},
2013-11-18 19:46:19 +00:00
2020-05-16 18:09:14 +00:00
// -- CSS Selectors Config -------------------------------------------------
2020-05-16 18:09:14 +00:00
css_selectors: {
base: {
src : 'build/base.css',
dest: 'build/base-context.css',
2020-05-16 18:09:14 +00:00
options: {
mutations: [{prefix: '.pure'}]
}
2013-05-09 21:56:32 +00:00
}
2020-05-16 18:09:14 +00:00
},
2013-06-05 22:51:10 +00:00
2020-05-16 18:09:14 +00:00
// -- Watch/Observe Config -------------------------------------------------
2013-06-05 22:51:10 +00:00
2020-05-16 18:09:14 +00:00
observe: {
src: {
files: 'src/**/css/*.css',
tasks: ['test', 'suppress', 'build'],
2013-06-05 22:51:10 +00:00
2020-05-16 18:09:14 +00:00
options: {
interrupt: true
}
2013-06-05 22:51:10 +00:00
}
}
2020-05-16 18:09:14 +00:00
});
// -- Main Tasks ---------------------------------------------------------------
// npm tasks.
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-csslint');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-compress');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-css-selectors');
2022-03-14 19:46:54 +00:00
grunt.loadNpmTasks('@lodder/grunt-postcss');
2020-05-16 18:09:14 +00:00
grunt.loadNpmTasks('grunt-pure-grids');
// Local tasks.
grunt.loadTasks('tasks/');
grunt.registerTask('default', ['test', 'build']);
grunt.registerTask('test', ['csslint']);
grunt.registerTask('build', [
'clean:build',
'copy:build',
'pure_grids',
'concat:build',
'clean:build_res',
'css_selectors:base',
'postcss',
'cssmin',
'license'
]);
// Makes the `watch` task run a build first.
grunt.renameTask('watch', 'observe');
grunt.registerTask('watch', ['default', 'observe']);
grunt.registerTask('release', [
'default',
'clean:release',
'copy:release',
'compress:release'
]);
2013-05-09 21:56:32 +00:00
};