【问题标题】:Change JS file encoding to UTF-8 with signature using Grunt使用 Grunt 将 JS 文件编码更改为带有签名的 UTF-8
【发布时间】:2013-06-13 15:56:56
【问题描述】:

我正在为 Win8 JS 应用程序编写构建脚本,并寻找一种将文件编码为带有签名的 UTF-8 自动编码的方法,以便编译的项目将通过 WACK 测试。我注意到 Grunt 文档中有以下选项:

grunt.file.defaultEncoding = 'utf8';

但不确定实际将编码设置为什么。有什么建议吗?

在 Visual Studio 中,您只需打开文件,单击另存为,然后选择带有签名的 UTF-8,它是倒数第二个。如果您的应用有大量 JS 文件,尤其是在构建过程中生成的文件,这将非常耗时

【问题讨论】:

    标签: javascript encoding windows-8 utf-8 gruntjs


    【解决方案1】:

    从 Grunt 0.4.2 版开始,您现在可以在写入文件时保留 BOM:

    grunt.file.preserveBOM = true;

    还有其他 Windows 改进。 It has been added to the documentation as well.

    我发现bug 解释了您遇到的相同问题,changelog 说现在应该修复它。

    【讨论】:

    • 我不知道为什么,但是在 0.4.5 中它仍然没有保留 BOM,尽管我将 grunt.file.preserveBOM 设置为 true。对我来说唯一真正的解决方案是来自@planky 的解决方案。
    【解决方案2】:

    现在有一个 grunt 任务可以将 BOM 添加到您的文件中:grunt-byte-order-mark。我刚刚使用它,我的应用现在通过了 Windows 应用认证工具包测试。

    https://www.npmjs.com/package/grunt-byte-order-mark

    【讨论】:

    • 正如@belzebu 在 Allan 的评论中指出的那样,preserveBOM 在 0.4.5 中似乎不起作用,但 grunt-byte-order-mark 任务似乎确实可以做到
    • 可能是您的原始文件没有 BOM,或者另一个任务正在剥离它们,而不是 grunt 本身。如果是这种情况,grunt-byte-order-mark 将添加它们,无论它们之前是否存在。
    猜你喜欢
    • 1970-01-01
    • 2013-09-12
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 2015-01-15
    • 2017-02-23
    • 2019-10-25
    相关资源
    最近更新 更多