Tengo una aplicación simple (sin marcos) incluida con Parcel que quiero servir con express. He dividido la aplicación en tres subcarpetas diferentes "activos", "páginas" y "administrador", por lo que tengo una estructura similar a esta:
src | --assets --admin | -- admin-folder | --index.html --pages | --pages-folder | --index.htmlUna vez que la aplicación está construida y empaquetada con Parcel, quiero servir ambas carpetas con dos middlewares express.static diferentes como:
app.use(express.static(path.join(__dirname, "dist", "pages")); app.use("/admin", express.static(path.join(__dirname, "dist", "admin"));No estoy sirviendo toda la carpeta "dist" porque quería una URL más limpia sin "/pages" en el medio (por ejemplo, mywebsite.com/pages-folder y no mywebsite.com/pages/pages-folder) y porque puede entonces autorizar el acceso a la parte "/admin" del sitio web. Pero, al hacerlo, el paquete se rompe ya que todas las referencias (por ejemplo, a los activos) son incorrectas. ¿Cómo puedo solucionar este problema?
Aunque podría escribir un complemento de nombre personalizado para controlar la estructura de la carpeta dist (consulte, por ejemplo, mi respuesta a esta pregunta ), creo que el enfoque que está tomando de simplemente ejecutar el paquete varias veces con diferentes entradas es probablemente más simple.
Puede mejorar aún más las cosas especificando las múltiples entradas en su package.json como objetivos diferentes. De esa manera, puede construir todo a la vez con una sola llamada al comando CLI de parcel build .
Por ejemplo, si tuviera dos páginas .html de origen en src/pages/index.html y src/admin/index.hml , su archivo package.json podría verse así:
{ ... "targets": { "pages": { "source": "src/pages/index.html", "distDir": "dist/pages" }, "admin": { "source": "src/admin/index.html", "distDir": "dist/admin" } }, "scripts": { "build": "parcel build", }, "devDependencies": { "parcel": "^2.0.1", } } Lo que generaría una salida en /dist/pages/index.html y /dist/admin/index.html .