使用 Gulp 将 browserify 模块设为外部

2024-03-20

我有一个图书馆lib.js我想从中创建lib/a.js and lib/b.js并能够从脚本中使用它client.js using var a = require('lib/a.js');当我只包含已编译的内容时它就可以工作lib.js之前的图书馆client.js(所以,lib.js必须声明一个require函数知道lib/a.js)

我想我必须使用external and alias但我不确定正确的方法是什么

另外,是否可以有一个 Gulp 文件来自动为我的库中的文件夹创建所有别名?例如。为所有文件创建一个别名lib/ dir?


这里有几个 gulp 任务,它们将有助于分别构建通用的 lib.js 和 client.js 包。

请注意,在捆绑 lib.js 时,您必须告诉 browserify b.require() lib/*.js,并且在捆绑 client.js 时,您必须告诉 b.external() 将单独加载的库

var path = require('path');
var gulp = require('gulp');
var browserify = require('browserify');
var concat = require('gulp-concat');
var transform = require('vinyl-transform');

gulp.task('build-lib', function () {

  // use `vinyl-transform` to wrap around the regular ReadableStream returned by b.bundle();
  // so that we can use it down a vinyl pipeline as a vinyl file object.
  // `vinyl-transform` takes care of creating both streaming and buffered vinyl file objects.
  var browserified = transform(function(filename) {

    // basename, for eg: 'a.js'
    var basename = path.basename(filename);

    // define the exposed name that your client.js would use to require();
    // for eg: require('lib/a.js'); // -> exposed name should be 'lib/a.js'
    var expose = 'lib/' + basename;

    return browserify(filename)
      .require(filename, { expose: expose})
      .bundle();
  });

  return gulp.src(['./lib/*.js'])
    .pipe(browserified)
    .pipe(concat('lib.js'))
    .pipe(gulp.dest('./dist'));
});

gulp.task('build-client', function () {

  var browserified = transform(function(filename) {
    // filename = './client.js'

    // let browserify know that lib/a.js and and lib/b.js are external files
    // and will be loaded externally (in your case, by loading the bundled lib.js 
    // for eg: <script src='dist/lib.js'>)
    return browserify(filename)
      .external('lib/a.js')
      .external('lib/b.js')
      .bundle();
  });

  return gulp.src(['./client.js'])
    .pipe(browserified)
    .pipe(gulp.dest('./dist'));
});

gulp.task('default', ['build-lib', 'build-client']);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Gulp 将 browserify 模块设为外部 的相关文章

随机推荐

  • 如何在java中逐行上传文件到谷歌云存储

    我有以下代码 String fullFileUrl fileUrl Storage storage StorageServiceHolder getStorage BlobId blobId GCSHelper uri2blobId ful
  • 会话数据在本地工作但不在 ipage 服务器上

    我已经尝试调试这个问题几个小时了 但没有成功 我有这两个文件 我的第一个文件 session start SESSION user 1 我的第二个文件 session start print r SESSION echo SESSION u
  • 根据输入将日期添加到框架中

    我有一个 R 数据集的输入变量 用于评估工具列表 它看起来如下 type lt as integer readline prompt Enter a Barcode 我有两列 一列包含通过输入语句找到的信息 一组条形码编号 另一列包含将特定
  • VS导出的模板不适用于新项目

    我已将以下工作项目导出为 VS 模板 该模板使用 ASP NET 5 RC1 https github com mohasi vs spa template https github com mohasi vs spa template 当
  • Python defaultdict 行为可以通过多处理实现吗?

    我不确定这是否可能 希望如此 我有一个数据集 我通过使用 defaultdict 的过程运行它 DefaultDict 有一个功能 如果您搜索某些内容并且它不在字典中 它就会被添加 在我的例子中 我正在搜索它们正在添加的值 然后我稍后会搜索
  • 我正在使用 PhoneGap,在我的页面中我尝试使用 FontAwesome 但它不起作用?

    我使用 PhoneGap for Android 创建了应用程序 并在应用程序中使用 FontAwesome 图标 但我看不到图标 只能看到方块 我像这样包含 FontAwesome 我这样使用它 i class icon circle i
  • javascript html5 使用来自不同域的图像绘制图像

    所以我有以下代码 var element document getElementById myCanvas var width element width var height element height var context elem
  • 将地图限制在一定范围内?

    有没有办法设置地图边界并实际上限制用户只能在这些边界内平移 我最接近我需要的是mapView fitBounds方法 但它似乎根本不限制平移 我做错了什么或者这个方法没有达到我的需要吗 我正在使用 SKMaps iOS SDK 版本 2 5
  • 使用 SQL 查找不同值

    显示摘要中含有 discover discoverer discovery discovered discovering 等词的20个奖项的名称和奖项金额 我的查询 SELECT title count award abstract FRO
  • 获取当前活动的键盘语言为 NSLocale

    我已经找到了很多方法 但没有有效的解决方案 这是我尝试过但没有成功的方法 1 简单调用主要语言 UITextInputMode primaryLanguage 总是返回 nil 2 订阅UITextInputCurrentInputMode
  • 如何在给定特定 PID 的情况下终止 Java 中的进程

    如果我有特定的 PID 如何在 Windows 上从 Java 代码中终止特定进程 除了执行特定的操作之外 我不知道任何其他解决方案Windows命令就像Runtime getRuntime exec taskkill F PID 827
  • 为什么在尝试更新 OData 服务时 HttpWebRequest.GetResponse() 会挂起?

    我正在用 C 编写一个 OData 消费者 我可以成功删除一个条目 但由于某种原因 当我尝试更新时 它只是挂起 冻结在 GetResponse 上 它甚至忽略了我的超时 下面是我的测试代码 有什么明智的建议吗 XDocument doc X
  • 在 C 中取消引用字符串文字有什么影响?

    include
  • 在移动设备上拖放 HTML

    当您使用JavaScript向网页添加拖放功能 例如jQuery UI可拖放 时 如何在通过移动设备上的浏览器查看时使其发挥作用 在移动设备上 触摸屏的拖动操作会被拦截手机用于滚动页面等 欢迎所有解决方案 我最初的想法是 为移动设备提供一个
  • scriptcs - 无法读取包

    我关注了一个博客文章 http inaspiralarray blogspot com 2013 08 scriptcs in two minutes html只需两步即可运行 scriptcs 基本上 我是这样做的 powershell
  • 删除不在引号内的哈希注释

    我正在使用 python 来浏览文件并删除所有注释 评论被定义为散列及其右侧的任何内容只要哈希值不在双引号内 我目前有一个解决方案 但它似乎不是最佳的 filelines r re compile for line in f m r spl
  • 如何在 vscode 中将 .css 文件解析为 PostCSS?

    我在项目中使用PostCSS CSS文件的扩展名是 css所以当我打开一个时 它会指示一堆错误 由于 PostCSS 的语法 我已经尝试安装stylelint PostCSS syntax扩展等等 但没有任何效果 如果我将扩展名更改为 sc
  • 对话框中按钮的自定义放置 - jquery ui

    我想将添加到对话框的按钮移动到顶部或左侧 我正在使用 jquery ui 如何做到这一点 添加 ok 后 它会显示在最右端 可以将其放置在周围吗 function dialog message dialog modal true resiz
  • 使 Flexbox 上下颠倒换行

    今天 我正在查看我构建的 选项卡 HTML gizmo 我注意到由于我使用 inline block 来布局选项卡标题 当它们包装时 我会得到如下所示的输出 Apple Banana Cherry Date Elderberry Fig G
  • 使用 Gulp 将 browserify 模块设为外部

    我有一个图书馆lib js我想从中创建lib a js and lib b js并能够从脚本中使用它client js using var a require lib a js 当我只包含已编译的内容时它就可以工作lib js之前的图书馆c