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é.
- 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 -->
- 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());
});