/// /// // node-debug (Resolve-Path ~\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt) task:target module.exports = function (grunt) { /// grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-copy'); grunt.loadNpmTasks('grunt-contrib-clean'); grunt.loadNpmTasks('grunt-contrib-less'); grunt.loadNpmTasks('grunt-typescript'); grunt.loadNpmTasks('grunt-tslint'); grunt.loadNpmTasks('grunt-tsng'); //grunt.loadNpmTasks('grunt-contrib-jshint'); //grunt.loadNpmTasks('grunt-contrib-qunit'); //grunt.loadNpmTasks('grunt-contrib-concat'); grunt.initConfig({ staticFilePattern: '**/*.{js,css,map,html,htm,ico,jpg,jpeg,png,gif,eot,svg,ttf,woff}', pkg: grunt.file.readJSON('package.json'), uglify: { options: { banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n' }, release: { files: { 'wwwroot/app.min.js': ['<%= typescript.dev.dest %>'] } } }, clean: { options: { force: true }, bower: ['wwwroot'], assets: ['wwwroot'], tsng: ['client/**/*.ng.ts'] }, copy: { // This is to work around an issue with the dt-angular bower package https://github.com/dt-bower/dt-angular/issues/4 fix: { files: { "bower_components/jquery/jquery.d.ts": ["bower_components/dt-jquery/jquery.d.ts"] } }, bower: { files: [ { // JavaScript expand: true, flatten: true, cwd: "bower_components/", src: [ "modernizr/modernizr.js", "jquery/dist/*.{js,map}", "jquery.validation/jquery.validate.js", "jquery.validation/additional-methods.js", "bootstrap/dist/**/*.js", "respond/dest/**/*.js", "angular/*.{js,.js.map}", "angular-route/*.{js,.js.map}", "angular-bootstrap/ui-bootstrap*" ], dest: "wwwroot/js/", options: { force: true } }, { // CSS expand: true, flatten: true, cwd: "bower_components/", src: [ "bootstrap/dist/**/*.css", ], dest: "wwwroot/css/", options: { force: true } }, { // Fonts expand: true, flatten: true, cwd: "bower_components/", src: [ "bootstrap/**/*.{woff,svg,eot,ttf}", ], dest: "wwwroot/fonts/", options: { force: true } } ] }, assets: { files: [ { expand: true, cwd: "Client/", src: [ '<%= staticFilePattern %>' ], dest: "wwwroot/", options: { force: true } } ] } }, less: { dev: { options: { cleancss: false }, files: { "wwwroot/css/site.css": "Client/**/*.less" } }, release: { options: { cleancss: true }, files: { "wwwroot/css/site.css": "Client/**/*.less" } } }, tsng: { options: { extension: ".ng.ts" }, dev: { files: [ // TODO: Automate the generation of this config based on convention { src: ['Client/ng-apps/components/**/*.ts', 'Client/ng-apps/MusicStore.Store/**/*.ts', "!**/*.ng.ts"], dest: "Client/ng-apps" // This needs to be the same across all sets so shared components work }, { src: ['Client/ng-apps/components/**/*.ts', 'Client/ng-apps/MusicStore.Admin/**/*.ts', "!**/*.ng.ts"], dest: "Client/ng-apps" // This needs to be the same across all sets so shared components work } ] } }, tslint: { options: { configuration: grunt.file.readJSON("tslint.json") }, files: { src: ['Client/**/*.ts', '!**/*.ng.ts'] } }, typescript: { options: { module: 'amd', // or commonjs target: 'es5', // or es3 sourcemap: false }, dev: { files: [ // TODO: Automate the generation of this config based on convention { src: ['Client/ng-apps/components/**/*.ng.ts', 'Client/ng-apps/MusicStore.Store/**/*.ng.ts'], dest: 'wwwroot/js/MusicStore.Store.js' }, { src: ['Client/ng-apps/components/**/*.ng.ts', 'Client/ng-apps/MusicStore.Admin/**/*.ng.ts'], dest: 'wwwroot/js/MusicStore.Admin.js' } ] }, release: { options: { sourcemap: true }, files: '<%= typescript.dev.files %>' } }, watch: { typescript: { files: ['Client/**/*.ts', "!**/*.ng.ts"], tasks: ['ts'] }, dev: { files: ['bower_components/<%= staticFilePattern %>', 'Client/<%= staticFilePattern %>'], tasks: ['dev'] } } }); //grunt.registerTask('test', ['jshint', 'qunit']); grunt.registerTask('ts', ['tslint', 'tsng', 'typescript:dev']); grunt.registerTask('dev', ['clean', 'copy', 'less:dev', 'ts']); grunt.registerTask('release', ['clean', 'copy', 'uglify', 'less:release', 'typescript:release']); grunt.registerTask('default', ['dev']); };