Browserify Ember.js 1.7

use*_*765 5 ember.js browserify browserify-shim

最新的1.7 Ember beta打破了我的gulp-browserify任务(下面的配置),但有以下异常:

Error: browserify-shim needs to be passed a proper browserify instance as the first argument.

Gulp一直在愉快地浏览Ember直到1.7(并且使用下面的配置继续使用最新的1.6).我在1.7的发行说明中注意到模块系统经历了一些剧变.

我的问题是:这是Ember(或者也许是Browserify)中的合法错误吗?或者Ember不再打算与浏览器这样的工具一起使用,而是支持其他一些特定的方法?

精确配置:

packages.json:

(注意,这个特定的站点已经通过标准脚本标记嵌入了jQuery,因此需要browserify-shim,以及global:jquery dep上的表示法.)

{
  "browser": {
    "handlebars": "./scripts/lib/handlebars-v1.3.0.js",
    "ember": "./scripts/lib/ember-1.7.min.js"
  },
  "browserify-shim": {
    "jquery": "global:jQuery",
    "handlebars": "Handlebars",
    "ember": {
      "exports": "Ember",
      "depends": [
        "handlebars:Handlebars"
      ]
    }
  },
  "browserify": {
    "transform": [
      "browserify-shim"
    ]
  },
  "devDependencies": {
    "browserify": "^4.1.11",
    "browserify-shim": "^3.5.0",
    "gulp": "^3.8.1",
    "gulp-browserify": "^0.5.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

gulpfile.js:

var gulp = require('gulp'),
    browserify = require('gulp-browserify');


gulp.task('scripts', function () {
    gulp.src([
              './app.js',
            ])
        .pipe(browserify({
            insertGlobals: false,
            debug: false
        })).pipe(gulp.dest('./Scripts/build'));
});

gulp.task('default', ['scripts']);
Run Code Online (Sandbox Code Playgroud)

app.js:

var Ember = require('ember');
Run Code Online (Sandbox Code Playgroud)

基本Repro:

在测试目录中:

  • npm install gulp browserify gulp-browserify browserify-shim
  • 确保deps存在路径:
    • "handlebars": "./scripts/lib/handlebars-v1.3.0.js"
    • "ember": "./scripts/lib/ember-1.7.min.js"
  • 添加app.js上面的示例
  • 加上我的packages.json上面
  • 加上我的gulpfile.js上面
  • gulp
  • 将Ember 1.7换成1.6以获得成功.

谢谢!