如何用grunt-contrib-uglify给多文件生成source-map


这里也有个问题: http://stackoverflow.com/questions/14207983/how-to-specify-multiple-source-maps-in-uglify-grunt-task

参考了这里 http://flippinawesome.org/2013/07/01/building-a-javascript-library-with-grunt-js/


 module.exports = function(grunt) {
  var bannerContent = '... banner template ...';
  var name = '<%= pkg.name %>-v<%= pkg.version%>';  

  grunt.initConfig({
    // pkg must be defined inside initConfig object
    pkg : grunt.file.readJSON('package.json'),
    // uglify configuration
    uglify: {
      options: {
        banner: bannerContent,
        sourceMapRoot: '../',
        sourceMap: 'distrib/'+name+'.min.js.map',
        sourceMapUrl: name+'.min.js.map'
      },
      target : {
        src : ['src/**/*.js'],
        dest : 'distrib/' + name + '.min.js'
      }
    },
    concat: { /* ... concat configuration ... */ },
    jshint: { /* ... jshint configuration ... */ }
  });

  grunt.loadNpmTasks('grunt-contrib-jshint');
  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.registerTask('default', ['jshint', 'concat', 'uglify']);
};

我的配置


 uglify : {
            options : {
                banner:'/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n',
                sourceMapRoot: '../',
                sourceMap:'dist/' + '.map',
                sourceMapUrl: '.min.js.map'
            },
            main:{
                files: [
                    {
                        expand: true,
                        cwd: 'dist/',
                        src: ['js/**/*.js', '!js/**/*-debug.js'],
                        dest: 'dist/'
                    }
                ]
            }
        }

最后只生成了一个 .min.js.map,只是对一个js的map,没达到目录下所有的js的source-map效果

grunt JavaScript

川又伽椰子 11 years, 4 months ago

参考上面 http://stackoverflow.com/a/17503492


 uglify : {
            options : {
                banner:'/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n',
                sourceMapRoot: './dist/map/',
                sourceMap:function(path) { return path.replace(/js/,'map').replace('.js',".map")}
            },
            main:{
                files: [
                    {
                        expand: true,
                        cwd: 'dist/',
                        src: ['js/**/*.js', '!js/**/*-debug.js'],
                        dest: 'dist/'
                    }
                ]
            }
        }

解决

抱着全职看忘羡 answered 11 years, 4 months ago

Your Answer