为 react 模板配置 browserify

Posted

技术标签:

【中文标题】为 react 模板配置 browserify【英文标题】:Config browserify for react templates 【发布时间】:2017-01-03 08:18:04 【问题描述】:

我在使用 Browserify 和 Babel 构建 bundle.js 文件时遇到了问题。

Header.js:

import HeaderRT from './Header.rt';

Header.rt:

<div>Header></div>

错误:

Browserify Error
.../Header.rt:1
<div>Header</div>
^
ParseError: Unexpected token

据我了解,所有“.rt”文件都需要由 react-templates 处理,而不是 Browserify。但是我该如何配置呢?

这是我的 gulp 文件:

var gulp        = require('gulp');
var fs          = require("fs");
var browserify  = require("browserify");
var babelify    = require("babelify");
var source      = require('vinyl-source-stream');
var gutil       = require('gulp-util');
var inject      = require('gulp-inject');
var rename      = require('gulp-rename');
var clean       = require('gulp-clean');
var debug       = require('gulp-debug');
var watchify    = require('watchify');
var assign      = require('lodash.assign');
var sourcemaps  = require('gulp-sourcemaps');
var rt          = require('gulp-react-templates');

var customOpts = 
    entries: ['./main.js'],
    debug: true,
    ignoreTransform: ['rt']
;
var opts = assign(, watchify.args, customOpts);
var b = watchify(browserify(opts));
b.transform(babelify);

gulp.task('js', bundle);
b.on('update', bundle);
b.on('log', gutil.log);

gulp.task('default', ['js']);

function bundle() 
    gulp.src('./dist/*.js', read: false)
        .pipe(clean());

    var bundleFile = b.bundle()
        .on('error', gutil.log.bind(gutil, 'Browserify Error'))
        .pipe(source('./bundle.js'))
        .pipe(rename('bundle_' + parseInt(Math.random() * 100000) + '.js'))
        .pipe(sourcemaps.write('./'))
        .pipe(gulp.dest('./dist'));

    gulp.src('./index.html')
        .pipe(inject(bundleFile))
        .pipe(gulp.dest('./'));

    return bundleFile;

提前致谢!

【问题讨论】:

【参考方案1】:

我知道如何使用 react-templatify 做到这一点。对于有同样问题的人,我们只需要将这一行添加到 browserify 的配置中:

transform: ['react-templatify']

所以它的配置变成:

var customOpts = 
    entries: ['./main.js'],
    debug: true,
    transform: ['react-templatify']
;
var opts = assign(, watchify.args, customOpts);

【讨论】:

以上是关于为 react 模板配置 browserify的主要内容,如果未能解决你的问题,请参考以下文章

将带有 jquery 的 html 模板转换为 React js

vs code中快速创建react项目模板

vs code中快速创建react项目模板

React-Native:错误:无法为 iOS 项目安装 CocoaPods 依赖项,这是此模板所需的

如何在 React js 中将 HTML 模板呈现为来自 json 的响应

ReactJS React+Redux+Router+antDesign通用高效率开发模板,夜间模式为例