首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Browserify编译动态需要的模块

使用Browserify编译动态需要的模块
EN

Stack Overflow用户
提问于 2014-02-08 13:34:44
回答 3查看 11K关注 0票数 17

我正在使用Browserify将一个大型的Node.js应用程序编译成一个单独的文件(使用选项--bare--ignore-missing来避免在Express中使用lib-cov的麻烦)。我有一些代码可以根据目录中的内容动态加载模块:

代码语言:javascript
复制
var fs = require('fs'),
    path = require('path');

fs.readdirSync(__dirname).forEach(function (file) {
    if (file !== 'index.js' && fs.statSync(path.join(__dirname, file)).isFile()) {
        module.exports[file.substring(0, file.length-3)] = require(path.join(__dirname, file));
    }
});

我在我的应用程序中收到奇怪的错误,从我编译的文件加载的目录中加载了aribtrary文本文件。我认为这是因为路径不再正确设置,并且因为Browserify将无法require()像这样动态加载的正确文件。

除了创建一个静态的index.js文件之外,有没有一种更好的方法来动态地要求一个与Browserify兼容的开箱即用的模块目录?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-28 07:34:47

这个插件允许需要全局模式:require-globify

然后,通过一些小技巧,您可以在编译时添加所有文件,而不是执行它们:

代码语言:javascript
复制
// Hack to compile Glob files. Don´t call this function!
function ಠ_ಠ() {
  require('views/**/*.js', { glob: true })
}

例如,您可以在需要的时候请求并执行特定的文件:D

代码语言:javascript
复制
var homePage = require('views/'+currentView)
票数 21
EN

Stack Overflow用户

发布于 2014-05-20 19:13:02

Browserify不支持动态请求-请参阅GH issue 377

我所知道的动态请求目录的唯一方法是:列出目录文件并写入“静态”index.js文件的构建步骤。

票数 2
EN

Stack Overflow用户

发布于 2015-05-31 03:22:29

还有bulkify转换,如下所示:

https://github.com/chrisdavies/tech-thoughts/blob/master/browserify-include-directory.md

基本上,你可以在你的app.js或者其他什么东西中做到这一点:

代码语言:javascript
复制
var bulk = require('bulk-require');

// Require all of the scripts in the controllers directory
bulk(__dirname, ['controllers/**/*.js']);

我的接收文件中有这样的内容:

代码语言:javascript
复制
gulp.task('js', function () {
  return gulp.src('./src/js/init.js')
    .pipe(browserify({
      transform: ['bulkify']
    }))
    .pipe(rename('app.js'))
    .pipe(uglify())
    .pipe(gulp.dest('./dest/js'));
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21642398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档