Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

208
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!