Solo me preguntaba cómo haría para ofuscar los datos generados por la implementación de Firebase. Cuando ejecuto el comando
npm firebase deploy
parece reconstruir mi código y luego implementarlo en mi aplicación web. Esto significa que cada vez que realizo cambios u ofusco el código manualmente en los archivos de compilación, se sobrescribe cuando decido implementarlo.
captura de pantalla del archivo
Probé muchas opciones, logré ocultar src en la consola, pero la estática aún expone los datos JSON que estoy usando. Estoy buscando que esto se oculte/ofusque al usuario.
Gracias
De manera predeterminada, Firebase Tools implementará la carpeta public
en el directorio de su proyecto tal cual. No tiene un paso de construcción.
// firebase.json { "hosting": { "public": "public", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ] }, ... }
Suponiendo que su estructura de archivos se vea así:
$PROJECT_DIR/ |-- functions/ |-- public/ | |-- dist/ | | |-- css/ | | | `-- ... | | |-- js/ | | | `-- ... | | |-- media/ | | | `-- ... | | |-- 404.html | | `-- index.html | `-- src/ | |-- components/ | |-- assets/ | `-- index.ts |-- .firebaserc |-- database.rules.json |-- firebase.json |-- firestore.indexes.json `-- firestore.rules
Luego puede cambiar el directorio implementado al propio directorio de compilación:
{ "hosting": { "public": "public/dist", ... }, ... }
Sin embargo, si su código está dentro de su directorio functions/
(como podría ser si usa SSR), las funciones tienen un paso de compilación previo a la implementación de forma predeterminada (cuando usa TypeScript como su lenguaje de compilación o habilitó el linting durante la configuración), como se define en firebase.json
. Como firebase deploy
despliega funciones antes de hospedar, esto significaría que esa compilación sobrescribe los archivos primero. Puede eliminar todos los enlaces previos a la implementación para no usar el paso de compilación durante la implementación (no recomendado), agregar su paso de ofuscación al script de compilación de su proyecto (recomendado) o agregar el paso de ofuscación como su propio elemento en los enlaces previos a la implementación (menos recomendado).
// firebase.json { "functions": { "predeploy": [ "npm --prefix \"$RESOURCE_DIR\" run lint", // runs "npm run lint" in your project's functions directory "npm --prefix \"$RESOURCE_DIR\" run build" // runs "npm run build" in your project's functions directory ] }, ... }
// functions/package.json { "scripts": { "lint": "eslint --ext .js,.ts .", "build": "npm run build:src && npm run build:obfuscate", "build:src": "tsc", "build:obfuscate": "...", ... }, ... }
Si sus archivos de alojamiento no están en el directorio de funciones, también debe verificar la presencia de ganchos de implementación previa allí, ya que se pueden agregar manualmente de la misma manera:
// firebase.json { "hosting": { "predeploy": [ "npm --prefix \"$RESOURCE_DIR\..\" run lint", // runs "npm run lint" in your project's public directory "npm --prefix \"$RESOURCE_DIR\..\" run build" // runs "npm run build" in your project's public directory ], "public": "public/dist", ... }, ... }