Blame view

node_modules/uglify-to-browserify/index.js 1.61 KB
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
  'use strict'
  
  var fs = require('fs')
  var PassThrough = require('stream').PassThrough
  var Transform = require('stream').Transform
  
  if (typeof Transform === 'undefined') {
    throw new Error('UglifyJS only supports browserify when using node >= 0.10.x')
  }
  
  var cache = {}
  module.exports = transform
  function transform(file) {
    if (!/tools\/node\.js$/.test(file.replace(/\\/g,'/'))) return new PassThrough();
    if (cache[file]) return makeStream(cache[file])
    var uglify = require(file)
    var src = 'var sys = require("util");\nvar MOZ_SourceMap = require("source-map");\nvar UglifyJS = exports;\n' + uglify.FILES.map(function (path) { return fs.readFileSync(path, 'utf8') }).join('\n')
  
    var ast = uglify.parse(src)
    ast.figure_out_scope()
  
    var variables = ast.variables
      .map(function (node, name) {
        return name
      })
  
    src += '\n\n' + variables.map(function (v) { return 'exports.' + v + ' = ' + v + ';' }).join('\n') + '\n\n'
  
    src += 'exports.AST_Node.warn_function = function (txt) { if (typeof console != "undefined" && typeof console.warn === "function") console.warn(txt) }\n\n'
  
    src += 'exports.minify = ' + uglify.minify.toString() + ';\n\n'
    src += 'exports.describe_ast = ' + uglify.describe_ast.toString() + ';'
  
    // TODO: remove once https://github.com/substack/node-browserify/issues/631 is resolved
    src = src.replace(/"for"/g, '"fo" + "r"')
  
    cache[file] = src
    return makeStream(src);
  }
  
  function makeStream(src) {
    var res = new Transform();
    res._transform = function (chunk, encoding, callback) { callback() }
    res._flush = function (callback) {
      res.push(src)
      callback()
    }
    return res;
  }