browserify babel gulp 没有编译import的文件
1.遇到坑的gulp配置:
- var gulp = require('gulp'),
- watch = require('gulp-watch'),
- babel = require('gulp-babel');
- var envify = require('gulp-envify');
- var browserify = require('gulp-browserify');
- var SourceMap = require('gulp-sourcemaps');
- var uglify = require('gulp-uglifyjs');
- var SourceMapSupport = require('gulp-sourcemaps-support');
- gulp.task('react', () => {
- var environment = {
- NODE_ENV: 'production'
- };
- gulp.src('./es/index.js')
- .pipe(SourceMap.init())
- .pipe(babel({
- babelrc: false,
- plugins: ['transform-es2015-modules-commonjs']
- }))
- .pipe(browserify({
- insertGlobals: true,
- debug: !gulp.env.production
- }))
- .pipe(envify(environment))
- .pipe(uglify())
- .pipe(SourceMap.write('.'))
- .pipe(gulp.dest('js'))
- });
- gulp.task('default', () => {
- return watch('./es/*.js', function() {
- gulp.run('react');
- });
- });
今天我遇到了这个问题,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.改进配置:
- var gulp = require('gulp'),
- watch = require('gulp-watch'),
- babel = require('gulp-babel');
- var envify = require('gulp-envify');
- var browserify = require('gulp-browserify');
- var SourceMap = require('gulp-sourcemaps');
- var uglify = require('gulp-uglifyjs');
- var SourceMapSupport = require('gulp-sourcemaps-support');
- gulp.task('react', () => {
- var environment = {
- NODE_ENV: 'production'
- };
- gulp.src('./es/index.js')
- .pipe(SourceMap.init())
- .pipe(babel({
- babelrc: false,
- presets: ['es2015', 'es2016', 'es2017', 'stage-0', 'react'],
- plugins: ['transform-decorators-legacy']
- })) //编译es6文件
- .pipe(browserify({
- insertGlobals: true,
- debug: !gulp.env.production
- })) //打包require文件到js包里面
- .pipe(babel({
- babelrc: false,
- presets: ['es2015', 'es2016', 'es2017', 'stage-0', 'react'],
- plugins: ['transform-decorators-legacy']
- })) //再编译一次require文件里的es6语法
- .pipe(envify(environment))
- .pipe(uglify())
- .pipe(SourceMap.write('.'))
- .pipe(gulp.dest('js'))
- });
- gulp.task('default', () => {
- return watch('./es/*.js', function() {
- gulp.run('react');
- });
- });
2.优化gulp配置:
- var gulp = require('gulp'),
- watch = require('gulp-watch'),
- babel = require('gulp-babel');
- var envify = require('gulp-envify');
- var browserify = require('gulp-browserify');
- var SourceMap = require('gulp-sourcemaps');
- var uglify = require('gulp-uglifyjs');
- var SourceMapSupport = require('gulp-sourcemaps-support');
- gulp.task('react', () => {
- var environment = {
- NODE_ENV: 'production'
- };
- gulp.src('./es/index.js')
- .pipe(SourceMap.init())
- .pipe(babel({
- babelrc: false,
- plugins: ['transform-es2015-modules-commonjs']
- })) //这里只需要把import export 编译成commonjs规范即可,这样browserify就可以识别了
- .pipe(browserify({
- insertGlobals: true,
- debug: !gulp.env.production
- }))
- .pipe(babel({
- babelrc: false,
- presets: ['es2015', 'es2016', 'es2017', 'stage-0', 'react'],
- plugins: ['transform-decorators-legacy']
- })) //最终这里再把js文件中所有的es6语法编译成es5语法
- .pipe(envify(environment))
- .pipe(uglify())
- .pipe(SourceMap.write('.'))
- .pipe(gulp.dest('js'))
- });
- gulp.task('default', () => {
- return watch('./es/*.js', function() {
- gulp.run('react');
- });
- });
browserify babel gulp 没有编译import的文件的更多相关文章
- 模块之字节编译的.pyc文件---from.import语句
字节编译的.pyc文件输入一个模块相对来说是一个比较费时的事情,所以Python做了一些技巧,以便使输入模块更加快一些.一种方法是创建 字节编译的文件 ,这些文件以.pyc作为扩展名.字节编译的文件与 ...
- gulp实时编译less,压缩合并requirejs模块文件
gulp的使用命令简单,就几个,gulp的简单使用教材可以参考一点的gulp使用教材(http://www.ydcss.com/archives/18). 下面就简单的介绍这些命令如何互相配合的完成前 ...
- 用gulp把less文件编译成css文件
第一次使用gulp构建工具,使用gulp将.less文件编译成.css文件并输出.根据视频做了笔记.提供新手和自己以后做参考. HTML文件 <!DOCTYPE html> <htm ...
- 何为babel / gulp
Babel主要用来将新版本的javascript(ES6,ES7)编译为ES5,目前它对于新标准的支持程度甚至高于Chrome浏览器.通过引入预设babel-preset-react,babel还能解 ...
- gulp 搭建个人工作流:文件注入、热启动、跨域
个人比价推崇前后端分离的开发方式,大家伙各司其职,只需通过 API 进行交流,不仅避免了沟通上的成本,更提升了开发效率.而在前端开发工作中,许多需求和问题是相似的,所以我们的开发模式往往是雷同的,是否 ...
- 编译PCL Tutorial文件
1.PCL Tutorial是使用SPHINX编译而成的. 2.安装Python2.7,从官方网站上下载(Portable Python测试未成功,待研究). 3.安装setuptools,安装成功会 ...
- Mac上把python源文件编译成so文件
把python源文件编译成so文件 前言 实际上属于一种代码混淆/加密的技术,大家知道python的源文件放在那里,大家是都可以看的,不像C语言编译出来可以拿编译后的东西去运行,所以就出现了这种需求. ...
- Golang 编译成 DLL 文件
golang 编译 dll 过程中需要用到 gcc,所以先安装 MinGW. windows 64 位系统应下载 MinGW 的 64 位版本: https://sourceforge.net/pro ...
- 第48章 MDK的编译过程及文件类型全解—零死角玩转STM32-F429系列
第48章 MDK的编译过程及文件类型全解 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.co ...
随机推荐
- docker save/load、export/import 区别
区别: save的对象是image,产生的文件需要用load来生成image: export的对象是container,产生的文件需要用import来生成image. save Save one or ...
- 关于adaboost分类器
我花了将近一周的时间,才算搞懂了adaboost的原理.这根骨头终究还是被我啃下来了. Adaboost是boosting系的解决方案,类似的是bagging系,bagging系是另外一个话题,还没有 ...
- sql update操作结果
Mysql 在MySQL中只有真正对记录进行修改了的情况下,row_count才会去记录影响的行数,否则如果记录存在但是没有实际修改则不会将该次更新记录到row_count中. update操作执行结 ...
- 集群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集群 ...
- MySQL 5.7 Invalid default value for 'CREATE_TIME'报错的解决方法
出处:http://blog.itpub.net/15498/viewspace-2136006/ 由于数据库的升级,今天在执行从MySQL 5.6导出来的SQL文件时报错: mysql> so ...
- Vivado HLS初识---阅读《vivado design suite tutorial-high-level synthesis》(6)
Vivado HLS初识---阅读<vivado design suite tutorial-high-level synthesis>(6) 1.创建工程与开启GUI 2.调试 查看关于 ...
- 使用MATLAB对数据进行位操作以及RGB图片显示
fd = fopen('video_test_pattern_avalon_generator_source_data.txt'); //打开像素源文件 A = fscanf(fd,'%d'); // ...
- 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. ...
- intellij idea 设置 Error 提示颜色修改
File--->Settings --->Editor --->ColorScheme--->General --->Errors and Warning--->E ...
- [蓝桥杯]ALGO-51.算法训练_Torry的困惑(基本型)
题目描述: 问题描述 Torry从小喜爱数学.一天,老师告诉他,像2...……这样的数叫做质数.Torry突然想到一个问题,前10...……个质数的乘积是多少呢?他把这个问题告诉老师.老师愣住了,一时 ...