Rumah >hujung hadapan web >tutorial js >Menghidupkan Projek Lapuk
Minggu ini, saya melakukan beberapa kerja penyelenggaraan pada Starchart. Projek ini telah lama tidak diusahakan, jadi kami cuba mengemas kini kebergantungannya.
Starchart memudahkan komuniti pembangun Seneca untuk mencipta dan mengurus subdomain tersuai dan sijil SSL mereka sendiri, tanpa kos atau perlu memberikan maklumat peribadi.
Untuk mendapatkan maklumat tentang menjalankan Starchart, lihat panduan penggunaan kami. Untuk maklumat pembangunan, lihat panduan penyumbang kami. Untuk latar belakang teknikal lanjut, perancangan dan reka bentuk awal, sila lihat wiki.
Internet sedang berkembang, dan perkara yang dahulu sukar menjadi mudah. Contohnya, mengehos tapak web anda sendiri yang dahulunya memerlukan pengetahuan tentang pentadbiran pelayan, sistem pengendalian, rangkaian, dsb. Hari ini, banyak pembangun mengehoskan tapak web peribadi dan projek mereka tanpa pernah menyentuh pelayan jauh, memilih perkhidmatan awan (percuma) seperti Halaman GitHub, Vercel, Netlify atau AWS.
Model keselamatan internet juga sedang berkembang. Sebagai contoh, vendor penyemak imbas telah menerima HTTPS di mana-mana sahaja. Ini bagus untuk keselamatan, kerana ia membolehkan penyulitan berasaskan sijil antara pelanggan dan pelayan. Walau bagaimanapun, seperti…
Rancangannya adalah untuk membetulkan aliran kerja CI, yang kami dapati telah rosak minggu lepas:
Tetapi sebelum saya dapat menyelesaikannya, salah seorang pembangun terdahulu, Eakam, telah menyelesaikan isu itu - ternyata ia hanya kerana Playwright sudah ketinggalan zaman.
Pemasangan pengarang drama gagal dalam CI (Ujian E2E). Versi pengarang drama yang terhempas harus membetulkannya.
Ruj:
Saya rasa saya harus menebusnya dengan mencari lebih banyak perkara untuk diusahakan dan fikir mengemas kini lebih banyak kebergantungan akan menjadi titik permulaan yang bagus.
Memandangkan projek itu tidak diusahakan selama 2 tahun, terdapat banyak kelemahan keselamatan yang berpunca daripada pakej yang sudah lapuk. Saya dapat membetulkan kebanyakannya dengan pembetulan audit npm.
Terdapat beberapa lagi pembetulan yang menyebabkan perubahan yang terputus dalam @remix-run/eslint-config dan @remix-run/react, jadi saya menemuinya secara manual.
Salah satu kemas kini (saya menemuinya pada masa yang sama jadi saya tidak boleh mengatakan dengan pasti tetapi pertaruhan saya adalah pada /react) membawa kepada ralat semakan taip kerana [@remix-run/react].useNavigation( ).formData kini mungkin daripada jenis yang tidak ditentukan. Saya membetulkannya dengan rantaian pilihan.
// Before const isLoading = navigation.state === 'submitting' && Number(navigation.formData.get('id')) === dnsRecord.id; // After const isLoading = navigation.state === 'submitting' && Number(navigation.formData?.get('id')) === dnsRecord.id;
Perubahan lain yang saya buat ada kaitan dengan beberapa ralat lint yang muncul (Pada ketika ini saya menyedari bahawa sambungan ESLint saya telah dimatikan, tetapi saya pasti amaran ini disertakan dengan kemas kini, kerana ia tidak pernah berlaku dalam CI pada masa lalu).
// Before import { getCertificateByUsername } from '~/models/certificate.server'; import { deleteCertificateById } from '~/models/certificate.server'; import { isAdmin } from '~/models/user.server'; import { getUserByUsername } from '~/models/user.server'; // After import { getCertificateByUsername, deleteCertificateById } from '~/models/certificate.server'; import { isAdmin, getUserByUsername } from '~/models/user.server';
// Before let date = val.toLocaleDateString('en-US', { // After const date = val.toLocaleDateString('en-US', {
Terkejut ia tidak menangkap ini sebelum ini.
Selain itu, apabila saya menghidupkan sambungan ESLint, saya agak terkejut kerana terdapat ~900 ralat linter. Ternyata ia adalah kerana ESLint sedang menyelitkan output yang dijana oleh Playwright. Jadi saya menambah /playwright-report ke .eslintignore.
Dan itu adalah jumlah kerja penyelenggaraan saya untuk pecut ini. Akhirnya membetulkan 30 isu keselamatan yang teruk, jadi tidak teruk.
Sepatutnya membaiki sekumpulan kelemahan keselamatan.
Saya juga mengaktifkan semula Dependabot yang menemui beberapa versi kecil. Alangkah baiknya jika anda tidak perlu menyiasat dan menambal kelemahan keselamatan secara manual.
Dalam berita lain, salah satu permintaan tarik saya kepada Mattermost akhirnya digabungkan!
PR ini:
Membetulkan #29548
// Before const isLoading = navigation.state === 'submitting' && Number(navigation.formData.get('id')) === dnsRecord.id; // After const isLoading = navigation.state === 'submitting' && Number(navigation.formData?.get('id')) === dnsRecord.id;
Ia telah diluluskan sebentar tadi tetapi mengambil masa beberapa minggu untuk digabungkan menjadi utama.
Sementara itu saya telah mengusahakan PR saya yang lain. Saya diminta membuat beberapa perubahan dan saya sedang menunggu semakan semula.
Permintaan tarik ini menambahkan tetapan pengguna pada apl web untuk menogol emotikon pemaparan (:D) sebagai emoji (?).
Tetapan ditambahkan sebagai komponen dalam komponen/tetapan_pengguna/paparan/render_emoticons_as_emoji/ yang diimport dalam komponen/tetapan_pengguna/display/pengguna_tetapan_paparan.tsx.
Saya telah menambahkan fungsi renderOnOffLabel() pada user_settings_display.tsx, dialih keluar daripada component/user_settings/advanced/user_settings_advanced.tsx untuk membantu memaparkan komponen baharu.
Tetapan disimpan sebagai pilihan pengguna menggunakan tindakan savePreferences().
Saya telah menambah pemalar untuk keutamaan kepada utils/constants.tsx dan webapp/channels/src/packages/mattermost-redux/src/constants/preferences.ts.
Untuk benar-benar menggunakan tetapan, saya telah mengubah suai komponen/post_markdown untuk menerima nilainya sebagai prop, yang mana saya telah menggunakan getBool() dan menambah nilai lalai pada konfigurasi. post_markdown menurunkan nilai ini kepada Markdown pada objek pilihan, yang kemudian menurunkannya kepada utils/text_formatting.tsx, yang akhirnya menghantar nilai kepada emoticons.tsx sebagai parameter yang baru ditambah. emotikon.tsx menyemak sama ada nilai itu benar dan jika benar, ia menukar emotikon kepada emoji.
Saya telah mengemas kini ujian yang terjejas dan membuat ujian unit untuk komponen baharu. Saya juga telah mengemas kini fail terjemahan bahasa Inggeris.
Pembetulan (sebahagiannya) https://github.com/mattermost/mattermost/issues/26504 Jira https://mattermost.atlassian.net/browse/MM-53650
Perhatikan isu dan tiket menerangkan penambahan ciri ini pada apl mudah alih juga, yang PR ini tidak melakukannya.
before | after |
---|---|
// Before const isLoading = navigation.state === 'submitting' && Number(navigation.formData.get('id')) === dnsRecord.id; // After const isLoading = navigation.state === 'submitting' && Number(navigation.formData?.get('id')) === dnsRecord.id;
Mengusahakan PR ini menarik kerana semasa saya mula-mula menyerahkannya, saya tidak faham sepenuhnya perubahan saya. Mengimbas kembali setelah sekian lama meninggalkannya dan dengan maklum balas daripada ulasan membantu saya melihatnya dari perspektif baharu dan memahaminya dengan lebih baik.
Apl Mattermost mendapat keadaan tetapan pengguna daripada kedua-dua "keutamaan" dan daripada "konfigurasi". Saya menambah tetapan saya kepada kedua-duanya, meniru salah satu tetapan sedia ada yang saya dinasihatkan untuk merujuk, tetapi ternyata "konfigurasi" adalah untuk tetapan peringkat pelayan, manakala tetapan baharu ini bertujuan untuk menjadi pilihan pihak klien. Ulasan membantu saya memahami di mana silap saya, dan ia akhirnya menjadi perubahan yang lebih kecil daripada yang saya fikirkan perlu.
Secara keseluruhannya saya katakan ia adalah minggu yang agak produktif.
Atas ialah kandungan terperinci Menghidupkan Projek Lapuk. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!