我正在尝试使用Grunt-browserify并重新解析来解析和捆绑用jsx编写的React组件。我想使用扩展标志,以便我不必指定我的模块的文件扩展名,但我无法让它工作。这是一些测试代码:
Gruntfile:
'use strict';
module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
browserify: {
dev: {
src: 'src/app.jsx',
dest: 'dest/app.js',
options: {
debug: true,
transform: ['reactify'],
extensions: ['.jsx']
}
}
}
});
grunt.loadNpmTasks('grunt-browserify');
grunt.registerTask('default', ['browserify:dev']);
};
主应用文件app.jsx
:
'use strict';
var React = require('react');
var Test = require('./components/Test'); // Here is the problem...
React.render(
<Test />,
document.getElementById('test')
);
然后Test.jsx
:
'use strict';
var React = require('react');
var Test = React.createClass({
render: function() {
return(
<div>
<p>Some markup</p>
</div>
);
}
});
module.exports = Test;
当我尝试通过运行grunt
来编译它时,我收到一个错误:
错误:无法从'/ Users / **** / Sites / grunt-test / src'中找到模块'./components/Test'
Grunt-browserify documentation表示它支持自v1.2.6以来的扩展标志,我已经在网络上看到过这个例子,但我似乎无法在这里工作。如果我从命令行运行browserify - 就像browserify -t reactify --extension=.jsx -o dest/app.js
那样 - 它可以工作。
有什么想法吗?
答案 0 :(得分:10)
您是否尝试过在browserifyOptions中移动属性,如下所示?
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
browserify: {
dev: {
src: 'src/app.jsx',
dest: 'dest/app.js',
options: {
browserifyOptions: {
debug: true,
transform: ['reactify'],
extensions: ['.jsx']
}
}
}
}
});