1.遇到坑的gulp配置:

  1. var gulp = require('gulp'),
  2. watch = require('gulp-watch'),
  3. babel = require('gulp-babel');
  4. var envify = require('gulp-envify');
  5. var browserify = require('gulp-browserify');
  6. var SourceMap = require('gulp-sourcemaps');
  7. var uglify = require('gulp-uglifyjs');
  8. var SourceMapSupport = require('gulp-sourcemaps-support');
  9. gulp.task('react', () => {
  10. var environment = {
  11. NODE_ENV: 'production'
  12. };
  13. gulp.src('./es/index.js')
  14. .pipe(SourceMap.init())
  15. .pipe(babel({
  16. babelrc: false,
  17. plugins: ['transform-es2015-modules-commonjs']
  18. }))
  19. .pipe(browserify({
  20. insertGlobals: true,
  21. debug: !gulp.env.production
  22. }))
  23. .pipe(envify(environment))
  24. .pipe(uglify())
  25. .pipe(SourceMap.write('.'))
  26. .pipe(gulp.dest('js'))
  27. });
  28.  
  29. gulp.task('default', () => {
  30. return watch('./es/*.js', function() {
  31. gulp.run('react');
  32. });
  33. });

  

  今天我遇到了这个问题,babel运行了先把es6文件编译,然后交给browserify 处理import的文件,可是报错了,因为先用babel编译es6文件后,import export 编译成了require module exports 这类,这样browserify就可以识别,然后browserify就会导入这些import的文件,然后打包进去到js文件里面。可是回到babel编译上,有一个问题是babel没有把import的文件也给编译了,因为babel不能导入import文件来处理,babel只是编译了es6代码,并不进行import的文件的打包处理,所以import的文件就没有被babel编译,然后交给browserify处理后,会出现import文件里的es6语法没有被编译。

这时候解决思路就是再babel编译一遍经过babel->browserify后的文件,也就是babel->browserify->babel,这样import的文件也会被编译成es6语法,不过babel->browserify过程 import自己写的文件需要用require方式导入,export也是需要exports方式导出,这样browserify才能识别,因为browserify不认识import文件里的import类语法。

2.改进配置:

  1. var gulp = require('gulp'),
  2. watch = require('gulp-watch'),
  3. babel = require('gulp-babel');
  4. var envify = require('gulp-envify');
  5. var browserify = require('gulp-browserify');
  6. var SourceMap = require('gulp-sourcemaps');
  7. var uglify = require('gulp-uglifyjs');
  8. var SourceMapSupport = require('gulp-sourcemaps-support');
  9. gulp.task('react', () => {
  10. var environment = {
  11. NODE_ENV: 'production'
  12. };
  13. gulp.src('./es/index.js')
  14. .pipe(SourceMap.init())
  15. .pipe(babel({
  16. babelrc: false,
  17. presets: ['es2015', 'es2016', 'es2017', 'stage-0', 'react'],
  18. plugins: ['transform-decorators-legacy']
  19. })) //编译es6文件
  20. .pipe(browserify({
  21. insertGlobals: true,
  22. debug: !gulp.env.production
  23. })) //打包require文件到js包里面
  24. .pipe(babel({
  25. babelrc: false,
  26. presets: ['es2015', 'es2016', 'es2017', 'stage-0', 'react'],
  27. plugins: ['transform-decorators-legacy']
  28. })) //再编译一次require文件里的es6语法
  29. .pipe(envify(environment))
  30. .pipe(uglify())
  31. .pipe(SourceMap.write('.'))
  32. .pipe(gulp.dest('js'))
  33. });
  34.  
  35. gulp.task('default', () => {
  36. return watch('./es/*.js', function() {
  37. gulp.run('react');
  38. });
  39. });

  2.优化gulp配置:

  1. var gulp = require('gulp'),
  2. watch = require('gulp-watch'),
  3. babel = require('gulp-babel');
  4. var envify = require('gulp-envify');
  5. var browserify = require('gulp-browserify');
  6. var SourceMap = require('gulp-sourcemaps');
  7. var uglify = require('gulp-uglifyjs');
  8. var SourceMapSupport = require('gulp-sourcemaps-support');
  9. gulp.task('react', () => {
  10. var environment = {
  11. NODE_ENV: 'production'
  12. };
  13. gulp.src('./es/index.js')
  14. .pipe(SourceMap.init())
  15. .pipe(babel({
  16. babelrc: false,
  17. plugins: ['transform-es2015-modules-commonjs']
  18. })) //这里只需要把import export 编译成commonjs规范即可,这样browserify就可以识别了
  19. .pipe(browserify({
  20. insertGlobals: true,
  21. debug: !gulp.env.production
  22. }))
  23. .pipe(babel({
  24. babelrc: false,
  25. presets: ['es2015', 'es2016', 'es2017', 'stage-0', 'react'],
  26. plugins: ['transform-decorators-legacy']
  27. })) //最终这里再把js文件中所有的es6语法编译成es5语法
  28. .pipe(envify(environment))
  29. .pipe(uglify())
  30. .pipe(SourceMap.write('.'))
  31. .pipe(gulp.dest('js'))
  32. });
  33.  
  34. gulp.task('default', () => {
  35. return watch('./es/*.js', function() {
  36. gulp.run('react');
  37. });
  38. });

  

browserify babel gulp 没有编译import的文件的更多相关文章

  1. 模块之字节编译的.pyc文件---from.import语句

    字节编译的.pyc文件输入一个模块相对来说是一个比较费时的事情,所以Python做了一些技巧,以便使输入模块更加快一些.一种方法是创建 字节编译的文件 ,这些文件以.pyc作为扩展名.字节编译的文件与 ...

  2. gulp实时编译less,压缩合并requirejs模块文件

    gulp的使用命令简单,就几个,gulp的简单使用教材可以参考一点的gulp使用教材(http://www.ydcss.com/archives/18). 下面就简单的介绍这些命令如何互相配合的完成前 ...

  3. 用gulp把less文件编译成css文件

    第一次使用gulp构建工具,使用gulp将.less文件编译成.css文件并输出.根据视频做了笔记.提供新手和自己以后做参考. HTML文件 <!DOCTYPE html> <htm ...

  4. 何为babel / gulp

    Babel主要用来将新版本的javascript(ES6,ES7)编译为ES5,目前它对于新标准的支持程度甚至高于Chrome浏览器.通过引入预设babel-preset-react,babel还能解 ...

  5. gulp 搭建个人工作流:文件注入、热启动、跨域

    个人比价推崇前后端分离的开发方式,大家伙各司其职,只需通过 API 进行交流,不仅避免了沟通上的成本,更提升了开发效率.而在前端开发工作中,许多需求和问题是相似的,所以我们的开发模式往往是雷同的,是否 ...

  6. 编译PCL Tutorial文件

    1.PCL Tutorial是使用SPHINX编译而成的. 2.安装Python2.7,从官方网站上下载(Portable Python测试未成功,待研究). 3.安装setuptools,安装成功会 ...

  7. Mac上把python源文件编译成so文件

    把python源文件编译成so文件 前言 实际上属于一种代码混淆/加密的技术,大家知道python的源文件放在那里,大家是都可以看的,不像C语言编译出来可以拿编译后的东西去运行,所以就出现了这种需求. ...

  8. Golang 编译成 DLL 文件

    golang 编译 dll 过程中需要用到 gcc,所以先安装 MinGW. windows 64 位系统应下载 MinGW 的 64 位版本: https://sourceforge.net/pro ...

  9. 第48章 MDK的编译过程及文件类型全解—零死角玩转STM32-F429系列

    第48章     MDK的编译过程及文件类型全解 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.co ...

随机推荐

  1. docker save/load、export/import 区别

    区别: save的对象是image,产生的文件需要用load来生成image: export的对象是container,产生的文件需要用import来生成image. save Save one or ...

  2. 关于adaboost分类器

    我花了将近一周的时间,才算搞懂了adaboost的原理.这根骨头终究还是被我啃下来了. Adaboost是boosting系的解决方案,类似的是bagging系,bagging系是另外一个话题,还没有 ...

  3. sql update操作结果

    Mysql 在MySQL中只有真正对记录进行修改了的情况下,row_count才会去记录影响的行数,否则如果记录存在但是没有实际修改则不会将该次更新记录到row_count中. update操作执行结 ...

  4. 集群RedHat6.5+JDK1.8+Hadoop2.7.3+Spark2.1.1+zookeeper3.4.6+kafka2.11+flume1.6环境搭建步骤

    1.RHEL 6.5系统安装配置图解教程(rhel-server-6.5) 2.在Linux下安装JDK图文解析 3.RedHat6.5上安装Hadoop集群 4.RedHat6.5安装Spark集群 ...

  5. MySQL 5.7 Invalid default value for 'CREATE_TIME'报错的解决方法

    出处:http://blog.itpub.net/15498/viewspace-2136006/ 由于数据库的升级,今天在执行从MySQL 5.6导出来的SQL文件时报错: mysql> so ...

  6. Vivado HLS初识---阅读《vivado design suite tutorial-high-level synthesis》(6)

    Vivado HLS初识---阅读<vivado design suite tutorial-high-level synthesis>(6) 1.创建工程与开启GUI 2.调试 查看关于 ...

  7. 使用MATLAB对数据进行位操作以及RGB图片显示

    fd = fopen('video_test_pattern_avalon_generator_source_data.txt'); //打开像素源文件 A = fscanf(fd,'%d'); // ...

  8. shell脚本报错:-bash: xxx: /bin/sh^M: bad interpreter: No such file or directory --引用自http://blog.csdn.net/xiaaiwu/article/details/49126777

    windows下编辑然后上传到linux系统里执行的..sh文件的格式为dos格式.而linux只能执行格式为unix格式的脚本. 我们可以通过vi编辑器来查看文件的format格式.步骤如下: 1. ...

  9. intellij idea 设置 Error 提示颜色修改

    File--->Settings --->Editor --->ColorScheme--->General --->Errors and Warning--->E ...

  10. [蓝桥杯]ALGO-51.算法训练_Torry的困惑(基本型)

    题目描述: 问题描述 Torry从小喜爱数学.一天,老师告诉他,像2...……这样的数叫做质数.Torry突然想到一个问题,前10...……个质数的乘积是多少呢?他把这个问题告诉老师.老师愣住了,一时 ...