Closed vojtatranta closed 9 years ago
What are the exact error messages that you get? (Can you link to a repo or describe in more detail what your file layout looks like?)
My gulpfile
gulp = require 'gulp'
browserify = require 'gulp-browserify'
reactify = require 'coffee-reactify'
coffeeify = require 'coffeeify'
watch = require 'gulp-watch'
cjsx = require 'gulp-cjsx'
globify = require 'require-globify'
jsDir = './blog/frontend/js/**/*'
gulp.task 'scripts', ->
gulp.src(jsDir)
.pipe(cjsx())
.pipe(browserify(
transform: [
['require-globify','coffee-reactify', 'coffeeify'],
],
extensions: ['.cjsx', '.coffee'],
))
.pipe(gulp.dest('./blog/static/js'))
gulp.task 'default', (cb) ->
gulp.start 'scripts'
gulp.watch jsDir, ->
gulp.star 'scripts'
My main.coffee (entry frontend file)
React = require 'react'
require '../../core/**/templates/**/*.cjsx', glob: true
React.render React.createElement(require(TEMPLATE), STATE), document.body
I get error: Error: Parsing file /Users/vojtatranta/django/blog/blog/core/templates/base.cjsx: Line 1: Unexpected string
Seems like Browserify tries to require .cjsx file but cannot read it because coffee-reactify transformation has not load yet.
Have you tried rearranging the transforms so require-globify comes last?
Yup, now results. However, I solved it using vanilla Browserify:
gulp = require 'gulp'
browserify = require 'browserify'
reactify = require 'coffee-reactify'
watch = require 'gulp-watch'
cjsx = require 'gulp-cjsx'
globify = require 'require-globify'
source = require 'vinyl-source-stream'
buffer = require 'vinyl-buffer'
jsSource = './blog/frontend/js/main.js'
filesToWatch = './blog/**/*.(js|cjsx|coffee)'
gulp.task 'scripts', ->
b = browserify(
entries: [jsSource],
transform: [globify, reactify]
)
return b.bundle()
.pipe(source('main.js'))
.pipe(buffer())
.pipe(gulp.dest('./blog/static/js/'))
gulp.task 'default', (cb) ->
gulp.start 'scripts'
gulp.watch ['./blog/frontend/js/**/*.coffee', './blog/**/templates/**/*.cjsx'], ->
gulp.start 'scripts'
I think you may close this issue, thank you :)
Is it possibly to globify coffee script? require('./path//to//*.coffee')? If I try this I get unexpected string errors. Using coffeeify does not help too. Any idea?