6.3.1
4.0.3
2.0.0
Ini khusus untuk proyek TypeScript dengan file sumber yang mengimpor protractor/globals
. Khususnya, ketika mengimpor protractor/globals
, karena rilis NPM menyertakan file globals.ts
alih-alih file definisi yang sesuai ( globals.d.ts
) kompiler TypeScript akan menghitung root sumber umum proyek TypeScript yang dikonsumsi ke jalur umum antara ketergantungan busur derajat global.ts
(kemungkinan node_modules/protractor
) dan di mana pun sumber proyek yang dikonsumsi terkandung (misalnya, src/test/**/*.ts
). Ini mengarahkan kompiler untuk mengeluarkan file sumber dengan semua direktori induk disertakan.
Perhatikan bahwa ini murni masalah di mana kompiler TypeScript mengeluarkan file yang dikompilasi; kompilasi terjadi dengan baik, dan busur derajat dikonsumsi (luar biasa) seperti yang diharapkan.
Untuk mendemonstrasikan skenario yang saya gambarkan dengan lebih baik, silakan lihat contoh project .
Saya menduga menyelesaikan ini di sini akan menjadi kombinasi dari dua hal:
globals.ts
dikompilasi; danglobals.ts
dari paket rilis NPM, hanya menyisakan file javascript yang dikompilasi dan file definisi yang sesuai.Jika ini bagus, saya akan dengan senang hati mengirimkan permintaan tarik untuk menangani bagian pertama dari solusi. Jika proses rilis ke NPM masih mengikuti dokumen rilis proyek , saya juga akan dengan senang hati memperbaruinya dengan langkah untuk menghapus file globals.ts
, meskipun itu mungkin lebih baik ditangani oleh seseorang yang benar-benar melakukan rilis.
Sementara saya telah memikirkan ini dan percaya bahwa kompiler TypeScript berperilaku seperti yang diharapkan, beri tahu saya jika Anda tidak setuju karena saya masih basah kuyup dengan TypeScript.
(edit: memperbarui format untuk mencerminkan templat bug)
@tmeneau Terima kasih untuk masalah ini: Saya sangat menyukai contoh github... 👍 👍 👍
Jadi ini adalah efek samping saat menggunakan outDir. Misalnya jika outDir
diatur ke output
, selain file yang ditranspilasikan, output/node_modules/protractor/globals.js
juga akan ditranspilasikan. Saya awalnya menyertakan file globals.ts karena (pada saat itu) setelah beberapa percobaan, Anda tidak dapat mengimpor jenis file tanpa memiliki file TypeScript.
Untuk melalui proposal:
exampleTypescript
ini tampaknya berhasil. Saya memperbarui .npmignore untuk tidak menerbitkan file itu dan memutakhirkan busur derajat ke TypeScript 2. Lihat: https://github.com/angular/protractor/pull/3485@cnishina senang contohnya membantu! Terima kasih atas tanggapan cepatnya, ini tampak hebat kecuali untuk satu hal yang mungkin membuat saya bingung: sementara perubahan Anda menghapus file global.ts
dari paket NPM, tidak akan memiliki deklarasi globals.d.ts
membuat impor protractor/globals
tidak terlihat oleh kompiler TypeScript untuk menggunakan proyek?
Jadi saya kira bagian pertama dari proposal saya bukan untuk menghapus globals.js
dikompilasi demi deklarasi globals.d.ts
, tetapi untuk memiliki keduanya sehingga paket NPM akan berisi:
hanya tanpa file sumber globals.ts
.
Saya percaya ini dapat dicapai dengan menggunakan tsc dengan flag --declaration
saat mengkompilasi file global.ts
. Misalnya, mengubah tugas tsc:globals gulp seperti di bawah ini akan berhasil, meskipun saya perhatikan ada juga tugas tsc
dan tsc:w
di package.json yang mungkin perlu diperbarui juga asalkan tidak mengubah kompilasi non-global secara negatif:
gulp.task('tsc:globals', function(done) {
runSpawn(done, 'node', ['node_modules/typescript/bin/tsc', '--declaration', 'globals.ts'],
'ignore');
});
Beri tahu saya jika saya melewatkan sesuatu, dan sekali lagi terima kasih atas perbaikan cepatnya! Omong-omong, menggunakan Busur Derajat dengan TypeScript adalah ledakan yang serius!
Yup... 👍 globals.d.ts
harus tetap ada agar protractor/globals
import bekerja. Saya memperbarui PR. Terima kasih!
Komentar yang paling membantu
@cnishina senang contohnya membantu! Terima kasih atas tanggapan cepatnya, ini tampak hebat kecuali untuk satu hal yang mungkin membuat saya bingung: sementara perubahan Anda menghapus file
global.ts
dari paket NPM, tidak akan memiliki deklarasiglobals.d.ts
membuat imporprotractor/globals
tidak terlihat oleh kompiler TypeScript untuk menggunakan proyek?Jadi saya kira bagian pertama dari proposal saya bukan untuk menghapus
globals.js
dikompilasi demi deklarasiglobals.d.ts
, tetapi untuk memiliki keduanya sehingga paket NPM akan berisi:hanya tanpa file sumber
globals.ts
.Saya percaya ini dapat dicapai dengan menggunakan tsc dengan flag
--declaration
saat mengkompilasi fileglobal.ts
. Misalnya, mengubah tugas tsc:globals gulp seperti di bawah ini akan berhasil, meskipun saya perhatikan ada juga tugastsc
dantsc:w
di package.json yang mungkin perlu diperbarui juga asalkan tidak mengubah kompilasi non-global secara negatif:Beri tahu saya jika saya melewatkan sesuatu, dan sekali lagi terima kasih atas perbaikan cepatnya! Omong-omong, menggunakan Busur Derajat dengan TypeScript adalah ledakan yang serius!