tutorial node yeoman gulp yeoman-generator

yeoman - node - Gulp-useref está lanzando un error: "la ruta debe ser una cadena"



yeoman php (1)

Respuesta corta: TypeError: path must be a string significa que hay un problema con las rutas de enlace / script. useref no puede encontrar el archivo o directorio al que lo está apuntando.

Respuesta larga:
Hubo dos problemas con los que me encontré.

  1. Las rutas de enlace / script deben ser relativas al gulpfile o tener un directorio alternativo para buscar.

<!-- build:css /styles/main.css --> <link href="app/styles/base.css"> <link href="app/styles/article.css"> <!-- endbuild -->

O

<!-- build:css(app) /styles/main.css --> <link href="/styles/base.css"> <link href="/styles/article.css"> <!-- endbuild -->

  1. El archivo gulpfile de yeoman utiliza múltiples directorios alt que requieren que los pongas dentro de llaves como esta:

<!-- build:css({.temp,app}) /styles/main.css --> Works

Pero si solo tienes un directorio alt y lo dejas en las llaves, lanzará un error.

<!-- build:css({app}) /styles/main.css --> TypeError: path must be a string

Esto se debe a que está leyendo la ruta como C:/path/to/project/{app}/styles/style.css . Esto me parece un comportamiento extraño. Creo que se repetirá a través de los directorios enumerados en las llaves, independientemente de la longitud.

Estoy usando un gulpfile.js generado por el generador de gulp- gulpfile.js de yeoman y lo modifiqué un poco para adaptarlo a mis necesidades. Por alguna razón, sigo encontrándose con un problema cuando trato de ejecutar el proceso de compilación (tarea predeterminada). El error se produce durante la tarea ''html'' y la mayoría de las referencias de error están en `node_modules / gulp-useref / index.js ''.

Aquí está el resultado del error:

stream.js:94 throw er; //Unhandled stream in pipe. TypeError: path must be a string at Object.fs.openSync (fs.js:427:18) at Object.fs.readFileSync (fs.js:284:15) at Transform.<anonymous> (C:/dev/project/node_modules/gulp-useref/index.js:54:44) at Array.forEach (native) at Transform.<anonymous> (C:/dev/project/node_modules/gulp-useref/index.js:50:31) at Array.forEach (native) at Transform.<anonymous> (C:/dev/project/node_modules/gulp-useref/index.js:41:36) at Array.forEach (native) at Transform._transform (C:/dev/project/node_modules/gulp-useref/index.js:38:23) at Transform._read (C:/dev/project/node_modules/gulp-useref/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js:184:10) at Transform._write (C:/dev/project/node_modules/gulp-useref/node_modules/through2/node_modules/readable-stream/lib/_stream_transform.js:172:12)

Aquí está la tarea HTML:

gulp.task(''html'', [''styles'', ''scripts''], function () { var jsFilter = $.filter(''**/*.js''); var cssFilter = $.filter(''**/*.css''); return gulp.src([''app/**/*.html'',''app/**/*.php'']) .pipe($.useref.assets()) .pipe(jsFilter) .pipe($.uglify()) .pipe(jsFilter.restore()) .pipe(cssFilter) .pipe($.csso()) .pipe(cssFilter.restore()) .pipe($.useref.restore()) .pipe($.useref()) .pipe(gulp.dest(''dist'')) .pipe($.size()); });