node.js - 在单独的browserify供应商包中,如何包括 node_modules

  显示原文与译文双语对照的内容
0 0

我试着将AngularJS app转换为使用browserify 。 我已经安装了所有的bower包在node_modules使用国家适应行动方案。 我现在想browserify分成单独的供应商分发包并将它们声明为'外部'依赖项。 我想给他们别名,以便我可以" require( Angular ) " 而不是" require( angular/angular ) ",因为它似乎与外部对象可以执行。

我见过的示例( e .g 。 http://benclinkinbeard .com/posts/external包为了提高browserify builds/ ) 所有推测我携带downloaed供应商文件到'lib'目录。 我只想包供应商文件从node_modules 。 似乎也应该能够轻松但我看不见怎么做

时间:原作者:1个回答

0 0

我只是想做一样的事情。 我觉得你需要使用 --require作为供应商捆绑包, --export这个应用程序的依赖不会被捆绑的,这样两次。

对我来说它是有效使用browserify的api和7 - 11便利店( 被我node_modules lodash和pixijs ) :

var gulp = require('gulp');
var browserify = require('browserify');
var handleErrors = require('../util/handleErrors');
var source = require('vinyl-source-stream');
gulp.task('libs', function () {
  return browserify()
    .require('lodash')
    .require('pixi.js')
    .bundle()
    .on('error', handleErrors)
    .pipe(source('libs.js'))
    .pipe(gulp.dest('./build/'));
});
gulp.task('scripts', function () {
  return browserify('./src/main.js')
    .external('lodash')
    .external('pixi.js')
    .bundle()
    .on('error', handleErrors)
    .pipe(source('main.js'))
    .pipe(gulp.dest('./build/'));
});
gulp.task('watch', function(){
  gulp.watch('src/**', ['scripts']);
});
gulp.task('default', ['libs', 'scripts', 'watch']);

当然,这个解决方案是一个痛苦来维护。。。 所以我打补丁browserify中接受数组 requireexternal然后你能做到,我觉得就好多了:

var gulp         = require('gulp');
var browserify   = require('browserify');
var handleErrors = require('../util/handleErrors');
var source       = require('vinyl-source-stream');
var packageJson = require('../../package.json');
var dependencies = Object.keys(packageJson && packageJson.dependencies || {});
gulp.task('libs', function () {
  return browserify()
    .require(dependencies)
    .bundle()
    .on('error', handleErrors)
    .pipe(source('libs.js'))
    .pipe(gulp.dest('./build/'));
});
gulp.task('scripts', function () {
  return browserify('./src/main.js')
    .external(dependencies)
    .bundle()
    .on('error', handleErrors)
    .pipe(source('main.js'))
    .pipe(gulp.dest('./build/'));
});
gulp.task('watch', function(){
  gulp.watch('package.json', ['libs']);
  gulp.watch('src/**', ['scripts']);
});
gulp.task('default', ['libs', 'scripts', 'watch']);

那是我能想出的最好的武器。 求求你,让我知道你是否找到一个更好的方法。

原作者:
...