javascriptnode.jsgulpvinyl

Gulp Task completes with no error but no file is saved to destination


i am stuck in a kind of a trivial issue and can not get a hang of it.

here is the scenario:

I am using Gulp Task to convert my html templates to javascript using gulp-html2js My environment is Node v6.9.1, gulp 3.9.1, Windows 7

here is the gulpfile.js

var gulp = require('gulp');
var concat = require('gulp-concat');
var html2js = require('gulp-html2js');
var sourceDir = "D:\Programs_Insalled\nodejs\nodeapps\myApp"

gulp.task('templates', function() {
  return gulp.src( 'D:\Programs_Insalled\nodejs\nodeapps\myApp\templates\*.html').
   pipe(html2js({outputModuleName: 'templates'})).
   pipe(concat('templates.js')).
   pipe(gulp.dest('D:\Programs_Insalled\nodejs\nodeapps\myApp\bin'));
});

when i run the task, it completes, in a few m-sec but templates.js is not generated in bin directory

D:\Programs_Insalled\nodejs\nodeapps\myApp>gulp templates
[15:28:45] Using gulpfile D:\Programs_Insalled\nodejs\nodeapps\myApp\gulpfile.js
[15:28:45] Starting 'templates'...
[15:28:45] Finished 'templates' after 19 ms

I have tried below suggestions in similar items listed on GitHub and stackoverflow but have not been successful,

https://github.com/yeoman/generator-webapp/issues/182
https://github.com/yeoman/generator-webapp/issues/225

Can someone help out to find my mistake.

Thanks.

EDIT output of provided examples:

D:\Programs_Insalled\nodejs\nodeapps\myApp>gulp models
[17:13:10] Using gulpfile  D:\Programs_Insalled\nodejs\nodeapps\myApp\gulpfile.js
[17:13:10] Starting 'models'...
[17:13:10] Finished 'models' after 21 ms

D:\Programs_Insalled\nodejs\nodeapps\myApp>gulp templates
[17:13:13] Using gulpfile D:\Programs_Insalled\nodejs\nodeapps\myApp\gulpfile.js
[17:13:13] Starting 'templates'...
D:\Programs_Insalled\nodejs\nodeapps\myApp\node_modules\vinyl\index.js:120
    if (!this.path) throw new Error('No path specified! Can not get relative.');
                    ^

Error: No path specified! Can not get relative.
    at File.get (D:\Programs_Insalled\nodejs\nodeapps\myApp\node_modules\vinyl\index.js:120:27)
    at DestroyableTransform.bufferContents [as _transform] (D:\Programs_Insalled\nodejs\nodeapps\myA
pp\node_modules\gulp-concat\index.js:70:20)
    at DestroyableTransform.Transform._read (D:\Programs_Insalled\nodejs\nodeapps\myApp\node_modules
\gulp-concat\node_modules\readable-stream\lib\_stream_transform.js:184:10)
    at DestroyableTransform.Transform._write (D:\Programs_Insalled\nodejs\nodeapps\myApp\node_module
s\gulp-concat\node_modules\readable-stream\lib\_stream_transform.js:172:12)
    at doWrite (D:\Programs_Insalled\nodejs\nodeapps\myApp\node_modules\gulp-concat\node_modules\rea
dable-stream\lib\_stream_writable.js:237:10)
    at writeOrBuffer (D:\Programs_Insalled\nodejs\nodeapps\myApp\node_modules\gulp-concat\node_modul
es\readable-stream\lib\_stream_writable.js:227:5)
    at DestroyableTransform.Writable.write (D:\Programs_Insalled\nodejs\nodeapps\myApp\node_modules\
gulp-concat\node_modules\readable-stream\lib\_stream_writable.js:194:11)
    at DestroyableTransform.ondata (D:\Programs_Insalled\nodejs\nodeapps\myApp\node_modules\through2
\node_modules\readable-stream\lib\_stream_readable.js:531:20)
    at emitOne (events.js:96:13)
    at DestroyableTransform.emit (events.js:188:7)

D:\Programs_Insalled\nodejs\nodeapps\myApp>

Solution

  • So, i have finally worked out the solution, Alhamdolilah

    Issue was not with gulp task, or html2js, real issue was with gulp-concat

    and i have realized that it is not needed as output is already concatenated by html2js

    here is improved code:

    gulp.task('templates', function () {
        gulp.src('templates/*.html')
            .pipe(html2js('templates.js', {
                outputModuleName: 'templates',
                name: 'templates'
            }))
            .pipe(gulp.dest('bin/'));
    });