Grunt Uglify源映射“无法写入”

4
我正在使用Grunt(通过grunt-contrib-uglify和grunt-contrib-concat插件)来合并和压缩文件,并且想要添加一个源映射。Uglify文档中提到只需要在选项中添加sourceMap并将其设置为true即可实现此目的。但是,当我将其添加到我的任务中(已经尝试了几个不同的任务),该过程一直运行良好,直到到达源映射部分时,我得到以下错误信息:

Writing true...ERROR

Warning: Unable to write "true" file (Error code: undefined). Use --force to continue.

文件已经合并和压缩完成,但是源映射没有成功生成。
以下是我的Grunt文件示例:
uglify: {
  options: {
    banner: '/*! <%= pkg.name %> <%= pkg.version %> <%= grunt.template.today("yyyy-mm-dd") %> */\n',
  },
  publicjs: {
    options: {
        sourceMap: true
    },
    files: {
      'js/<%= pkg.name %>_public.min.js': ['<%= concat.publicjs.dest %>']
    }
  }
}

我也试过在顶层选项对象中使用sourceMap。

有什么想法吗?显然Grunt可以将文件写入目录,因为它创建了合并和压缩的文件,我无法想象还可能出现什么问题。

1个回答

6

https://github.com/gruntjs/grunt-contrib-uglify

在“从2.x迁移到3.x”一节中提到了以下内容:

sourceMap - 仅接受布尔值。为您生成一个具有默认名称的映射

因此,看起来您正在使用旧版本与新版本的配置选项。

  • 您可以升级。
  • 或使用旧版本的配置选项。(我认为您应该将目标文件名分配给此变量,而不是true。但我没有在旧版本的文档中验证。)

哦,我傻了。我运行了npm update,但是(我是node的新手)没有意识到它不仅仅是更新到最新版本(我需要更好地查找如何在package.json中定义)。谢谢。 - derikb
示例代码正在使用布尔值来表示“SourceMap”,那么应该如何修复? - doublejosh
OP的(旧)版本期望在配置变量sourceMap中提供文件名,而不是布尔值。新版本期望布尔值。 - Lajos Veres

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接