141 lines
3.8 KiB
JavaScript
141 lines
3.8 KiB
JavaScript
module.exports = function (grunt) {
|
|
const dedent = require("dedent-js");
|
|
// Project configuration.
|
|
grunt.initConfig({
|
|
pkg: grunt.file.readJSON("package.json"),
|
|
terser: {
|
|
options: {
|
|
// Task-specific options go here.
|
|
},
|
|
build: {
|
|
// Target-specific file lists and/or options go here.
|
|
src: "src/main/resources/static/js/bundle.js",
|
|
dest: "src/main/resources/static/js/bundle.min.js",
|
|
},
|
|
chat_worker: {
|
|
src: "src/main/resources/static/js/chatWorker.js",
|
|
dest: "src/main/resources/static/js/chatWorker.min.js",
|
|
},
|
|
admin_bundle: {
|
|
src: "src/main/resources/static/js/adminBundle.js",
|
|
dest: "src/main/resources/static/js/adminBundle.min.js",
|
|
},
|
|
},
|
|
banner: dedent(`
|
|
/*
|
|
* -----------------------------------------
|
|
* @date <%= grunt.template.today("yyyy-mm-dd") %>
|
|
* @project Chatto
|
|
* @author nova
|
|
* @license GPL
|
|
* -----------------------------------------
|
|
*/
|
|
`),
|
|
usebanner: {
|
|
dist: {
|
|
options: {
|
|
position: "top",
|
|
banner: "<%= banner %>",
|
|
},
|
|
files: {
|
|
src: [
|
|
"src/main/resources/static/js/bundle.min.js",
|
|
"src/main/resources/static/js/adminBundle.min.js",
|
|
"src/main/resources/static/js/chatWorker.min.js",
|
|
],
|
|
},
|
|
},
|
|
},
|
|
browserify: {
|
|
chat_worker_dev: {
|
|
src: "src/main/frontend/workers/encryption-worker/main.ts",
|
|
dest: "src/main/resources/static/js/chatWorker.js",
|
|
options: {
|
|
browserifyOptions: {
|
|
debug: true,
|
|
},
|
|
},
|
|
},
|
|
dev: {
|
|
src: "src/main/frontend/chat/main.ts",
|
|
dest: "src/main/resources/static/js/bundle.js",
|
|
options: {
|
|
browserifyOptions: {
|
|
debug: true,
|
|
},
|
|
},
|
|
},
|
|
prod: {
|
|
src: "src/main/frontend/chat/main.ts",
|
|
dest: "src/main/resources/static/js/bundle.js",
|
|
banner: '/*! Chat.js <%= grunt.template.today("yyyy-mm-dd") %> */ ',
|
|
options: {
|
|
browserifyOptions: {
|
|
debug: false,
|
|
},
|
|
},
|
|
},
|
|
chat_worker_prod: {
|
|
src: "src/main/frontend/workers/encryption-worker/main.ts",
|
|
dest: "src/main/resources/static/js/chatWorker.js",
|
|
},
|
|
admin_bundle_dev: {
|
|
src: "src/main/frontend/admin/main.ts",
|
|
dest: "src/main/resources/static/js/adminBundle.js",
|
|
options: {
|
|
browserifyOptions: {
|
|
debug: true,
|
|
},
|
|
},
|
|
},
|
|
admin_bundle_prod: {
|
|
src: "src/main/frontend/admin/main.ts",
|
|
dest: "src/main/resources/static/js/adminBundle.js",
|
|
banner: '/*! Chat.js <%= grunt.template.today("yyyy-mm-dd") %> */ ',
|
|
options: {
|
|
browserifyOptions: {
|
|
debug: false,
|
|
},
|
|
},
|
|
},
|
|
options: {
|
|
plugin: [
|
|
[
|
|
"tsify",
|
|
{
|
|
target: "ES6",
|
|
noImplicitAny: true,
|
|
esModuleInterop: true,
|
|
allowSyntheticDefaultImports: true,
|
|
},
|
|
], // register plugin by name
|
|
],
|
|
|
|
browserifyOptions: {},
|
|
},
|
|
},
|
|
});
|
|
|
|
// Load the plugin that provides the "uglify" task.
|
|
grunt.loadNpmTasks("grunt-terser");
|
|
|
|
// // Default task(s).
|
|
// grunt.registerTask('default', ['uglify']);
|
|
|
|
grunt.loadNpmTasks("grunt-browserify");
|
|
grunt.loadNpmTasks("grunt-banner");
|
|
|
|
grunt.registerTask("default", [
|
|
"browserify:dev",
|
|
"browserify:chat_worker_dev",
|
|
"browserify:admin_bundle_dev",
|
|
]);
|
|
grunt.registerTask("prod", [
|
|
"browserify:prod",
|
|
"browserify:chat_worker_prod",
|
|
"browserify:admin_bundle_prod",
|
|
"terser",
|
|
"usebanner",
|
|
]);
|
|
};
|