【发布时间】:2015-02-25 19:20:11
【问题描述】:
我想在浏览器中使用我的 NodeJS 模块 - 所以我使用 browserify 来处理它。
现在,如何阻止 browserify 在捆绑文件中包含模块的依赖项?在这种情况下,依赖项是 lodash,我将在 index.html 中单独加载它。
这是我目前得到的:
index.html
<script src="lodash.js"></script>
<script src="my-module.js"></script>
index.js
var _ = require('lodash');
_.each([0, 1, 2], function(item) {
console.log(item);
});
gulp.js
var browserify = require('browserify'),
source = require('vinyl-source-stream');
gulp.task('browserify', function() {
return browserify()
.require('./index.js', {
expose: 'my-module'
})
.bundle()
.pipe(source('my-module.js'))
.pipe(gulp.dest('./'));
});
【问题讨论】:
-
为什么要单独加载? browserify 的主要目标是捆绑一切......
-
嗯,前端应用程序 (index.html) 已经将 lodash
_设置为全局。 -
也许您应该更改前端应用程序?泄漏全局变量并不是最佳实践。
-
抱歉,我不同意,我有一个 Angular SPA,其中
angular和lodash作为全局变量。我认为这没有什么问题。 -
@loganfsmyth 捆绑一切使开发更容易,但为什么要在部署期间捆绑依赖项?大多数常见的库已经托管在 Google 和 Cloudflare 的 CDN 上;此外,用户的浏览器可能已经缓存了这些库。捆绑所有内容会失去速度优势。
标签: javascript node.js gulp browserify