我正在使用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上读取文件。
我做错了什么?
答案 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);