कल TypeScript 7 आधिकारिक रूप से रिलीज़ हुआ। Go में दोबारा लिखा गया native compiler (tsgo) होने की वजह से यह लगभग 10 गुना तेज़ हो गया है, लेकिन TS5/6 में deprecated रहे compiler options पूरी तरह हटा दिए गए हैं और strict की default value भी true कर दी गई है — इसलिए पुराने tsconfig वाले प्रोजेक्ट्स में अपग्रेड सीधे काम नहीं करता।

उस मैकेनिकल हिस्से को ऑटोमेट करने के लिए मैंने एक codemod बनाया है।

npx ts6to7 --dry # प्रीव्यू (कुछ भी नहीं लिखता)
npx ts6to7 # लागू करें

यह क्या करता है:

  • tsconfig*.json को उसी जगह संशोधित करता है — jsonc-parser से एडिट करता है, इसलिए comments और formatting वैसे ही बने रहते हैं
  • हटाए गए options को TS7 equivalents में बदलता है: target: es5 → ES2015, module: umd/amd → ESNext, moduleResolution: node → NodeNext/Bundler, importsNotUsedAsValues → verbatimModuleSyntax आदि
  • baseUrl को paths में fold करता है
  • typescript dependency को ^7.0.0 तक bump करता है
  • अगर strict सेट नहीं था, तो उसे false पर फिक्स करता है — जो फाइलें extends के जरिए किसी दूसरे config को inherit करती हैं, उन्हें नहीं बदलता और सिर्फ warning देता है (क्योंकि base config में strict पहले से सेट हो सकता है)
  • जिन चीज़ों को सुरक्षित तरीके से ऑटो-रूपांतरित नहीं किया जा सकता (ES5-only runtime, ts-node/ts-jest जैसे पुराने compiler API-आधारित tools, types array की कमी आदि), उन्हें file-level scoped "मैन्युअल जांच आवश्यक" checklist के रूप में आउटपुट करता है

TypeScript 5 से भी सीधे माइग्रेट किया जा सकता है: 6 से होकर जाने की ज़रूरत नहीं है। TS5-era options जैसे ignoreDeprecations और project references का prepend भी साथ में साफ़ करता है।

monorepo भी support करता है (सभी packages scan करता है)।

अभी यह 0.2.0 पर है। अगर कोई ऐसा case मिले जहाँ tsconfig गलत तरीके से convert हो रहा हो, तो उस tsconfig को संलग्न करके issue दर्ज करें — इससे बहुत मदद मिलेगी।

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.