Browserify需要使用Browserify构建的供应商模块

时间:2014-08-23 18:16:04

标签: javascript bower browserify

我遇到了浏览器需要供应商库的问题。

我使用的供应商库是better-dom,它也是使用Browserify构建的。我是从bower安装的,当我尝试构建时,我得到了:

Error: Cannot find module './utils' from '<...>/bower_components/better-dom/dist'

显然,Browserify正在尝试解析和处理预构建库中的requires语句。我尝试browserify-shimmodulify没有运气,下面还包括其他尝试。感谢任何帮助,提前谢谢。

我的配置:

package.json

...
"browser": {
  "DOMLegacy": "./bower_components/better-dom/dist/better-dom-legacy.js",
  "DOM": "./bower_components/better-dom/dist/better-dom.js"
},
...

Gulpfile.js

gulp.task('scripts', function() {
  var bundle = browserify({
    noparse: ["<...>bower_components/better-dom/dist/better-dom.js"]
  });

  bundle.add('./js/all.js');

  // bundle.external("./bower_components/better-dom/dist/better-dom-legacy.js");
  // bundle.external("./bower_components/better-dom/dist/better-dom.js");

  // bundle.transform({ modulify: {
  //   "./bower_components/better-dom/dist/better-dom-legacy.js": "DOMLegacy",
  //   "./bower_components/better-dom/dist/better-dom.js": "DOM"
  // }});

  // bundle.require(
  //   "./bower_components/better-dom/dist/better-dom-legacy.js",
  //   { expose: "DOMLegacy" });
  // bundle.require(
  //   "./bower_components/better-dom/dist/better-dom.js",
  //   { expose: "DOM" }
  // );

  return bundle.bundle()
    .on('error', function(e) {
      console.log(e.toString());
      this.emit('end');
    })
    .pipe(source('all.js'))
    .pipe(gulp.dest(paths.assets));
});

1 个答案:

答案 0 :(得分:2)

我刚发现browserify 5中存在noparse选项的错误。

解决方法:使用此选项的旧名称:noParse(仍在browserify 5中工作)

var bundle = browserify({
    noParse: ["<...>bower_components/better-dom/dist/better-dom.js"]
});

它应该修复你的构建。