Browserify-shim with gulp

时间:2015-08-17 21:16:14

标签: node.js gulp browserify shim browserify-shim

我正在使用browserify测试gulp,我试图让以下工作:

我有一个名为export.js的文件,它依赖于另一个名为export2.js的文件。

export.js

module.exports = function(){ 
    console.log("test export"); 
}; 

export2.js

module.exports = function(){
    console.log("export 2"); 
}

我有另一个名为app.js的文件,我在其中定义了以下代码:

var e = require("e"); 

我尝试使用垫片来定义依赖关系 我的package.json中的相关代码如下所示:

  "browserify-shim": { 
        "jquery": "$", 
        "public/src/js/home/export.js":  { 
            "exports": "e", 
            "depends": [ 
              "public/src/js/home/export2.js"
            ]
        }
  }, 
  "browserify": {
      "transform": [
          "browserify-shim" 
      ]
  }, 

路径应该是正确的。

我的gulp文件定义:

//Uglifies scripts 
gulp.task("uglify-scripts", function(){ 
    return browserify({ entries:["public/src/js/home/app.js"]})
            .bundle()
            .pipe(source("bundle.js"))  // gives streaming vinyl file object
            .pipe(buffer())             //convert from streaming to buffered vinyl file object
            .pipe(uglify())             //gulp-uglify 
            .pipe(gulp.dest("public/src/js/home/dist"))
            .pipe(livereload()); 

}); 

我之前测试过任务(没有依赖关系的app.js的uglification),它运行正常 但是,在定义了垫片的情况下,我仍然在控制台中收到一条提到

的消息
  

无法找到模块' e'

你能看出出了什么问题或我误解了什么吗?

1 个答案:

答案 0 :(得分:-2)

垫片适用于不支持commonJS的模块。您可以简单地明确定义这些依赖项:

export.js

var e2 = require('./export2.js');
module.exports = function(){ 
    console.log("test export"); 
};

export2.js

module.exports = function(){
    console.log("export 2"); 
};

app.js

var e = require('public/src/js/home/export.js');