gulp-strip-react-dom-comment
v1.0.3gulp-strip-react-dom-comment
Strips the /** @jsx React.DOM */
from pipes to support tools which can't
handle the comment.
When would this matter?
When using a tool that uses JavaDoc style extension comments, which panics on
seeing an extension comment it doesn't recognize. Examples include many
documentation extraction tools, such as YUIDoc
, which prompted this being
written.
Using YUIDoc as an example, you might find a rule in a gulpfile
like this:
gulp.task('yuidoc', [], function() {
gulp.src(['js/**/*.js', 'js/**/*.jsx'])
.pipe(template({pkg: pkg})) // Process source files first
.pipe(yuidoc.parser()) // Then parse
.pipe(yuidoc.reporter()) // Then report
.pipe(yuidoc.generator()) // aaaaaand generate
.pipe(gulp.dest('./doc/yuidoc-inked'));
});
Unfortunately, even though this rule is generally correct, this will kersplode and die,
because YUIDoc
expects comments in /** @foo\n * @bar\n */\n
form, and
the React JSX signal comment /** @jsx React.DOM */
incorrectly triggers that
as a YUIDoc rule, which in turn fails because it's missing YUIDoc requirements.
As a result, you'll see something that looks roughly like this:
$ gulp build
[00:19:28] Starting 'yuidoc'...
[00:19:28] Finished 'yuidoc' after 5.24 ms
\projects\site\js\app.jsx
line 1 Missing item type
\projects\site\js\components\Layout.jsx
line 1 Missing item type
\projects\site\js\components\Routes.jsx
line 1 Missing item type
3 problems
To fix this, you'd want the React JSX line automatically removed, which this plugin does. First require the plugin:
var stripDomComment = require('gulp-strip-react-dom-comment');
Then add a line to our previous gulp
rule, like so:
...
.pipe(template({pkg: pkg}))
.pipe(stripDomComment()) // Add me here to fix the problem!
.pipe(yuidoc.parser())
...
And thus, our point.
Polemic :neckbeard:
gulp-strip-react-dom-comment
is MIT licensed, because viral licenses and newspeak language modification are evil. Free is only free when it's free for everyone.
Metadata
- MIT
- Whatever
- John Haugeland
- released 9/10/2014