Node.js - Ignorar un archivo al hacer el build

 
Vista:
sin imagen de perfil
Val: 5
Ha mantenido su posición en Node.js (en relación al último mes)
Gráfica de Node.js

Ignorar un archivo al hacer el build

Publicado por Jorge (6 intervenciones) el 08/05/2020 14:17:36
Buenos días, en un proyecto tengo un archivo que necesito utilizar como configurador (como si fuera un .ini) en tiempo de ejecución. Entonces al hacer el build, no se tienen que agregar.
Estoy poniendo esto en el Package.json:

1
2
3
4
5
6
"scripts": {
    "start": "set HTTPS=true && react-scripts start",
    "build": "rm -rf ./src/miarchivo.config.js && react-scripts",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  }

Pero mi dice que no reconoce el comando rm.
Me pueden orientar en como hacer que se ignore ese archivo?
Gracias y espero haberme hecho entender.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de aberon10
Val: 31
Ha mantenido su posición en Node.js (en relación al último mes)
Gráfica de Node.js

Ignorar un archivo al hacer el build

Publicado por aberon10 (10 intervenciones) el 08/05/2020 21:47:50
Hola, puedes utilizar el archivo .npmignore con lo siguiente:
1
./src/mi archivo.config.js
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 14
Ha mantenido su posición en Node.js (en relación al último mes)
Gráfica de Node.js

Ignorar un archivo al hacer el build

Publicado por kip (7 intervenciones) el 08/05/2020 22:07:24
Hola, este archivo contiene data sensible (aws keys, etc etc) ? Si es asi entonces deberias colocarlo directamente en .gitignore o el dotfile de tu vcs para no exponer esta info.

Ahora bien, no entiendo porque lo querrias eliminar previo a tu build, si no lo importaste en ningun archivo no se incluira en tu production build, si no lo usas entonces porque tenerlo ? lo mejor para que no lo tome el build script seria sacarlo de src/ y moverlo a /config o algo parecido, pero de nuevo, si no lo importas no formara parte de tu final production build, si lo haces y lo borras antes, entonces tendras un problema de dependencias.

No tengo claro para que necesitas eliminarlo o cual es el uso que le das.

Posiblemete el rm -rf no te funcione porque estas en windows, usa rimraf para tener un comando en tu mismo proyecto agnostico al os.

Por cierto, el .npmignore no te funcionara porque es tomado en cuenta para la publicación de paquetes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha mantenido su posición en Node.js (en relación al último mes)
Gráfica de Node.js

Ignorar un archivo al hacer el build

Publicado por Jorge (6 intervenciones) el 08/05/2020 23:40:51
Gracias por tu respuesta. Recién estoy empezando con un proyecto que no he hecho yo, me fue pasado porque el autor lo abandono y tengo que continuarlo con casi nada de experiencia. Lo que digo de excluirlo es porque ese archivo config.js lo tengo que poner en diferentes instalaciones con diferentes ip´s y otras variables mas sin tener que recompilar.
Hay uno de los modulos.js en SRC que hace un import de ese archivo para setear esas variables.
Es esta la forma correcta? necesito que funcione como un archivo.ini.
Gracias de antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 14
Ha mantenido su posición en Node.js (en relación al último mes)
Gráfica de Node.js

Ignorar un archivo al hacer el build

Publicado por kip (7 intervenciones) el 09/05/2020 03:26:05
Bueno para ello puedes usar process.env, webpack(que usa cra) tiene un plugin para ello, https://webpack.js.org/plugins/environment-plugin/, hacer un replace de aquellas variables cargadas en el environment, aunque creo que cra lo tiene por defecto https://create-react-app.dev/docs/adding-custom-environment-variables/ pero en este caso deberas colocar las env vars con el prefijo REACT_APP_

Es decir que en tu config.js puedes hacer algo como

1
2
3
//config.js
 
export const IP = process.env.REACT_APP_IP_CONFIG_SERVER

Esta recomendacion la doy en base a mi intuición despues de leer esto "Lo que digo de excluirlo es porque ese archivo config.js lo tengo que poner en diferentes instalaciones con diferentes ip´s y otras variables mas sin tener que recompilar", lo unico malo es que si necesitas "compilar" para tener ese valor en tu prod build, esto se hace con cada deployment que hagas en esas diferentes instalaciones.

Ahora bien, si lo de arriba no te sirve entonces tienes que cambiar algo en tu codigo para que a nivel de runtime lea ya sea un .json o ese .js desde cierto path, pero al ser una app estatica es imposible, me refiero a que haces el build para tener tus bundles...

Pero aun no termino de entender porque seteas estas variables, si lo haces entonces no es necesario recompilar no? me refiero a que el valor es dinamico seteado por otro modulo, por que habria la necesidad de excluirlo ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha mantenido su posición en Node.js (en relación al último mes)
Gráfica de Node.js

Ignorar un archivo al hacer el build

Publicado por Jorge (6 intervenciones) el 11/05/2020 14:43:24
" Pero aun no termino de entender porque seteas estas variables, si lo haces entonces no es necesario recompilar no? me refiero a que el valor es dinamico seteado por otro modulo, por que habria la necesidad de excluirlo ?"

Los valores que se setean en config.js son modificados a mano en cada instalación.
Este es el código que tiene config.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const WSConfig = {
  crossDomainCommunication: {
    enable: true,
    debug: true,
    WebOrigin: 'https://xx.xx.xx.xx:xxxx',
    clientOrigin: 'https://yy.yy.yy.yy:yyyy',
    WebWindow: {
      title: 'xxxxxxxxx',
      name: 'xxx-xxx',
      width: "20%",
      height: screen.height,
      top: 0,
      left: 0,
      timeoutOpen: 12000
    }
  }
}
 
export default WSConfig;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar