Protractor: يجب أن تحل حزمة إصدار NPM محل `globals.ts` بـ` globals.d.ts`

تم إنشاؤها على ١٨ أغسطس ٢٠١٦  ·  3تعليقات  ·  مصدر: angular/protractor

تقرير الشوائب

  • إصدار العقدة: 6.3.1
  • إصدار المنقلة: 4.0.3
  • نسخة مطبوعة: 2.0.0

    ملخص

هذا خاص بمشاريع الكتابة المطبوعة مع ملفات المصدر التي تستورد protractor/globals . على وجه التحديد ، عند استيراد protractor/globals ، نظرًا لأن إصدار NPM يتضمن ملف globals.ts بدلاً من ملف تعريف مطابق ( globals.d.ts ) ، فإن المحول البرمجي المنسوخ سيحسب الجذر المصدر المشترك لمشروع الكتابة المطبوعة. إلى المسار المشترك بين تبعية المنقلة global.ts (من المحتمل node_modules/protractor ) وأينما تم احتواء مصادر المشروع المستهلك (على سبيل المثال ، src/test/**/*.ts ). هذا يقود المترجم إلى إخراج الملفات المصدر مع تضمين جميع الأدلة الرئيسية.

لاحظ أن هذه مشكلة بحتة حيث يُخرج المحول البرمجي المطبوع عليه الملفات المترجمة ؛ يحدث التجميع بشكل جيد ، ويتم استهلاك المنقلة (بذهول) كما هو متوقع.

خطوات التكاثر

لتوضيح السيناريو الذي أصفه بشكل سيئ ، يرجى الاطلاع على مثال المشروع هذا .

الحل المقترح

أظن أن حل هذا هنا سيكون مزيجًا من شيئين:

  1. تحديث عملية تجميع gulp الحالية لضمان إنشاء ملف تعريف عند تجميع ملف globals.ts ؛ و
  2. تحديث عملية إصدار Protractor NPM (سواء يدويًا أو آليًا) لإزالة ملف globals.ts من حزمة إصدار NPM ، تاركًا فقط ملف javascript المترجم وملف التعريف المقابل.

إذا كان هذا صحيحًا ، فسيسعدني إرسال طلب سحب للتعامل مع الجزء الأول من الحل. إذا كانت عملية الإصدار إلى NPM لا تزال تتبع مستند إصدار المشروع ، فسيسعدني أيضًا تحديث ذلك بخطوة لإزالة ملف globals.ts ، على الرغم من أنه قد يتم التلاعب به بشكل أفضل من قبل شخص يقوم بالفعل بتنفيذ الإصدارات.

على الرغم من أنني فكرت في هذا الأمر وأعتقد أن برنامج التحويل البرمجي لـ Typescript يتصرف كما هو متوقع ، أخبرني إذا كنت لا توافق على ذلك لأنني ما زلت أتبلل قدمي باستخدام Typescript.

(تحرير: تحديث التنسيق لعكس قالب الخطأ)

التعليق الأكثر فائدة

cnishina سعيد أن المثال ساعد! شكرًا للاستجابة السريعة ، يبدو هذا رائعًا باستثناء شيء واحد قد أكون في حيرة من أمري: بينما يزيل التغيير ملف global.ts من حزمة NPM ، لن يكون هناك تصريح مقابل globals.d.ts جعل استيراد protractor/globals غير مرئي للمترجم المطبوع على الحروف لاستهلاك المشاريع؟

لذلك أعتقد أن الجزء الأول من اقتراحي لم يكن إزالة globals.js المترجم لصالح الإعلان globals.d.ts ، ولكن للحصول على كليهما بحيث تحتوي حزمة NPM على:

  • globals.js
  • globals.d.ts

فقط بدون الملف المصدر globals.ts .

أعتقد أن هذا يمكن تحقيقه باستخدام tsc مع العلم --declaration عند تجميع ملف global.ts . على سبيل المثال ، تغيير مهمة tsc: globals gulp كما هو موضح أدناه يجب أن يؤدي الغرض ، على الرغم من أنني لاحظت أن هناك أيضًا مهام tsc و tsc:w في الحزمة. json قد تحتاج إلى التحديث أيضًا شريطة ألا يؤدي ذلك إلى تعديل التجميعات غير العالمية بشكل سلبي:

gulp.task('tsc:globals', function(done) {
  runSpawn(done, 'node', ['node_modules/typescript/bin/tsc', '--declaration', 'globals.ts'],
    'ignore');
});

اسمحوا لي أن أعرف إذا كان هناك شيء مفقود ، وشكرا مرة أخرى على الإصلاح السريع! بالمناسبة ، استخدام المنقلة مع الطباعة يعد انفجارًا خطيرًا!

ال 3 كومينتر

tmeneau شكرًا لك على هذه المشكلة: لقد أحببت حقًا مثال جيثب ... 👍 👍 👍

لذلك هذا هو الجانب الذي يؤثر على استخدام outDir. على سبيل المثال ، إذا تم تعيين outDir على output ، فبالإضافة إلى الملفات المترجمة ، فإن output/node_modules/protractor/globals.js سيتم تحويلها أيضًا. لقد قمت في الأصل بتضمين ملف globals.ts منذ (في ذلك الوقت) بعد بعض التجارب ، لم تتمكن من استيراد أنواع الملفات دون وجود ملف TypeScript.

لتصفح المقترحات:

  1. لا يعمل نظرًا لأن globals.ts لا يمكن أن يكون مجرد ملف إعلان * d.ts نظرًا لأننا نقوم بتعيين متغيرات من مساحة الاسم العالمية.
  2. بعد تجربة exampleTypescript يبدو أن هذا يعمل. أقوم بتحديث .npmignore لعدم نشر هذا الملف وترقية Protractor إلى TypeScript 2. راجع: https://github.com/angular/protractor/pull/3485

cnishina سعيد أن المثال ساعد! شكرًا للاستجابة السريعة ، يبدو هذا رائعًا باستثناء شيء واحد قد أكون في حيرة من أمري: بينما يزيل التغيير ملف global.ts من حزمة NPM ، لن يكون هناك تصريح مقابل globals.d.ts جعل استيراد protractor/globals غير مرئي للمترجم المطبوع على الحروف لاستهلاك المشاريع؟

لذلك أعتقد أن الجزء الأول من اقتراحي لم يكن إزالة globals.js المترجم لصالح الإعلان globals.d.ts ، ولكن للحصول على كليهما بحيث تحتوي حزمة NPM على:

  • globals.js
  • globals.d.ts

فقط بدون الملف المصدر globals.ts .

أعتقد أن هذا يمكن تحقيقه باستخدام tsc مع العلم --declaration عند تجميع ملف global.ts . على سبيل المثال ، تغيير مهمة tsc: globals gulp كما هو موضح أدناه يجب أن يؤدي الغرض ، على الرغم من أنني لاحظت أن هناك أيضًا مهام tsc و tsc:w في الحزمة. json قد تحتاج إلى التحديث أيضًا شريطة ألا يؤدي ذلك إلى تعديل التجميعات غير العالمية بشكل سلبي:

gulp.task('tsc:globals', function(done) {
  runSpawn(done, 'node', ['node_modules/typescript/bin/tsc', '--declaration', 'globals.ts'],
    'ignore');
});

اسمحوا لي أن أعرف إذا كان هناك شيء مفقود ، وشكرا مرة أخرى على الإصلاح السريع! بالمناسبة ، استخدام المنقلة مع الطباعة يعد انفجارًا خطيرًا!

نعم ... يجب أن يظل 👍 globals.d.ts موجودًا للحصول على عمل استيراد protractor/globals . لقد قمت بتحديث العلاقات العامة. شكرا!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات