UNPKG

beast.js

Version:
212 lines (179 loc) 7.87 kB
'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', ]); };