File "gruntfile.js"
Full path: /home/kosmetik/public_html/wp-content/plugins/powerpack-elements/gruntfile.js
File
size: 9.11 B
MIME-type: text/plain
Charset: utf-8
Download Open Edit Advanced Editor Back
/* jshint node:true */
module.exports = function( grunt ) {
'use strict';
const pluginName = 'powerpack-elements';
const textDomain = 'powerpack';
const buildPath = 'build/' + pluginName + '/';
const sass = require( 'node-sass' );
const pkg = grunt.file.readJSON( 'package.json' );
grunt.initConfig({
pkg,
// Setting folder templates.
dirs: {
css: 'assets/css',
js: 'assets/js',
scss: 'assets/scss'
},
// JavaScript linting with JSHint.
jshint: {
options: {
jshintrc: '.jshintrc'
},
all: [
'<%= dirs.js %>/admin/*.js',
'!<%= dirs.js %>/admin/*.min.js',
'<%= dirs.js %>/frontend/*.js',
'!<%= dirs.js %>/frontend/*.min.js'
]
},
// Sass linting with Stylelint.
stylelint: {
options: {
configFile: '.stylelintrc'
},
all: [
'<%= dirs.css %>/*.scss'
]
},
// Minify .js files.
uglify: {
options: {
ie8: true,
parse: {
strict: false
},
output: {
comments : /@license|@preserve|^!/
}
},
admin: {
files: [{
expand: true,
cwd: '<%= dirs.js %>/admin/',
src: [
'*.js',
'!*.min.js'
],
dest: '<%= dirs.js %>/admin/',
ext: '.min.js'
}]
},
frontend: {
files: [{
expand: true,
cwd: '<%= dirs.js %>/',
src: [
'*.js',
'!*.min.js'
],
dest: '<%= dirs.js %>/min/',
ext: '.min.js'
}]
},
},
// Compile all .scss files.
sass: {
compile: {
options: {
implementation: sass,
sourceMap: false
},
files: [{
expand: true,
cwd: '<%= dirs.scss %>/',
src: ['*.scss'],
dest: '<%= dirs.css %>/',
ext: '.css'
}]
}
},
// Autoprefixer.
postcss: {
options: {
processors: [
require( 'autoprefixer' )
]
},
dist: {
src: [
'<%= dirs.css %>/*.css'
]
}
},
// RTL CSS.
rtlcss: {
options: {
// rtlcss options
config: {
greedy: true
},
// generate source maps
map: false
},
dist: {
files: [
{
expand: true,
cwd: '<%= dirs.css %>/',
src: [
'*.css',
'!editor.css',
'!*-rtl.css'
],
dest: '<%= dirs.css %>/',
ext: '-rtl.css'
}
]
}
},
// Minify all .css files.
cssmin: {
minify: {
files: [
{
expand: true,
cwd: '<%= dirs.css %>/',
src: ['*.css'],
dest: '<%= dirs.css %>/min/',
ext: '.min.css'
}
]
}
},
// Watch changes for assets.
watch: {
scss: {
files: ['<%= dirs.scss %>/**'],
tasks: ['sass']
},
css: {
files: ['<%= dirs.css %>/*.scss'],
tasks: ['sass', 'postcss', 'cssmin']
},
js: {
files: [
'<%= dirs.js %>/admin/*js',
'<%= dirs.js %>/frontend/*js',
'!<%= dirs.js %>/admin/*.min.js',
'!<%= dirs.js %>/frontend/*.min.js'
],
tasks: ['jshint', 'uglify']
}
},
// Add text-domain.
addtextdomain: {
options: {
textdomain: textDomain,
updateDomains: ['power-pack', 'bb-powerpack', 'elementor', 'elementor-pro'] // List of text domains to replace.
},
target: {
files: {
src: [
'*.php',
'**/*.php',
'!node_modules/**',
'!vendor/**',
]
}
}
},
// Check textdomain errors.
checktextdomain: {
options:{
text_domain: textDomain,
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'
]
},
files: {
src: [
'**/*.php', // Include all files
'!node_modules/**', // Exclude node_modules/
'!vendor/**', // Exclude vendor/
],
expand: true
}
},
// Generate POT files.
makepot: {
options: {
type: 'wp-plugin',
domainPath: 'languages',
potHeaders: {
poedit: true, // Includes common Poedit headers.
'x-poedit-keywordslist': true // Include a list of all possible gettext functions.
}
},
dist: {
options: {
potFilename: 'powerpack.pot',
exclude: [
'node_modules/.*',
'vendor/.*',
]
}
}
},
// PHP Code Sniffer.
phpcs: {
options: {
bin: 'vendor/bin/phpcs'
},
dist: {
src: [
'**/*.php', // Include all php files.
'!node_modules/**',
'!vendor/**'
]
}
},
copy: {
main: {
expand: true,
src: [
'**',
'!.gitignore',
'!.gitattributes',
'!.editorconfig',
'!.jshintrc',
'!.stylelintrc',
'!*.sh',
'!*.map',
'!*.zip',
'!Gruntfile.js',
'!package.json',
'!README.md',
'!codesniffer.ruleset.xml',
'!ruleset.xml',
'!composer.json',
'!composer.lock',
'!package-lock.json',
'!phpcs.xml.dist',
'!phpcs.xml',
'!node_modules/**',
'!.git/**',
'!bin/**',
'!vendor/**',
'!build/**',
'!assets/*.scss',
'!assets/**/*.map',
'!*~'
],
dest: buildPath
}
},
compress: {
main: {
options: {
archive: pluginName + '-pro.zip',
mode: 'zip'
},
files: [
{
cwd: 'build/',
expand: true,
src: [
'**'
]
}
]
},
starter: {
options: {
archive: pluginName + '-starter.zip',
mode: 'zip'
},
files: [
{
cwd: 'build/',
expand: true,
src: [
'**',
'!**/modules/woocommerce/**',
'!**/classes/class-pp-magic-wand.php',
'!**/classes/class-pp-woo-builder.php',
'!**/classes/class-pp-woo-builder-preview.php',
'!**/classes/class-pp-woo-helper.php',
]
}
]
}
},
clean: {
main: ['build'],
zip: ['*.zip']
},
bumpup: {
options: {
updateProps: {
pkg: 'package.json'
}
},
file: 'package.json'
},
// Replace.
replace: {
main: {
src: ['powerpack-elements.php'],
overwrite: true,
replacements: [
{
from: /(Version:\s+)(\d+(\.\d+){0,3})([^\n^\.\d]?.*?)(\n)/,
to: 'Version: <%= pkg.version %>\n'
},
{
from: /POWERPACK_ELEMENTS_VER', '.*?'/g,
to: 'POWERPACK_ELEMENTS_VER\', \'<%= pkg.version %>\''
},
]
},
comments: {
src: [
'*.php',
'**/*.php',
'!node_modules/**',
'!vendor/**',
'!i18n/**',
'!build/**'
],
overwrite: true,
replacements: [
{
from: 'x.x.x',
to: '<%= pkg.version %>'
}
]
}
}
});
// Load NPM tasks to be used here.
grunt.loadNpmTasks( 'grunt-phpcs' );
grunt.loadNpmTasks( 'grunt-sass' );
grunt.loadNpmTasks( 'grunt-rtlcss' );
grunt.loadNpmTasks( 'grunt-postcss' );
grunt.loadNpmTasks( 'grunt-stylelint' );
grunt.loadNpmTasks( 'grunt-checktextdomain' );
grunt.loadNpmTasks( 'grunt-contrib-jshint' );
grunt.loadNpmTasks( 'grunt-contrib-uglify' );
grunt.loadNpmTasks( 'grunt-contrib-cssmin' );
grunt.loadNpmTasks( 'grunt-contrib-concat' );
grunt.loadNpmTasks( 'grunt-contrib-watch' );
grunt.loadNpmTasks( 'grunt-contrib-copy' );
grunt.loadNpmTasks( 'grunt-contrib-clean' );
grunt.loadNpmTasks( 'grunt-contrib-compress' );
grunt.loadNpmTasks( 'grunt-wp-i18n' );
grunt.loadNpmTasks( 'grunt-bumpup' );
grunt.loadNpmTasks( 'grunt-text-replace' );
// Register tasks.
grunt.registerTask( 'default', [
'js',
'css',
'i18n'
] );
grunt.registerTask( 'js', [
'jshint',
'uglify:admin',
'uglify:frontend'
] );
grunt.registerTask( 'css', [
'sass',
'rtlcss',
'postcss',
'cssmin'
] );
grunt.registerTask( 'watch-scss', [
'watch:scss'
] );
grunt.registerTask( 'assets', [
'js',
'css'
] );
grunt.registerTask( 'minify', [
'cssmin',
'uglify:frontend'
] );
grunt.registerTask( 'i18n', [
'addtextdomain',
'checktextdomain',
'makepot'
] );
// Bump Version - `grunt version-bump --ver=<version-number>`
grunt.registerTask( 'version-bump', function (ver) {
var version = grunt.option( 'ver' );
if ( version ) {
version = version ? version : 'patch';
grunt.task.run( 'bumpup:' + version );
grunt.task.run( 'replace' );
} else {
throw new Error( 'Provide version with parameter --ver.' );
}
} );
// Release.
grunt.registerTask( 'release', [
'clean:zip',
'copy:main',
'compress:main',
'compress:starter',
'clean:main'
] );
};