6.3.1
4.0.3
2.0.0
Ceci est spécifique aux projets dactylographiés avec des fichiers source important protractor/globals
. Plus précisément, lors de l'importation de protractor/globals
, car la version NPM inclut le fichier globals.ts
au lieu d'un fichier de définition correspondant ( globals.d.ts
), le compilateur dactylographié calculera la racine source commune du projet dactylographié. au chemin commun entre la dépendance de Protractor global.ts
(probablement node_modules/protractor
) et l'endroit où se trouvent les sources du projet consommateur (par exemple, src/test/**/*.ts
). Cela amène le compilateur à sortir les fichiers source avec tous les répertoires parents inclus.
Notez qu'il s'agit purement d'un problème avec l'endroit où le compilateur dactylographié génère les fichiers compilés ; la compilation se passe bien et le rapporteur est consommé (aussi génialement) que prévu.
Pour mieux illustrer le scénario que je décris mal, veuillez consulter cet exemple de projet .
Je suppose que résoudre ce problème ici serait une combinaison de deux choses :
globals.ts
est compilé ; etglobals.ts
du package de publication NPM, en ne laissant que le fichier javascript compilé et le fichier de définition correspondant.Si cela est valable, je serais heureux de soumettre une pull request pour gérer la première partie de la solution. Si le processus de publication vers NPM suit toujours le document de publication du projet, je serais également heureux de le mettre à jour avec une étape de suppression du fichier globals.ts
, bien que cela puisse être mieux falsifié par quelqu'un qui effectue réellement les versions.
Bien que j'y ai réfléchi et que je pense que le compilateur Typescript se comporte comme prévu, faites-moi savoir si vous n'êtes pas d'accord car je suis toujours en train de me mouiller les pieds avec Typescript.
(modifier : mise à jour du format pour refléter le modèle de bogue)
@tmeneau Merci pour ce numéro : j'ai beaucoup aimé l'exemple github... 👍 👍 👍
C'est donc un effet secondaire lors de l'utilisation de outDir. Par exemple, si outDir
est défini sur output
, en plus des fichiers transpilés, output/node_modules/protractor/globals.js
seront également transpilés. J'ai initialement inclus le fichier globals.ts car (à l'époque) après quelques expérimentations, vous ne pouviez pas importer un type de fichier sans avoir le fichier TypeScript.
Pour parcourir les propositions :
exampleTypescript
cela semble fonctionner. Je mets à jour le .npmignore pour ne pas publier ce fichier et mettre à niveau Protractor vers TypeScript 2. Voir : https://github.com/angular/protractor/pull/3485@cnishina content que l'exemple ait aidé ! Merci pour la réponse rapide, cela a l'air génial, sauf pour une chose qui pourrait me confondre : bien que votre modification supprime le fichier global.ts
du package NPM, il n'y aura pas globals.d.ts
déclaration correspondante protractor/globals
invisible pour le compilateur dactylographié pour la consommation de projets ?
Je suppose donc que la première partie de ma proposition n'était pas de supprimer le globals.js
compilé en faveur de la déclaration globals.d.ts
, mais d'avoir les deux pour que le package NPM contienne :
juste sans le fichier source globals.ts
.
Je pense que cela peut être réalisé en utilisant tsc avec le drapeau --declaration
lors de la compilation du fichier global.ts
. Par exemple, changer la tâche tsc:globals gulp comme ci-dessous devrait faire l'affaire, bien que j'aie remarqué qu'il y a aussi des tâches tsc
et tsc:w
dans le package.json qui pourraient également avoir besoin d'être mises à jour à condition que cela ne modifie pas négativement les compilations non globales :
gulp.task('tsc:globals', function(done) {
runSpawn(done, 'node', ['node_modules/typescript/bin/tsc', '--declaration', 'globals.ts'],
'ignore');
});
Faites-moi savoir si j'ai raté quelque chose, et merci encore pour la solution rapide ! Au fait, utiliser Protractor avec Typescript est vraiment génial !
Oui... 👍 globals.d.ts
devrait toujours être là pour que l'importation de protractor/globals
fonctionne. J'ai mis à jour le PR. Merci!
Commentaire le plus utile
@cnishina content que l'exemple ait aidé ! Merci pour la réponse rapide, cela a l'air génial, sauf pour une chose qui pourrait me confondre : bien que votre modification supprime le fichier
global.ts
du package NPM, il n'y aura pasglobals.d.ts
déclaration correspondanteprotractor/globals
invisible pour le compilateur dactylographié pour la consommation de projets ?Je suppose donc que la première partie de ma proposition n'était pas de supprimer le
globals.js
compilé en faveur de la déclarationglobals.d.ts
, mais d'avoir les deux pour que le package NPM contienne :juste sans le fichier source
globals.ts
.Je pense que cela peut être réalisé en utilisant tsc avec le drapeau
--declaration
lors de la compilation du fichierglobal.ts
. Par exemple, changer la tâche tsc:globals gulp comme ci-dessous devrait faire l'affaire, bien que j'aie remarqué qu'il y a aussi des tâchestsc
ettsc:w
dans le package.json qui pourraient également avoir besoin d'être mises à jour à condition que cela ne modifie pas négativement les compilations non globales :Faites-moi savoir si j'ai raté quelque chose, et merci encore pour la solution rapide ! Au fait, utiliser Protractor avec Typescript est vraiment génial !