ts6to7 - TypeScript 5/6 → 7(tsgo) माइग्रेशन ऑटोमेशन codemod
(github.com/zi-gae)कल 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 करता हैtypescriptdependency को^7.0.0तक bump करता है- अगर
strictसेट नहीं था, तो उसेfalseपर फिक्स करता है — जो फाइलेंextendsके जरिए किसी दूसरे config को inherit करती हैं, उन्हें नहीं बदलता और सिर्फ warning देता है (क्योंकि base config मेंstrictपहले से सेट हो सकता है) - जिन चीज़ों को सुरक्षित तरीके से ऑटो-रूपांतरित नहीं किया जा सकता (
ES5-only runtime,ts-node/ts-jestजैसे पुराने compiler API-आधारित tools,typesarray की कमी आदि), उन्हें 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 दर्ज करें — इससे बहुत मदद मिलेगी।
अभी कोई टिप्पणी नहीं है.