与browserfy、tsify和reatify一起咕咕叫
Gulp with browserify, tsify, and reactify?
我在TypeScript项目中使用gulp
、browserify
和tsify
。以下是我的gulpfile.js
:的摘录
var browserified = function (filename, debug) {
var b = browserify({
entries: filename,
debug: debug || false
});
b.plugin('tsify', {
noImplicitAny: true,
target: 'ES5'
});
b.transform('debowerify');
return b.bundle();
};
gulp.task('rebuild', ['lint', 'less'], function() {
var b = browserified ('./src/ts/main.ts', true);
return buildSourceMaps (b);
});
到目前为止,这是有效的。我想扩展它,这样我就可以require
React JSX文件。我第一次尝试(从我的一个TypeScript文件):
import Test = require ('../jsx/Test.jsx');
但是,这不起作用,因为tsify
在查找TypeScript文件../jsx/Test.jsx.ts
时会抱怨。所以我使用以下破解:
declare var require: any;
var Test = require ('../jsx/Test.jsx');
如果Test.jsx
是普通的JavaScript,那么这是可行的。如果Test.jsx
包含TypeScript,它将失败,这正是我所期望的。到目前为止,一切都很清楚。
现在我想将reactify
添加到我的gump任务中,这样我就可以在这些文件中使用JSX我被卡住了我尝试在gulpfile.js
的函数browserified
中添加以下内容:
b.plugin ('reactify', {
extension: 'jsx'
});
当Test.jsx
包含实际的JSX时,当我调用gulp rebuild
时,我仍然会得到以下错误:
Unexpected token <
显然,在JSX的第一个特定术语中,gullow令人窒息。我认为gulp试图通过TypeScript编译器传递JSX。这并不奇怪,因为我想不出如何告诉tsify
忽略我的.jsx文件。我是gulp
的新手,所以我有点不知所措。有什么想法吗?如何设置gulp
以允许TypeScript包含所有.ts文件,并允许JSX包含所有
.JSX文件?
这是我用于开发的gump任务。它使用watchify
以及browserify
和reactify
来构建代码,提供源映射,并重新绑定您在运行中所做的任何更改。path.ENTRY_POINT
变量是react应用程序的主要组件(通常为app.js
或main.js
)。
gulp.task('watch', function() {
gulp.watch(path.HTML, ['copy']);
var watcher = watchify(browserify({
entries: [path.ENTRY_POINT],
transform: [reactify],
debug: true,
cache: {}, packageCache: {}, fullPaths: true
}));
return watcher.on('update', function () {
watcher.bundle()
.pipe(source(path.OUT))
.pipe(gulp.dest(path.DEST_SRC))
console.log('Updated');
})
.bundle()
.pipe(source(path.OUT))
.pipe(gulp.dest(path.DEST_SRC));
});
我使用本教程设置了我的gulpfile.js
,它为每个吞咽任务提供了很好的解释:http://tylermcginnis.com/reactjs-tutorial-pt-2-building-react-applications-with-gulp-and-browserify/
- 转义符不能与innerHTML一起使用
- 高亮显示与数组字符串一起使用时文本插件中断
- setTimeout可以与闭包内的函数一起使用吗
- 将依赖外部库的UMD模块与browserfy捆绑在一起
- Highcharts colorsByPoint与系列中的线性渐变一起使用时不起作用
- 如何将js库与typescript一起使用
- 将webpack和babel与父项目目录中的文件一起使用
- 将 Drag&Drop 与 jsTree 和 DataTables 一起使用
- Javascript-如何让脚本与Ajax请求的数据一起运行
- 将两个ext.TabPanels滚动到一起
- 将jQuery UI Timepicker Addon与React一起使用
- 什么是curl以及如何将其与nodejs一起使用
- Javascript”;onmousemove”;事件无法与类一起使用
- 将require('..')与变量一起使用与在webpack中使用字符串相比
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- 三角库可以与firefox一起使用,但不能在Chrome中使用
- 为什么不't我的ruby代码与javascript文件一起插入
- 通过jQueryAjax一起发布Array和Form数据时出现问题
- 如何将eventListeners与Angularjs+Electron一起使用
- 与browserfy、tsify和reatify一起咕咕叫