var gulp = require('gulp')
var fs = require("fs")
var babelify = require('babelify')
var browserify = require('browserify')
var rename = require('gulp-rename')
var uglifyjs = require('gulp-uglifyjs') var vendors = ['react','react-dom','jquery'];//定义不打包到js文件中的模块,或者vender公共模块 gulp.task('es2015', () => {
browserify({
entries: ['./src/main.js'],
extensions: ['.js', '.jsx'],
debug: true
})
.external(vendors) //这个功能就是排除打包某些模块的
.transform(["babelify", {
babelrc: false,
presets: ['es2015', 'es2016', 'es2017', 'stage-0', 'react'],
plugins: ['transform-decorators-legacy']
}])
.bundle()
.pipe(fs.createWriteStream("bundle.js"));
})
gulp.task('vender', () => {
var bf = browserify({
debug: true
});
vendors.forEach(lib => {
bf.require(lib); //这里require公共模块,下面将额外打包vender的模块
});
bf.transform(["babelify", {
babelrc: false,
presets: ['es2015', 'es2016', 'es2017', 'stage-0', 'react'],
plugins: ['transform-decorators-legacy']
}])
.bundle()
.pipe(fs.createWriteStream("vender.js"));
})
gulp.task('uglifyjs', () => {
gulp.src('./bundle.js')
.pipe(uglifyjs())
.pipe(rename('bundle.min.js'))
.pipe(gulp.dest('./dist'))
})
gulp.task('default', () => {
gulp.run('vender');
gulp.watch('./src/**/*.js', () => {
gulp.run('es2015')
})
})

  browserify 不打包某些文件或者把公共文件提取出来

  这里重点的方法就是external,至于写法就按上面那样。

另外,你要让没打包那些模块的程序能够正常运行,就需要额外打包一个公共模块的js文件。或者你在程序中不要import模块,直接接口用着,这样你额外再链接进来那个插件也可以使用。

比如:

$(()=>{
console.log('start===')
})

  $ 是jquery接口,和jquery接口一模一样,这样你依然可以在有链接入jquery插件的文档里正常运行程序。

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<div id="app"></div>
</body>
<!-- <script type="text/javascript" src='./vender.js'></script>
<script type="text/javascript">
var $=require('jquery');
$(function(){
console.log('jjjjj')
})
</script> -->
<script type="text/javascript" src='./dist/jquery.min.js'></script>//jquery插件,确保$接口可以正常使用
<script type="text/javascript" src='./bundle.js'></script> //bundle.js 里面没有import jquery ,这样还是依然可以使用jquery的接口,和正常运行
</html>

  

browserify 不打包某些文件或者把公共文件提取出来教程的更多相关文章

  1. 公共文件模块include

    首先新建一个include 把所有引入的文件放入公共文件里 function getBaseURL() { var pathName = window.document.location.pathna ...

  2. gulp批量打包文件并提取公共文件

    gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器. browseriyf是模块化打包工具. 一般情况下,Browserify 会把所有的模块打包成单个文件.单个文件在大多数情况下是 ...

  3. webpack 打包出多个HTML文件,多个js文件,图片文件放置到指定文件夹中

    一.webpack.config.js简单代码 const HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { ...

  4. php读取excel,以及php打包文件夹为zip文件

    1.把文件下载到本地,放在在Apache环境下2.d.xlsx是某游戏的服务器名和玩家列表,本程序只适合此种xlsx文件结构,其他结构请修改index.php源码3.访问zip.php的功能是把生成的 ...

  5. 【转】打包AAC码流到FLV文件

    AAC编码后数据打包到FLV很简单.1. FLV音频Tag格式                              字节位置    意义0x08,                         ...

  6. m文件转换为C/C++文件的编译、绘图、参数、打包问题总结

    在工程计算相关项目中,常常利用Matlab来完成计算.算法.绘图等功能.使用Matlab来完成这些功能非常简单,Matlab提供的m编程语言功能强大,代码量少.为了在自己的C/C++项目中加入这些功能 ...

  7. thinkphp 的两种建构模式 第一种一个单入口里面定义两个模块,前台和后台,函数控制模块必须function.php前台加载前台模块的汉书配置文件,后台加载后台模块的汉书配置文件,公共文件共用。第二种架构模式两个单入口文件,分别生成两个应用定义define。。。函数可以定义配置文件。。。。

    thinkphp 的两种建构模式  第一种一个单入口里面定义两个模块,前台和后台,函数控制模块必须function.php前台加载前台模块的汉书配置文件,后台加载后台模块的汉书配置文件,公共文件共用. ...

  8. maven项目打包的时候,*Mapper.xml 文件会打不不进去解决办法

    打包的时候,不同版本的 Eclipse 还有IDEA 会有打包打不进去Mapper.xml 文件,这个时候要加如下代码, 在<build> 标签内加入即可 <resources> ...

  9. [InstFiles]在Inno中打包隐藏和系统文件的头文件

    本文来自:http://www.kngstr.com 简介: 一直以来,Inno的作者都没有提供打包隐藏文件和系统文件的功能. 但是,如果我们做批量打包,批量封装的时候,总会需要这样的功能,因为我们不 ...

随机推荐

  1. python datetime学习

    Python中处理时间的模块datetime, 这个模块里包含的类也叫datetime,所以要使用需要先import from datetime import datetime 获取当前日期和时间 d ...

  2. 谈谈 SOA

    为什么要 讨论 SOA 呢 ? 请参考我写的另一篇文章 <论 微服务 和 Entity Framework 对 数据 的 割裂>    https://www.cnblogs.com/KS ...

  3. junit 测试quartz

    Junit本身是不支持普通的多线程测试的,这是因为Junit的底层实现上,是用System.exit退出用例执行的.JVM都终止了,在测试线程启动的其他线程自然也无法执行,JunitCore代码如下: ...

  4. elasticsearch 镜像使用

    elasticsearch 镜像使用 下载镜像: docker pull elasticsearch:6.5.4 创建容器: docker run -it -p 9200:9200 -p 9300:9 ...

  5. Firedac 数据连接池的应用

    procedure TForm2.Button1Click(Sender: TObject); begin if not FDConnection1.Connected then FDConnecti ...

  6. Linux 命令自动补齐快捷键

    Linux 命令自动补齐快捷键 : TAB

  7. 关于Quad PLL /CPLL参考时钟的选择

    关于Quad PLL /CPLL参考时钟的选择 1.参考时钟 2.channel PLL具体分析 CPLL端口描述 一张图说清了时钟为怎么被分成了north or south

  8. oracle rac的启动与停止

    引言:这写篇文章的出处是因为我的一名学生最近在公司搭建RAC集群,但对其启动与关闭的顺序和原理不是特别清晰,我在教学工作中也发现了很多学员对RAC知识了解甚少,因此我在这里就把RAC里面涉及到的最常用 ...

  9. msp430学习笔记-DAC12

    MSP430F169 的DAC12 模块有2 个DAC 通道,并且可以用DAC12GRP控制位将多个DAC12通道组合起来,实现同步更新,硬件还能确保同步更新独立于任何中断或者NMI事件. DAC12 ...

  10. Azure REST API (4) 在Python环境下,使用Azure REST API

    <Windows Azure Platform 系列文章目录> 之前遇到的项目中,客户需要在Python环境下,监控Azure VM的CPU利用率,在这里简单记录一下. 笔者的环境是Win ...