| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439 |
- /* jshint node:true */
- var shell = require( 'shelljs' );
- module.exports = function( grunt ) {
- // Project configuration.
- grunt.initConfig(
- {
- pkg: grunt.file.readJSON( 'package.json' ),
- concat: {
- options: {
- separator: ';'
- },
- core: {
- src: [
- 'ReduxCore/assets/js/vendor/cookie.js',
- 'ReduxCore/assets/js/vendor/jquery.typewatch.js',
- 'ReduxCore/assets/js/vendor/jquery.serializeForm.js',
- 'ReduxCore/assets/js/vendor/jquery.alphanum.js',
- 'ReduxCore/assets/js/redux.js'
- ],
- dest: 'ReduxCore/assets/js/redux.min.js'
- },
- vendor: {
- src: [
- 'ReduxCore/assets/js/vendor/cookie.js',
- 'ReduxCore/assets/js/vendor/jquery.serializeForm.js',
- 'ReduxCore/assets/js/vendor/jquery.typewatch.js',
- 'ReduxCore/assets/js/vendor/jquery.alphanum.js'
- ],
- dest: 'ReduxCore/assets/js/vendor.min.js'
- }
- },
- 'gh-pages': {
- options: {
- base: 'docs',
- message: 'Update docs and files to distribute'
- },
- dev: {
- src: ['docs/**/*', 'bin/CNAME']
- },
- travis: {
- options: {
- repo: 'https://' + process.env.GH_TOKEN + '@github.com/ReduxFramework/docs.reduxframework.com.git',
- user: {
- name: 'Travis',
- email: 'travis@travis-ci.org'
- },
- silent: false
- },
- src: ['**/*']
- }
- },
- uglify: {
- fields: {
- files: [
- {
- expand: true,
- cwd: 'ReduxCore/inc/fields',
- src: ['**/*.js', '!**/*.min.js', '!ace_editor/vendor/*.js', '!ace_editor/vendor/snippets/*.js', '!slider/vendor/nouislider/*.*', '!spinner/vendor/*.*'],
- ext: '.min.js',
- dest: 'ReduxCore/inc/fields'
- }
- ]
- },
- extensions: {
- files: [
- {
- expand: true,
- cwd: 'ReduxCore/inc/extensions',
- src: ['**/*.js', '!**/*.min.js'],
- ext: '.min.js',
- dest: 'ReduxCore/inc/extensions'
- }
- ]
- },
- core: {
- files: {
- 'ReduxCore/assets/js/redux.min.js': [
- 'ReduxCore/assets/js/redux.min.js'
- ],
- 'ReduxCore/assets/js/vendor/spectrum/redux-spectrum.min.js': [
- 'ReduxCore/assets/js/vendor/spectrum/redux-spectrum.js'
- ],
- 'ReduxCore/assets/js/vendor/redux.select2.sortable.min.js': [
- 'ReduxCore/assets/js/vendor/redux.select2.sortable.js'
- ],
- 'ReduxCore/assets/js/media/media.min.js': [
- 'ReduxCore/assets/js/media/media.js'
- ]
- }
- },
- vendor: {
- files: {
- 'ReduxCore/assets/js/vendor.min.js': [
- 'ReduxCore/assets/js/vendor.min.js'
- ]
- }
- }
- },
- qunit: {
- files: ['test/qunit/**/*.html']
- },
- // JavaScript linting with JSHint.
- jshint: {
- options: {
- jshintrc: '.jshintrc',
- reporterOutput: ''
- },
- files: [
- //'Gruntfile.js',
- //'ReduxCore/assecd ..
- //ts/js/import_export/import_export.js',
- 'ReduxCore/assets/js/media/media.js',
- 'ReduxCore/inc/fields/ace_editor/field_ace_editor.js',
- 'ReduxCore/inc/fields/background/field_background.js',
- 'ReduxCore/inc/fields/border/field_border.js',
- 'ReduxCore/inc/fields/button_set/field_button_set.js',
- 'ReduxCore/inc/fields/checkbox/field_checkbox.js',
- 'ReduxCore/inc/fields/color/field_color.js',
- 'ReduxCore/inc/fields/color_rgba/field_color_rgba.js',
- 'ReduxCore/inc/fields/date/field_date.js',
- 'ReduxCore/inc/fields/dimensions/field_dimensions.js',
- 'ReduxCore/inc/fields/editor/field_editor.js',
- 'ReduxCore/inc/fields/gallery/field_gallery.js',
- 'ReduxCore/inc/fields/image_select/field_image_select.js',
- 'ReduxCore/inc/fields/multi_text/field_multitext.js',
- 'ReduxCore/inc/fields/palette/field_palette.js',
- 'ReduxCore/inc/fields/select/field_select.js',
- 'ReduxCore/inc/fields/select_image/field_select_image.js',
- 'ReduxCore/inc/fields/slider/field_slider.js',
- 'ReduxCore/inc/fields/slides/field_slides.js',
- 'ReduxCore/inc/fields/sortable/field_sortable.js',
- 'ReduxCore/inc/fields/sorter/field_sorter.js',
- 'ReduxCore/inc/fields/spacing/field_spacing.js',
- 'ReduxCore/inc/fields/spinner/field_spinner.js',
- 'ReduxCore/inc/fields/switch/field_switch.js',
- 'ReduxCore/inc/fields/typography/field_typography.js',
- //'ReduxCore/inc/extensions/customizer/extension_customizer.js',
- 'ReduxCore/inc/extensions/import_export/import_export/field_import_export.js',
- 'ReduxCore/inc/extensions/options_object/options_object/field_options_object.js',
- 'ReduxCore/assets/js/redux.js'
- ]
- },
- // Watch changes for files.
- watch: {
- ui: {
- files: ['<%= jshint.files %>'],
- tasks: ['jshint']
- },
- php: {
- files: ['ReduxCore/**/*.php'],
- //tasks: ['phplint:core']
- },
- css: {
- files: ['ReduxCore/**/*.less'],
- tasks: ['less:development']
- }
- },
- // Add textdomain.
- addtextdomain: {
- options: {
- textdomain: 'redux-framework', // Project text domain.
- updateDomains: ['redux', 'redux-framework-demo', 'v'] // List of text domains to replace.
- },
- target: {
- files: {
- src: ['*.php', '**/*.php', '!node_modules/**', '!tests/**', '!sample/**']
- }
- }
- },
- // Generate POT files.
- makepot: {
- redux: {
- options: {
- type: 'wp-plugin',
- domainPath: 'ReduxCore/languages',
- potFilename: 'redux-framework.pot',
- include: [],
- exclude: [
- 'sample/.*'
- ],
- potHeaders: {
- poedit: true,
- 'report-msgid-bugs-to': 'https://github.com/ReduxFramework/ReduxFramework/issues',
- 'language-team': 'LANGUAGE <support@reduxframework.com>'
- }
- }
- }
- },
- // Check textdomain errors.
- checktextdomain: {
- options: {
- keywords: [
- '__:1,2d',
- '_e:1,2d',
- '_x:1,2c,3d',
- 'esc_html__:1,2d',
- 'esc_html_e:1,2d',
- 'esc_html_x:1,2c,3d',
- 'esc_attr__:1,2d',
- 'esc_attr_e:1,2d',
- 'esc_attr_x:1,2c,3d',
- '_ex:1,2c,3d',
- '_n:1,2,4d',
- '_nx:1,2,4c,5d',
- '_n_noop:1,2,3d',
- '_nx_noop:1,2,3c,4d'
- ]
- },
- redux: {
- cwd: 'ReduxCore/',
- options: {
- text_domain: 'redux-framework',
- },
- src: ['**/*.php'],
- expand: true
- },
- sample: {
- cwd: 'sample',
- options: {
- text_domain: 'redux-framework-demo',
- },
- src: ['**/*.php'],
- expand: true
- }
- },
- // Exec shell commands.
- shell: {
- options: {
- stdout: true,
- stderr: true
- },
- // Limited to Maintainers so
- // txpush: {
- // command: 'tx push -s' // push the resources
- // },
- txpull: {
- command: 'tx pull -a --minimum-perc=25' // pull the .po files
- }
- },
- // Generate MO files.
- potomo: {
- dist: {
- options: {
- poDel: true
- },
- files: [{
- expand: true,
- cwd: 'ReduxCore/languages/',
- src: ['*.po'],
- dest: 'ReduxCore/languages/',
- ext: '.mo',
- nonull: true
- }]
- }
- },
- // phpdocumentor: {
- // options: {
- // directory: 'ReduxCore/',
- // target: 'docs/'
- // },
- // generate: {}
- // },
- //
- // phplint: {
- // options: {
- // swapPath: './'
- // },
- // core: ["ReduxCore/**/*.php"],
- // plugin: ["class-redux-plugin.php", "index.php", "redux-framework.php"]
- // },
- sass: {
- fields: {
- options: {
- sourcemap: 'none',
- style: 'compressed',
- noCache: true
- },
- files: [{
- expand: true, // Enable dynamic expansion.
- cwd: 'ReduxCore/inc/fields', // Src matches are relative to this path.
- src: ['**/*.scss'], // Actual pattern(s) to match.
- dest: 'ReduxCore/inc/fields', // Destination path prefix.
- ext: '.css' // Dest filepaths will have this extension.
- }]
- },
- extensions: {
- options: {
- sourcemap: 'none',
- style: 'compressed',
- noCache: true,
- },
- files: [{
- expand: true, // Enable dynamic expansion.
- cwd: 'ReduxCore/inc/extensions', // Src matches are relative to this path.
- src: ['**/*.scss'], // Actual pattern(s) to match.
- dest: 'ReduxCore/inc/extensions', // Destination path prefix.
- ext: '.css' // Dest filepaths will have this extension.
- }]
- },
- vendor: {
- options: {
- sourcemap: 'none',
- style: 'compressed',
- noCache: true
- },
- files: {
- "ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css": [
- "ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.scss"
- ],
- "ReduxCore/assets/css/vendor/elusive-icons/elusive-icons.css": [
- "ReduxCore/assets/css/vendor/elusive-icons/scss/elusive-icons.scss"
- ],
- }
- },
- admin: {
- options: {
- sourcemap: 'none',
- style: 'compressed',
- noCache: true
- },
- files: {
- "ReduxCore/assets/css/color-picker/color-picker.css": [
- "ReduxCore/assets/css/color-picker/color-picker.scss"
- ],
- "ReduxCore/assets/css/media/media.css": [
- "ReduxCore/assets/css/media/media.scss"
- ],
- "ReduxCore/assets/css/redux-admin.css": [
- "ReduxCore/assets/css/redux-admin.scss"
- ],
- "ReduxCore/assets/css/rtl.css": [
- "ReduxCore/assets/css/rtl.scss"
- ]
- }
- },
- welcome: {
- options: {
- sourcemap: 'none',
- style: 'compressed',
- noCache: true
- },
- files: {
- "ReduxCore/inc/welcome/css/redux-welcome.css": [
- "ReduxCore/inc/welcome/css/redux-welcome.scss"
- ]
- }
- }
- },
- cssmin: {
- fields: {
- files: {
- 'ReduxCore/assets/css/redux-fields.css': [
- 'ReduxCore/inc/fields/**/*.css',
- "ReduxCore/assets/css/color-picker/color-picker.css",
- "ReduxCore/assets/css/media/media.css"
- ]
- }
- },
- }
- }
- );
- // Load NPM tasks to be used here
- grunt.loadNpmTasks( 'grunt-shell' );
- grunt.loadNpmTasks( 'grunt-potomo' );
- grunt.loadNpmTasks( 'grunt-wp-i18n' );
- grunt.loadNpmTasks( 'grunt-checktextdomain' );
- grunt.loadNpmTasks( 'grunt-contrib-jshint' );
- grunt.loadNpmTasks( 'grunt-contrib-sass' );
- grunt.loadNpmTasks( 'grunt-contrib-uglify' );
- grunt.loadNpmTasks( 'grunt-contrib-watch' );
- grunt.loadNpmTasks( 'grunt-contrib-cssmin' );
- grunt.loadNpmTasks( 'grunt-contrib-concat' );
- grunt.loadNpmTasks( 'grunt-gh-pages' );
- //grunt.loadNpmTasks( "grunt-phplint" );
- grunt.registerTask(
- 'langUpdate', [
- 'addtextdomain',
- 'makepot',
- 'shell:txpull',
- 'potomo'
- ]
- );
- // Default task(s).
- grunt.registerTask(
- 'default', [
- 'jshint',
- 'concat:core',
- 'uglify:core',
- 'concat:vendor',
- 'uglify:vendor',
- 'uglify:fields',
- 'uglify:extensions',
- "sass:admin",
- "sass:fields",
- "sass:extensions",
- "sass:vendor",
- 'cssmin'
- ]
- );
- //grunt.registerTask( 'travis', ['jshint', 'lintPHP'] );
- // this would be run by typing "grunt test" on the command line
- grunt.registerTask( 'testJS', ['jshint', 'concat:core', 'concat:vendor'] );
- grunt.registerTask( 'watchUI', ['watch:ui'] );
- grunt.registerTask( 'watchPHP', ['watch:php', 'phplint:core', 'phplint:plugin'] );
- //grunt.registerTask( "lintPHP", ["phplint:plugin", "phplint:core"] );
- grunt.registerTask( "compileSCSS", ["sass:admin", "sass:fields", "sass:extensions", "sass:vendor", "sass:welcome"] );
- grunt.registerTask(
- 'compileJS',
- ['jshint', 'concat:core', 'uglify:core', 'concat:vendor', 'uglify:vendor', 'uglify:fields', 'uglify:extensions']
- );
- grunt.registerTask( 'compileTestJS', ['jshint', 'concat:core', 'concat:vendor'] );
- grunt.registerTask( 'compileCSS', ['cssmin'] );
- };
|