task - update - Gulp cambia el directorio de trabajo para toda la tarea
update gulp (2)
Estoy trabajando en un archivo gulp que contiene tareas tanto para el frontend como para el back-end de mi sitio.
La tarea siguiente, por ejemplo, combinará mis scripts en app.js:
gulp.task ''frontend:scripts'', ->
gulp.src frontendPath(scriptsFolder, scriptsPattern)
.pipe sourcemaps.init()
.pipe coffee()
.pipe concat ''app.js''
.pipe sourcemaps.write(''.'')
.pipe gulp.dest frontendPath(tempFolder, scriptsFolder)
Como pueden ver, he creado un helper para proporcionar la ruta frontend correcta:
frontendPath = (dirs...) -> path.join.apply null, [''frontend''].concat(dirs)
Pero tengo que ser muy cuidadoso de que todos los pasos de mi tarea (especialmente .src y .dest) se ejecuten en la carpeta de la interfaz.
Sé que puede usar la opción { cwd: ''frontend'' }
para cambiar el directorio de trabajo de .src y .dest. Pero, ¿hay alguna manera de cambiar todo el directorio de trabajo de una tarea?
Con la forma en que gulp funciona, no tiene sentido "cambiar directorios" en los pasos entre src
y dest
.
gulp.src
lee los archivos del disco en la memoria. A .pipe
los .pipe
solo canalizan el contenido de esos archivos (y los metadatos relacionados con los archivos - vea objetos de archivos de vinilo para más información) a otras funciones de JavaScript, cada una de las cuales solo opera en las versiones en memoria del archivo. Eso significa que no conocen un directorio de trabajo, o les importa uno. Simplemente ven los datos entrantes sobre los archivos que ingresan a través de la tubería, hacen cosas con esos datos y los envían a través del siguiente .pipe
.
Así que creo que si eres realmente paranoico acerca de ser el director principal, lo mejor que puedes hacer es crear una buena relación calidad-precio.
Todo eso para decir, podrías mirar shelljs , que te permite cambiar directorios para el proceso de nodo actual. Creo que esto podría considerarse un antipatrón cuando se trata de resolver problemas, pero podría valer la pena intentarlo.
Use process.chdir
para cambiar el directorio de trabajo. Podemos hacer el cambio en cualquier lugar en un gulpfile, o en su situación, cambiarlo dentro de una tarea.
gulp.task(''frontend'', function(){
process.chdir(''...'');
gulp.src(...)
});
gulp.task(''backend'', function(){
process.chdir(''...'');
gulp.src(...)
});
Asegúrate de usar la última versión de Gulp; esta característica parece haberse agregado recientemente .