javascript - 在使用 grunt usemin 和 rev 时使用 SourceMaps Uglify

标签 javascript gruntjs sentry uglifyjs2

我想将 javascript 错误记录到服务器,但堆栈跟踪对于缩小的 JS 代码没有用。所以我正在考虑使用 GetsentryRollbarsourcemaps 的帮助下显示正确的堆栈跟踪.但是我首先要努力创建源 map 。

我遇到了这个错误

“目标 (_build/js/app.js) 未写入,因为 src 文件为空。”

一旦正确创建源映射,就会出现另一个问题,即 rev将重命名文件。我还需要留下未缩小的串联文件。

下面是我的 gruntfile.js(我从中删除了一些内容。)

module.exports = function(grunt) {

    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        clean: {
            jsFolders: {
                src: [
                    '_build/js/ui',
                    '_build/js/vendor',
                    '_build/js/app',
                    '_build/js/*templates.js'
                ]
            },
            build: {
                src: ['_build/**/*']
            }
        },

        copy: {
            build: {
                files: [{
                    expand: true,
                    src: [
                        'index.html',
                        'img/**/*', //includes web.cofig also.
                        'img/**/*.svg',
                        '!img/**/*.psd',
                        'js/**/*', //includes web.cofig also.
                        'css/**/*', //includes web.cofig also.
                        '*.png',
                        'favicon.ico'
                    ],
                    dest: '_build/'
                }]
            },
        },

        rev: {
            option: {
                algorithm: 'sha1',
                length: 4
            },
            all: {
                files: {
                    src: [
                        '_build/**/*.{js,css,eot,ttf,woff}'
                    ]
                }
            }
        },

        useminPrepare: {
            html: ['_build/index.html']
        },

        usemin: {
            html: [
                '_build/index.html'
            ],
            css: [
                '_build/css/**/*.css'
            ]
        },

        uglify: {
            options: {
                sourceMap: '_build/js/app.js.map',
            },
            js: {
                files: {
                    '_build/js/app.js': ['_build/js/app.js']
                }
            }
        },

        cssmin: {
            minify: {
                expand: true,
                cwd: '_build/css/',
                src: '*.css',
                dest: '_build/css/'
            }
        },
    });

grunt.registerTask('build', [
        'clean:build',
        'handlebars',
        'compass',
        'autoprefixer',
        'copy:build',
        'useminPrepare',
        'concat',
        'uglify',
        'cssmin',
        'clean:jsFolders',
        'rev',
        'usemin',
    ]);

};

更新


试过@Andy的解决方案,还是报同样的错误"Destination (_build/js/app.js) not written because src files were empty."并且在构建时还在下面说

 uglify:
  { options:
   { sourceMap: true,
     sourceMapName: '_build/js/app.js.map' },
  js: { files: { '_build/js/app.js': [ '_build/js/app.js' ] } },
  generated:
   { files:
      [ { dest: 'dist\\js\\app.js',
          src: [ '.tmp\\concat\\js\\app.js' ] } ] } }

不知道从哪里弄来的dest名字从。我的输出文件夹是 _build .

更新 2:
请引用以下链接以获得更好的解决方案
https://stackoverflow.com/a/20574196/148271 https://github.com/gruntjs/grunt-contrib-uglify/issues/39#issuecomment-14856100

最佳答案

useminPrepare 将现有的 uglify 配置与其自身合并,但嵌套在 generated 下。因此,这个 uglify 配置对我有用

grunt.initConfig({
  uglify: {
    generated: {
      options: {
        sourceMap: true
      }
    }
  }
});

关于javascript - 在使用 grunt usemin 和 rev 时使用 SourceMaps Uglify,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21992222/

相关文章:

python - 尝试向本地主机 :9000/store 发送错误时,Django-Sentry 给出错误 405

javascript - 屈服于 browserify 和 NPM? (咕噜构建)

javascript - igcombo 不适用于动态 DIV 元素

javascript - 跟踪像素可以从远程服务器执行 javascript 吗?

javascript - 如何验证数组中的对象?

javascript - 什么是 InstantSearchSDKJSBridgeClearHighlight?

python - 删除 Sentry 中的当前面包屑

node.js - 如何开始使用 yeoman 和 Three.js?

ruby-on-rails - 可以自动将我所有的js包含在index.html中吗?

node.js - 为什么我无法通过网络共享连接到连接服务的网站?