6

我现在正在尝试使用 Browserify,但我遇到了问题。

我总是使用带 Lodash 而不是 Underscore 的 Backbone,所以我为 Browserify 编写了一些 shim 脚本:

shims/lodash.js

'use strict';
/* global window,require,module */
require('../vendor/lodash.underscore-1.2.0');
module.exports = window._;

shims/backbone.js

'use strict';
/* global window,require,module */
require('../vendor/backbone-1.0.0');
module.exports = window.Backbone;

app.coffee

'use strict'
$ = require './shims/jquery'
_ = require './shims/underscore'
Backbone = require './shims/backbone'

我实际上是grunt-coffeeify用来构建 Browserify 模块的,它在下面显示一个错误:

Running "coffeeify:source" (coffeeify) task
Warning: module "underscore" not found from "/Users/User/proj/src/js/vendor/backbone-1.0.0.js" Use --force to continue.

我应该改变什么才能正常工作 Backbone?提前致谢。

更新

不知何故,它适用于以下代码:

shims/lodash.js

'use strict';
/* global require,module */
module.exports = require('../vendor/lodash-1.2.0');

shims/backbone.js

'use strict';
/* global window,require,module */
window.$ = require('./jquery');
window._ = require('./lodash');
module.exports = require('../vendor/backbone-1.0.0');

并在下面注释掉代码backbone-1.0.0.js

//if (!_ && (typeof require !== 'undefined')) _ = require('underscore');

不过这看起来有些不对劲……

4

2 回答 2

3

b是 browserify 的一个实例。

b.require('lodash', {expose: 'underscore'});

对于 jQuery,请查看我在 github 上的版本:https ://github.com/amiorin/jquery

于 2013-06-17T20:05:23.127 回答
0

你不需要任何垫片。您所需要的只是 browserify 任务中的正确别名。

alias: ['./node_modules/lodash/dist/lodash.underscore.js:underscore']

看我的例子

于 2014-10-07T09:24:57.687 回答