module.exports = function (grunt) {
("use strict");
// Project configuration
grunt.initConfig({
pkg: grunt.file.readJSON("package.json"),
addtextdomain: {
options: {
textdomain: "download-installed-plugin",
},
update_all_domains: {
options: {
updateDomains: true,
},
src: [
"*.php",
"**/*.php",
"!vendor/**/*",
"!.git/**/*",
"!bin/**/*",
"!node_modules/**/*",
"!tests/**/*",
],
},
},
wp_readme_to_markdown: {
your_target: {
files: {
"README.md": "readme.txt",
},
},
},
//build plugin zip
compress: {
main: {
options: {
archive: "archive/download-installed-plugin.zip",
},
files: [
{
src: [
"app/**",
"assets/**",
"core/**",
"vendor/**",
"download-installed-plugin.php",
"README.md",
"composer.json",
],
dest: "download-installed-plugin/",
filter: function (filepath) {
// Ignore .logs, .gitignore, .map files, and .css files in assets/js
return !filepath.match(
/\.logs$|\.gitignore$|\.map$|assets\/js\/.*\.css$/
);
},
},
],
},
},
});
// Load the required tasks
grunt.loadNpmTasks("grunt-wp-readme-to-markdown");
grunt.loadNpmTasks("grunt-contrib-compress");
// Register the default task
grunt.registerTask("default", ["readme"]);
grunt.registerTask("readme", ["wp_readme_to_markdown"]);
// Register the composer_optimise task
grunt.registerTask(
"composer_optimise",
"Run composer optimise",
function () {
const done = this.async();
require("child_process").exec(
"composer install --no-dev --prefer-dist --optimize-autoloader",
(err, stdout, stderr) => {
if (err) {
grunt.log.error(err);
done(false);
} else {
grunt.log.writeln(stdout);
done();
}
}
);
}
);
// Register the delete_readme task
grunt.registerTask("delete_readme", "Delete README.md", function () {
const fs = require("fs");
const done = this.async();
fs.unlink("README.md", function (err) {
if (err) {
grunt.log.error(err);
done(false);
} else {
grunt.log.writeln("README.md deleted successfully.");
done();
}
});
});
// Empty archive folder
grunt.registerTask("empty_archive", "Empty archive folder", function () {
const fs = require("fs-extra"); // Use fs-extra
const done = this.async();
fs.emptyDir("archive", function (err) {
if (err) {
grunt.log.error(err);
done(false);
} else {
grunt.log.writeln("Archive folder emptied successfully.");
done();
}
});
});
// Register the archive_plugin task
grunt.registerTask("archive_plugin", ["compress"]);
// Register the build task
grunt.registerTask("build", [
"composer_optimise", // Optimize composer dependencies
"empty_archive", // Empty archive folder
"readme", // Convert README.txt to README.md
"archive_plugin", // Create a zip archive of the plugin
"delete_readme", // Delete README.md after archiving
]);
};
|