0

我正在使用UglifyJS2将我的 javascript 源文件缩小为一个大的缩小文件。这是我使用的相关代码:

var options = options || {};
options.outSourceMap = 'minfile.js.map';

try {
    // "scripts" is an array of absolute paths to the javascript files
    var minified = uglifyjs.minify(scripts, options);

    // minified.map contains the minfile
} catch (err) {
    // handle errs here
}

minfile 本身包含源文件的绝对路径:

{
    "version": 3,
    "file": "nodebb.min.js.map",
    "sources": [
        "/path/to/folder/jquery/js/jquery.js",
        "/path/to/folder/another/lib.js",
        ...
    ],
    ...
}

问题是,我传入的源文件不能公开访问,它们只编译到 minfile 中,只有 minfile 可以访问。因此,我的源映射似乎毫无意义,因为 Chrome(在我的情况下)试图加载http://mydomain.com/path/to/folder/jquery/js/jquery.js而不是读取我本地 fs 上的文件。

我究竟做错了什么?

4

2 回答 2

0

看起来UglifyJS2回购缺少节点 API 的一堆选项,但这个 PR 修复了一点:https ://github.com/mishoo/UglifyJS2/pull/192

所以我现在正在使用它package.json

"dependencies": {
    ...
    "uglify-js": "git+https://github.com/julianlam/UglifyJS2.git",
    ...
}

然后prefix可以传递到minify方法中以删除不需要的路径部分。

于 2014-05-31T01:52:32.210 回答
0

另一种选择是使用“Hard Way”

并在“源地图生成”而不是source_map.toString()使用

var json = source_map.get().toJSON();
json.sources = [ /* override sources */ ];
JSON.stringify(json);
于 2015-08-27T17:51:29.577 回答