Rollup-plugin-typescript2: Los enlaces simbólicos no funcionan

Creado en 30 oct. 2019  ·  12Comentarios  ·  Fuente: ezolenko/rollup-plugin-typescript2

typescript2 symlink issue

Cuando se crea un enlace simbólico a la dependencia, el paquete acumulativo da el error "Error: token inesperado (tenga en cuenta que necesita complementos para importar archivos que no son JavaScript)"

Ambiente

Versiones

  • mecanografiado: ^ 3.6.4
  • resumen: "^ 1.26.0"
  • rollup-plugin-typescript2: ^ 0.24.3

rollup.config.js

tsconfig.json

package.json

salida del complemento con verbosidad 3

bug

Comentario más útil

El mismo problema, pero uso lerna para vincular paquetes, y el paquete acumulativo se queja de un token inesperado para los paquetes vinculados.

Todos 12 comentarios

¿Vínculos simbólicos del sistema de archivos? ¿Qué SO, enlaces blandos o duros? algún cambio se puede hacer un repositorio con reproducción?

Sistema operativo Windows. Enlace simbólico creado usando la opción "enlace npm" al módulo externo. Si el módulo está instalado, no hay problema. Pero para probar localmente, necesitamos crear enlaces simbólicos y eso no funciona solo con el complemento typescript2. Con el complemento typescript1, los enlaces simbólicos funcionan, pero las enumeraciones no funcionan.

El mismo problema, pero uso lerna para vincular paquetes, y el paquete acumulativo se queja de un token inesperado para los paquetes vinculados.

exactamente el mismo problema en Windows con lerna
Si copio la carpeta directamente en node_modules, todo está bien, pero con un enlace simbólico no funciona

@PavaniVaka @TerenceZ @thealjey ¿ Alguna posibilidad de un pequeño repositorio con reproducción?

@ezolenko Lo siento, no. Pero reduje un poco el tema. Noté que si el módulo externo se copia en el directorio de la aplicación, entonces funciona. Pero si es solo un enlace simbólico, entonces no funciona. Por ejemplo: con yalc podemos probar las dependencias externas fácilmente. Porque crea la carpeta yalc en el directorio de la aplicación y copia el módulo externo a esa carpeta y luego crea un enlace simbólico desde la carpeta yalc a node_modules. Espero que esto dé alguna pista.

@ezolenko De hecho, he descubierto cuál era el problema en mi caso y no tiene nada que ver con este complemento (funciona perfectamente) o enlaces simbólicos para el caso.
Es más una deficiencia del mecanografiado en sí, o más bien su configuración se basa en archivos json.
El problema era que el enlace simbólico se estaba resolviendo en un archivo fuera de CWD.
Simplemente moví mi comando de compilación al archivo package.json de nivel superior y todo comenzó a funcionar.

Creo que estamos en la misma página aquí.

194

@PavaniVaka @TerenceZ @thealjey ¿ Alguna posibilidad de un pequeño repositorio con reproducción?

@ezolenko https://github.com/moki/mokui hay uno.

Resolví el problema # 194, en caso de que alguien encuentre el mismo problema, a continuación proporciono una solución:

Cuando uno intenta construir cada paquete por separado dentro del monorepo, el resumen intenta resolver @organization/package-name e incluirlo en la compilación. No quiere eso, así que para evitarlo al construir cada paquete, estoy analizando package.json , extrayendo las claves del campo dependencies , luego para verificarlas dentro de callback one puede proporcionar el campo external dentro de la configuración acumulada. Esto producirá el resultado deseado.

import json from "rollup-plugin-json";

const pkg = process.env.LERNA_PACKAGE_NAME &&
          require(`${process.env.LERNA_PACKAGE_NAME}/package.json`);

const dependencies = ({ dependencies }) => Object.keys(dependencies || {});

const pkgdependencies = dependencies(pkg);

/* exported rollup configuration */
const config = {
    /* your config goes here... */
    /* id is the source name if list of dependencies includes
     * id source name, then mark it as external,
     */
    external: id => pkgdependencies.includes(id)
};

export default config;

mismo problema y rollup-plugin-typescript funciona

El problema también ocurre cuando un archivo bajo src es un enlace simbólico a un archivo mecanografiado fuera del proyecto.

por ejemplo, la estructura del archivo como se muestra a continuación:

core/core-client/src/api.ts
myapp/myapp-client/src/api.ts
myapp/myapp-app/src/domain/api.ts -> ../../../myapp-client/src/domain/api.ts
myapp/myapp-app/src/domain/core -> ../../../../core/core-client/src/domain/
...

cuando compilo el proyecto en myapp / myapp-app,
Queja acumulada con el siguiente error:

[ ERROR ]  Rollup: Parse Error: ../myapp-client/src/domain/api.ts:28:7
           Unexpected token (Note that you need plugins to import files that are not JavaScript)

     L28:  export interface IPrimus extends Primus {

con la palabra interface resaltada en rojo

Mi solución es usar pre / post hook en el script npm para desvincular y vincular los archivos ...
Entonces mi IDE puede buscar la última versión durante el desarrollo, y puede compilar cuando se construye.

¿Fue útil esta página
0 / 5 - 0 calificaciones