Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

205
Vistas
¿Es posible crear una aplicación Electorn que compile solo en el código de la plataforma?

Aclararé mi pregunta para un caso de uso muy específico.

Digamos que he diseñado mi código de la siguiente manera:

ingrese la descripción de la imagen aquí

Y este es el contenido:

src/inner/inner.darwin.ts:

 export default function logger() { console.log('Darwin Logger'); }

src/inner/inner.windows.ts:

 export default function logger() { console.log('Windows Logger'); }

src/interior/interior.ts:

TENGA EN CUENTA el valor predeterminado de exportación: es obligatorio

 import LOGGER from '???????????'; export default class A { public static logger() { LOGGER(); } }

Básicamente, cuando compilo el código de Windows, quiero importar el código inner.windows.ts . Cuando se usa código Mac: código inner.darwin.ts .

Sé que puedo controlar los archivos excluidos en tsconfig.json . Entonces, cuando vaya a crear una aplicación de Windows, codificaré:

 "exclude": ["**/*.darwin.ts"]

Y cuando voy a crear Mac uno:

 "exclude": ["**/*.windows.ts"]

Sin embargo, no ayudó a resolver el problema de la importación.

Sé que puedo ejecutar el código dependiendo de la plataforma subyacente usando process.platform , pero no hace el trabajo. Quiero que la aplicación de salida de Windows sea más pequeña e ignore cualquier código de Mac. Si usara este process.platform , el código de Mac seguiría existiendo en la aplicación de Windows subyacente.

¿Algún consejo?

¿Puede Webpack hacer algo para ayudar? Estoy abierto a cualquier cambio de código siempre que el código esté bien definido y dividido, y el resultado final es que solo tengo el código de Darwin y el código de Windows.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Así que la solución es bastante simple. Todo lo que tenía que hacer era usar un complemento de Webpack. El mejor complemento para adaptarse a esta tarea es NormalModuleReplacementPlugin que Webpack proporciona de forma inmediata.

La exclude en tsconfig.ts ya no es razonable dentro de esta solución.

Simplemente proporcione el siguiente complemento:

 new webpack.NormalModuleReplacementPlugin( /darwin/, function (resource) { resource.request = resource.request.replace( /darwin/, 'windows', ); } ),

Esto anulará cualquier importación a un archivo darwin en un archivo winodws .

Ahora, en desarrollo, existen ambos archivos, pero en compilación, solo existirá cualquiera de ellos.

inner.ts simplemente se convierte en:

 import LOGGER from './inner.darwin'; export default class A { public static logger() { LOGGER(); } }

Por supuesto, podría ser bastante engorroso ingresar a webpack.config.ts en cada compilación, por lo que definitivamente podríamos ejecutar un script adicional de webpack para decidir qué compilación subyacente usar, por ejemplo:

 const appTarget = env.APP_TARGET || 'darwin';

Y luego simplemente use esta variable dentro del complemento y ejecute su script de compilación npm proporcionando un argumento APP_TARGET .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda