Gruntfile.js 3.26 KB
module.exports = function (grunt) {
    "use strict";
    
    let shim = function(obj) { return `\nexport default ${obj};\n`; };

// Project configuration.
    grunt.initConfig({
        terser: {
            build: {
                files: { 
                    'build/arcs.min.js': [
                        'build/arcs.js'
                    ],
                    'build/arcs_browser.min.js': [
                        'src/arcs_browser.js'
                    ],
                    'build/arcseditor.min.js': [
                        'build/arcseditor.js'
                    ]
                }
            }
        },
        bower: {
            options : {
                verbose: true,
                targetDir: './deps',
                copy: true,
                cleanBowerDir: true, 
                layout: 'byComponent'
            },
            install : {
                
            }
            
        },
        file_append: {
            default_options: {
                files: [
                    {
                        append: shim('AR'),
                        prepend: `import CV from '../cv/index.js';\n`,
                        input: './deps/aruco/index.js'
                    },
                    {
                        append: shim('CV'), 
                        input: './deps/cv/index.js'
                    }
                ]
            }            
        },
        'string-replace': {
            dist: {
                files: {
                    'deps/objloader/objloader.js': 'deps/objloader/index.js',
                    'deps/mtlloader/mtlloader.js': 'deps/mtlloader/index.js',
                    'deps/ddsloader/ddsloader.js': 'deps/ddsloader/index.js'
                },
                options: {
                    replacements:[{                      
                        pattern: '../../../build/three.module.js',
                        replacement: '../three.js/index.js'
                    }]                    
                }                
                
            }                        
        },        
	    concat: {
            editor : {
                src: [ 
                        'utils/editor/arcseditor.js',
                        'utils/editor/dragdrop.js',
                        'utils/editor/template.js',
                        'utils/editor/dialog.js',
                        'utils/editor/componentdialog.js',
                        'utils/editor/invocationdialog.js',
                        'utils/editor/connectiondialog.js'
                     ],
                dest: 'build/arcseditor.js'
            }

	    }
	
    });

    // Load the plugin that provides the "uglify" task.
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('grunt-contrib-copy');
    grunt.loadNpmTasks('grunt-jsdoc');
    grunt.loadNpmTasks('grunt-jslint');
    grunt.loadNpmTasks('grunt-terser');
    grunt.loadNpmTasks('grunt-bower-task');
    grunt.loadNpmTasks('grunt-file-append');
    grunt.loadNpmTasks('grunt-string-replace');

    // Default task(s).
    grunt.registerTask('default', ['concat','copy','terser']);
    grunt.registerTask('lint', ['jslint']);
    grunt.registerTask('doc', ['jsdoc']);
    grunt.registerTask('install-deps', ['bower', 'file_append', 'string-replace']);
    
};