创建源映射指向系统路径而不是相对路径

时间:2014-05-30 02:55:48

标签: javascript minify source-maps uglifyjs2

我正在使用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上读取文件。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

看起来UglifyJS2 repo缺少节点API的一系列选项,但是这个PR修正了一点:https://github.com/mishoo/UglifyJS2/pull/192

所以我现在在package.json中使用它:

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

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

答案 1 :(得分:0)

另一种选择是使用"Hard Way"

"source map generating"而不是source_map.toString()使用

var json = source_map.get().toJSON();
json.sources = [ /* override sources */ ];
JSON.stringify(json);