beast.js
Version:
ANSI Beast for node
212 lines (179 loc) • 7.87 kB
JavaScript
'use strict';
//--------------------------------------------------------------------------------------------------------------------------------------------------------------
//
// ╔╗ ╔═╗ ╔═╗ ╔═╗ ╔╦╗
// ╠╩╗ ║╣ ╠═╣ ╚═╗ ║
// ╚═╝ ╚═╝ ╩ ╩ ╚═╝ ╩
// Created by Dominik Wilkowski
//
// @desc Beast.js is an ANSI node game
// @author Dominik Wilkowski
// @website https://github.com/dominikwilkowski/beast.js
// @issues https://github.com/dominikwilkowski/beast.js/issues
//--------------------------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------------------------
// External dependencies
//--------------------------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------------------------
// Custom functions
//--------------------------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------------------------------------------------------------------
// Settings
//--------------------------------------------------------------------------------------------------------------------------------------------------------------
const SETTINGS = function() {
return {
'folders': {
'dev': 'dev/',
'prod': 'prod/',
},
'files': {
'dev': 'dev.js',
'prod': 'index.js',
'Packagejson': 'package.json',
},
};
};
//--------------------------------------------------------------------------------------------------------------------------------------------------------------
// Grunt module
//--------------------------------------------------------------------------------------------------------------------------------------------------------------
module.exports = (grunt) => {
//--------------------------------------------------------------------------------------------------------------------------------------------------------------
// Dependencies
//--------------------------------------------------------------------------------------------------------------------------------------------------------------
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-text-replace');
grunt.loadNpmTasks('grunt-wakeup');
grunt.loadNpmTasks('grunt-font');
require('time-grunt')(grunt);
//--------------------------------------------------------------------------------------------------------------------------------------------------------------
// Grunt tasks
//--------------------------------------------------------------------------------------------------------------------------------------------------------------
grunt.initConfig({
//----------------------------------------------------------------------------------------------------------------------------------------------------------
// Package content
//----------------------------------------------------------------------------------------------------------------------------------------------------------
SETTINGS: SETTINGS(),
pkg: grunt.file.readJSON( SETTINGS().files.Packagejson ),
//--------------------------------------------------------------------------------------------------------------------------------------------------------------
// Replace version
//--------------------------------------------------------------------------------------------------------------------------------------------------------------
replace: {
dev: {
src: [
'<%= SETTINGS.folders.dev %><%= SETTINGS.files.dev %>',
],
overwrite: true,
replacements: [
{
from: '[Debug]',
to: 'true',
},
{
from: '[Name]',
to: '<%= pkg.name %>',
},
{
from: '[Version]',
to: 'v<%= pkg.version %>',
},
],
},
prod: {
src: [
'<%= SETTINGS.folders.prod %><%= SETTINGS.files.prod %>',
],
overwrite: true,
replacements: [
{
from: '[Debug]',
to: 'false',
},
{
from: '[Name]',
to: '<%= pkg.name %>',
},
{
from: '[Version]',
to: 'v<%= pkg.version %>',
},
],
},
},
//----------------------------------------------------------------------------------------------------------------------------------------------------------
// Concat files
//----------------------------------------------------------------------------------------------------------------------------------------------------------
concat: {
dev: {
src: [
'<%= SETTINGS.folders.dev %>*.js',
'!<%= SETTINGS.folders.dev %><%= SETTINGS.files.dev %>',
],
dest: '<%= SETTINGS.folders.dev %><%= SETTINGS.files.dev %>',
},
prod: {
src: [
'<%= SETTINGS.folders.dev %>/*.js',
'!<%= SETTINGS.folders.dev %><%= SETTINGS.files.dev %>',
],
dest: '<%= SETTINGS.folders.prod %><%= SETTINGS.files.prod %>',
},
},
//----------------------------------------------------------------------------------------------------------------------------------------------------------
// Banners
//----------------------------------------------------------------------------------------------------------------------------------------------------------
font: {
options: {
maxLength: 11,
font: 'chrome',
align: 'center',
colors: ['green', 'cyan', 'white'],
},
title: {
text: '<%= pkg.name %>',
},
},
//----------------------------------------------------------------------------------------------------------------------------------------------------------
// Wakeup
//----------------------------------------------------------------------------------------------------------------------------------------------------------
wakeup: {
wakeme: {
options: {
randomize: true,
notifications: true,
},
},
},
//----------------------------------------------------------------------------------------------------------------------------------------------------------
// Watch
//----------------------------------------------------------------------------------------------------------------------------------------------------------
watch: {
node: {
files: [
'<%= SETTINGS.folders.dev %>/*.js',
'!<%= SETTINGS.folders.dev %><%= SETTINGS.files.dev %>',
],
tasks: [
'_build',
'wakeup',
],
},
},
});
//------------------------------------------------------------------------------------------------------------------------------------------------------------
// Private tasks
//------------------------------------------------------------------------------------------------------------------------------------------------------------
grunt.registerTask('_build', [
'concat',
'replace',
]);
//------------------------------------------------------------------------------------------------------------------------------------------------------------
// Build tasks
//------------------------------------------------------------------------------------------------------------------------------------------------------------
grunt.registerTask('default', [ //run build with watch
'font:title',
'_build',
'wakeup',
'watch',
]);
};