mirror of
https://github.com/VinylDNS/vinyldns
synced 2025-08-22 02:02:14 +00:00
- Simplify build config - Add TTY check to Makefiles for running Docker containers - Update `fs2` to latest patch - Update `sbt-assembly` plugin - Update portal to remove chatty console - Update portal scripts to add license header - Update prepare-portal/Gruntfile to combine js and css where applicable - Remove unused gentelella files from final portal artifact - Add support for shared zones to quickstart/docker images - Consolidate built artifacts in `artifacts/` to make eventual release easier
134 lines
5.1 KiB
JavaScript
134 lines
5.1 KiB
JavaScript
module.exports = function(grunt) {
|
|
|
|
const license = `/*
|
|
* Copyright 2018 Comcast Cable Communications Management, LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the \\"License\\");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an \\"AS IS\\" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/`;
|
|
|
|
grunt.loadNpmTasks('grunt-contrib-copy');
|
|
grunt.loadNpmTasks('grunt-contrib-clean');
|
|
grunt.loadNpmTasks('grunt-karma');
|
|
grunt.loadNpmTasks('grunt-mocha-phantomjs');
|
|
grunt.loadNpmTasks('grunt-contrib-concat');
|
|
|
|
// Project configuration.
|
|
grunt.initConfig({
|
|
pkg: grunt.file.readJSON('package.json'),
|
|
|
|
copy: {
|
|
// Collect all of the javascript and CSS files that we need (we'll combine them later)
|
|
main: {
|
|
files: [
|
|
{expand: true, flatten: true, src: ['node_modules/angular/angular.min.js'], dest: 'public/js'},
|
|
{expand: true, flatten: true, src: ['node_modules/bootstrap/dist/js/bootstrap.min.js'], dest: 'public/js'},
|
|
{expand: true, flatten: true, src: ['node_modules/jquery/dist/jquery.min.js'], dest: 'public/js'},
|
|
{expand: true, flatten: true, src: ['node_modules/moment/min/moment.min.js'], dest: 'public/js'},
|
|
|
|
{expand: true, flatten: true, src: ['node_modules/bootstrap/dist/css/bootstrap.min.css'], dest: 'public/css'},
|
|
{expand: true, flatten: true, src: ['node_modules/font-awesome/css/font-awesome.min.css'], dest: 'public/css'},
|
|
|
|
// We're picking just the resources we need from the gentelella UI framework and temporarily storing them in mapped/ui/
|
|
{expand: true, flatten: true, cwd: 'node_modules/gentelella', dest: 'mapped/ui', src: '**/jquery.{smartWizard,mCustomScrollbar.concat.min,dataTables.min,mousewheel.min}.js'},
|
|
{expand: true, flatten: true, cwd: 'node_modules/gentelella', dest: 'mapped/ui', src: '**/bootstrap-daterangepicker/daterangepicker.js'},
|
|
{expand: true, flatten: true, cwd: 'node_modules/gentelella', dest: 'mapped/ui', src: '**/build/css/custom.min.css'},
|
|
{expand: true, flatten: true, cwd: 'node_modules/gentelella', dest: 'mapped/ui', src: '**/{daterangepicker,animate.min}.css'},
|
|
{expand: true, flatten: true, cwd: 'node_modules/gentelella', dest: 'public/fonts', src: '**/fonts/*.{woff,woff2,ttf}'},
|
|
|
|
{expand: true, flatten: true, src: ['public/custom/**/*.js', '!public/custom/**/*.spec.js'], dest: 'public/js'},
|
|
{expand: true, flatten: true, src: ['public/custom/**/*.css'], dest: 'public/css'},
|
|
],
|
|
},
|
|
// Unit test files
|
|
unit: {
|
|
files: [
|
|
{expand: true, flatten: true, src: ['node_modules/angular-mocks/angular-mocks.js'], dest: 'public/test_frameworks'},
|
|
{expand: true, flatten: true, src: ['node_modules/jasmine-jquery/lib/jasmine-jquery.js'], dest: 'public/test_frameworks'},
|
|
],
|
|
},
|
|
},
|
|
|
|
// Unit test configuration
|
|
karma: {
|
|
unit: {
|
|
configFile: 'karma.conf.js',
|
|
},
|
|
},
|
|
|
|
// Combine multiple files to make it easier to import and use them
|
|
concat: {
|
|
options: {
|
|
sourceMap: true,
|
|
},
|
|
css: {
|
|
files: {
|
|
'public/css/ui.css': ['mapped/ui/*.css'],
|
|
},
|
|
},
|
|
vinyldns: {
|
|
options: {
|
|
banner: license,
|
|
separator: ';\n',
|
|
process: (src, filepath) => {
|
|
return '/* Source: ' + filepath + '*/\n' +
|
|
src.replace(/(^|\n)[ \t]*('use strict'|"use strict");?\s*/g, '$1').replace(/\/\*.+?\*\//gs, '').replace(/\n{2,}/g, '\n');
|
|
},
|
|
},
|
|
files: {
|
|
'public/js/vinyldns.js': [
|
|
'public/lib/**/*.module.js',
|
|
'public/lib/**/*.js',
|
|
'!public/lib/**/*.spec.js',
|
|
],
|
|
},
|
|
},
|
|
ui_javascript: {
|
|
options: {
|
|
separator: ';\n',
|
|
process: (src, filepath) => {
|
|
return '/* Source: ' + filepath + ' */\n' +
|
|
src.replace(/(^|\n)[ \t]*('use strict'|"use strict");?\s*/g, '$1');
|
|
},
|
|
},
|
|
files: {
|
|
'public/js/ui.js': ['mapped/ui/**/*.js'],
|
|
},
|
|
},
|
|
ui_css: {
|
|
options: {
|
|
separator: '\n',
|
|
process: (src, filepath) => {
|
|
return '/* Source: ' + filepath + ' */\n' + src;
|
|
},
|
|
},
|
|
files: {
|
|
'public/css/ui.css': ['mapped/ui/**/*.css'],
|
|
},
|
|
},
|
|
},
|
|
|
|
clean: {
|
|
js: ['public/js/*', '!public/js/custom.js'],
|
|
css: ['public/css/*', '!public/css/{theme-overrides,vinyldns}.css'],
|
|
mapped: ['mapped/'],
|
|
fonts: ['public/fonts'],
|
|
unit: ['public/test_frameworks/*'],
|
|
},
|
|
});
|
|
|
|
// Default task
|
|
grunt.registerTask('default', ['clean', 'copy:main', 'concat', 'clean:mapped']);
|
|
// Unit tests
|
|
grunt.registerTask('unit', ['default', 'copy:unit', 'karma:unit', 'clean:unit']);
|
|
};
|