Rollup-plugin-typescript2: Les liens symboliques ne fonctionnent pas

Créé le 30 oct. 2019  ·  12Commentaires  ·  Source: ezolenko/rollup-plugin-typescript2

typescript2 symlink issue

Lorsque le lien symbolique est créé vers la dépendance, le cumul donne l'erreur "Erreur : jeton inattendu (notez que vous avez besoin de plugins pour importer des fichiers qui ne sont pas JavaScript)"

Environnement

Versions

  • dactylographié :^3.6.4
  • cumul : "^1.26.0"
  • rollup-plugin-typescript2:^0.24.3

rollup.config.js

tsconfig.json

package.json

sortie du plugin avec verbosité 3

bug

Commentaire le plus utile

Le même problème, mais j'utilise lerna pour lier des packages, et le cumul se plaint d'un jeton inattendu pour les packages liés.

Tous les 12 commentaires

Liens symboliques du système de fichiers ? Quel OS, liens souples ou durs ? aucun changement, vous pouvez faire un repo avec reproduction?

Système d'exploitation Windows. Lien symbolique créé en utilisant l'option "npm link" vers le module externe. Si le module est installé, aucun problème. Mais pour tester localement, nous devons créer des liens symboliques et cela ne fonctionne pas uniquement avec le plugin typescript2. Avec le plugin typescript1, les liens symboliques fonctionnent mais les énumérations ne fonctionnent pas.

Le même problème, mais j'utilise lerna pour lier des packages, et le cumul se plaint d'un jeton inattendu pour les packages liés.

exactement le même problème sur windows avec lerna
Si je copie le dossier directement dans node_modules tout va bien, mais avec un lien symbolique ça ne marche pas

@PavaniVaka @TerenceZ @thealjey une chance pour un petit repo avec reproduction ?

@ezolenko Désolé, non. Mais j'ai un peu affiné la question. J'ai remarqué que si le module externe est copié dans le répertoire de l'application, cela fonctionne. Mais s'il ne s'agit que d'un lien symbolique, cela ne fonctionne pas. Par exemple : Avec yalc, nous pouvons facilement tester les dépendances externes. Parce qu'il crée le dossier yalc dans le répertoire de l'application et copie le module externe dans ce dossier, puis crée un lien symbolique du dossier yalc vers node_modules. J'espère que cela donne un indice.

@ezolenko J'ai en fait compris quel était le problème dans mon cas et cela n'a rien à voir avec ce plugin (il fonctionne parfaitement) ou des liens symboliques d'ailleurs.
Il s'agit plutôt d'un défaut du type de script lui-même, ou plutôt de sa configuration reposant sur des fichiers json.
Le problème était que le lien symbolique se résolvait en un fichier en dehors de CWD.
J'ai simplement déplacé ma commande de construction dans le fichier package.json de niveau supérieur et tout a commencé à fonctionner.

Je pense que nous sommes sur la même page ici.

194

@PavaniVaka @TerenceZ @thealjey une chance pour un petit repo avec reproduction ?

@ezolenko https://github.com/moki/mokui il y en a un.

J'ai résolu le problème n ° 194, au cas où quelqu'un rencontrerait le même problème, je propose ci-dessous une solution :

Lorsqu'on tente de construire chaque package séparé dans le monorepo, le cumul tente de résoudre @organization/package-name et de l'inclure dans la construction. Vous ne voulez pas cela, donc pour l'éviter lors de la construction de chaque package, j'analyse package.json , extrayant les clés du champ dependencies , puis les vérifier dans le callback peut fournir à l'intérieur du champ external configuration de cumul. Cela produira le résultat souhaité.

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;

même problème et rollup-plugin-typescript fonctionne

Le problème se produit également lorsqu'un fichier sous le src est un lien symbolique vers un fichier tapuscrit en dehors du projet.

par exemple la structure du fichier comme ci-dessous :

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/
...

quand je compile le projet sur myapp/myapp-app,
plainte de cumul avec l'erreur ci-dessous :

[ 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 {

avec le mot interface surligné en rouge

Ma solution de contournement consiste à utiliser le pré/post hook dans le script npm pour dissocier et lier les fichiers ...
Ainsi, mon IDE peut vérifier la dernière version pendant le développement, et il peut compiler lors de la construction.

Cette page vous a été utile?
0 / 5 - 0 notes