如何删除 (function(){'use strict'; } and ());当与 grunt-contrib-concat 连接时

How to remove (function(){'use strict'; } and ()); when concatenating with grunt-contrib-concat

我可以按正确的顺序连接我的文件,我可以将 (function(){'use strict'; 添加到输出文件的顶部,将 }()); 添加到输出文件的底部,但我不知道如何删除 (function(){'use strict';}()); 在连接之前来自各个文件。

我通读了文档并尝试使用 custom process example 并且我知道我需要对此行进行一些更改 src.replace(/(^|\n)[ \t]*('use strict'|"use strict");?\s*/g, ''); 但不幸的是我不了解该行或如何更改它。

最后,我不知道进行此更改是否重要。当我连接并缩小我的代码时,保持原样,不要添加横幅和页脚,一切正常。仅用一个替换单个使用限制有什么好处吗?

来自我的 Gruntfile

concat: {
    options: {
        banner: "(function(){'use strict';\n",
        footer: '}());',
        process: function(src, filepath) {
            return '// Source: ' + filepath + '\n' +
                src.replace(/(^|\n)[ \t]*('use strict'|"use strict");?\s*/g, '');
        }
    },
    nonMin: {
        src: ['src/angular-gmap-gplace.js', 'src/modules/*.js'],
        dest: 'dist/angular-gmap-gplace.js'
    },
    min: {
        src: ['src/**/*.js'],
        dest: '.tmp/concat.js'
    }
}

Is there any benefit to replacing the individual use-stricts with just the one?

没有。只有缺点。

在每个文件中使用 IIFE 意味着每个文件都有自己的范围,除非您有意创建全局文件,否则不会干扰其他文件。

如果您将它们合并到一个 IIFE 中,那么这就不再正确了,它们彼此共享它们的作用域。您可能会不小心覆盖另一个文件中同名变量使用的变量。