gruntjs - serve - Usando grunt-contrib-connect-URL de página abierta con ruta de contexto agregada
livereload grunt (4)
Sí, puedes hacerlo sin muchos problemas, solo configura la opción open
:
connect: {
options: {
port: 9000,
livereload: 35729,
hostname: ''localhost''
},
livereload: {
options: {
open: {
target: ''http://localhost:9000/myappcontext/secured''
},
base: [
''app''
]
}
}
}
Puede consultar el archivo README para obtener más información sobre las opciones disponibles.
He configurado el grunt connect así:
connect: {
options: {
port: 9000,
livereload: 35729,
hostname: ''localhost''
},
livereload: {
options: {
open: true,
base: [
''app''
]
}
}
}
Eso funciona genial: carga mi página index.html como:
http://localhost:9000
Sin embargo, para mantener esto coherente con la forma en que se cargará en producción, me gustaría cargarlo con una ruta de contexto adicional añadida, como:
http://localhost:9000/myappcontext/secured
¿Se puede hacer esto simplemente con grunt-contrib-connect? ¿O necesito agregar algún otro proxy / middleware?
¿Alguien tiene un ejemplo simple de este tipo de configuración?
Tengo un método estúpido, ¡pero es un método!
copy: {
"mount-server": {
files: [{
expand: true,
dot: true,
cwd: ''<%= yeoman.app %>'',
dest: ''./.mount-server/myappcontext/secured/'', // your expected path here
src: [
''**/**''
]
}]
}
}
open: {
server: {
path: ''http://localhost:9000/myappcontext/secured/index.html''
}
}
connect: {
options: {
port: 80,
// change this to ''0.0.0.0'' to access the server from outside
hostname: null
},
livereload: {
options: {
middleware: function (connect, options) {
return [
lrSnippet,
mountFolder(connect, ''.tmp''),
mountFolder(connect, "./.mount-server/")
];
}
}
}
}
grunt.registerTask(''prepareServer'', [
"clean:mount-server",
"copy:mount-server"
]);
grunt.registerTask(''server'', function (target) {
grunt.task.run([
''concurrent:server'',
''prepareServer'',
''connect:livereload'',
''open:server'',
''watch''
]);
});
Puede usar Rewrite middleware rules para cargar desde una raíz de contexto diferente https://github.com/viart/http-rewrite-middleware
Esto funcionaría en su escenario:
var rewriteModule = require(''http-rewrite-middleware'');
middlewares.push(rewriteModule.getMiddleware([
//Load App under context-root of ''myappcontext/secured''
{from: ''^/myappcontext/secured(.*)$'', to: ''/$1''},
//Redirect slash to myappcontext/secured as convenience
{from: ''^/$'', to: ''/myappcontext/secured'', redirect: ''permanent''},
//Send a 404 for anything else
{from: ''^/.+$'', to: ''/404''}
]));
Dado que se trata de una publicación bastante anticuada, pensé en compartir lo que tenía que hacer, ya que algunas de las bibliotecas están desactualizadas incluso con las bibliotecas a las que se hace referencia. También esto muestra todo el proceso, en lugar de fragmentar los comentarios.
El ejemplo en la biblioteca https://github.com/viart/grunt-connect-rewrite está usando una versión muy antigua de grunt-contrib-connect
Desde la versión 0.11.x, el nuevo grunt-contrib-connect no es compatible con connect.static y connect.directory. Necesita usar otra biblioteca serve-static
var rewriteRulesSnippet = require(''grunt-connect-rewrite/lib/utils'').rewriteRequest,
serveStatic = require(''serve-static'');
connect: {
options: {
port: 9000,
hostname: ''localhost'',
livereload: true //default port is 35729
},
rules: [
{ from: ''^/yourfolder/(.*)$'', to: ''/$1'' }
],
server: {
options: {
base: ''./app'', //where the files are served from
open: {
target: ''http://localhost:9000/yourfolder''
},
middleware: function(connect, options) {
return [
rewriteRulesSnippet, // RewriteRules support
serveStatic(options.base[0]) // new library used here
];
}
}
}
}