कमांड लाइन से टाइपस्क्रिप्ट फाइलें कैसे चलाएं?


206

मुझे इसका जवाब खोजने में आश्चर्यजनक रूप से कठिन समय हो रहा है। सादे Node.JS के साथ, आप किसी भी js फ़ाइल को चला सकते हैं node path/to/file.js, जिसके साथ CoffeeScript है coffee hello.coffeeऔर ES6 है babel-node hello.js। मैं टाइपस्क्रिप्ट के साथ भी ऐसा ही कैसे करूं?

मेरी परियोजना में tsconfig.jsonवेबपैक / टीएस-लोडर द्वारा ब्राउज़र के लिए एक अच्छा सा बंडल बनाने के लिए उपयोग किया जाता है। मुझे इसके पहले कंसोल से बिल्ड स्टेप रन की आवश्यकता है, हालांकि, यह .tsस्कीमा उत्पन्न करने के लिए प्रोजेक्ट में उपयोग की गई कुछ फ़ाइलों का उपयोग करेगा , लेकिन मैं एक भी टाइपस्क्रिप्ट फ़ाइल को संकलित किए बिना चलाने में सक्षम नहीं हो सकता पूरी परियोजना।

जवाबों:


268

मैं टाइपस्क्रिप्ट के साथ कैसे करते हैं

आप tscवॉच मोड में रनिंग को छोड़ सकते हैं tsc -w -p .और यह .jsआपके लिए एक लाइव फैशन में फाइलें उत्पन्न करेगा , जिससे आप node foo.jsसामान्य की तरह चल सकते हैं

टीएस नोड

Ts-node है: https://github.com/TypeStrong/ts-node जो मक्खी पर कोड संकलित करेगा और इसे नोड fly के माध्यम से चलाएगा।

npx ts-node src/foo.ts

10
tsc डिस्क को js लिखता है। ts-node को ऐसा करने की जरूरत नहीं है और मक्खी पर ts चलाता है
basarat

1
बस अनुस्मारक ts-node आयातित मॉड्यूल से लॉग को सांत्वना नहीं देता है। Ex के लिए: यदि आप ts-node fil1.ts और file1.ts आंतरिक रूप से file2.ts का उपयोग करते हैं, तो file2.ts से कंसोल लॉग लॉग नहीं किया जाएगा।
शादाब फैज

1
एक लाल हेरिंग सावधान रहना चाहिए कि मैं भाग गया और मुझे भ्रमित कर रहा था। मेरे पास एक साधारण टाइपस्क्रिप्ट फ़ाइल थी जिसका नाम test.tsकभी भी ट्रांसप्लड नहीं किया गया था और इसमें कोड की एक पंक्ति थी: console.log('hello');इसमें। मैं node test.tsकमांड लाइन से भाग रहा था और इसने 'हैलो' का आउटपुट दिया, जो मुझे भ्रमित कर रहा था। यदि फ़ाइल शुद्ध रूप से मान्य जावास्क्रिप्ट है और आप node myFile.tsइसे चलाते हैं तब भी काम करता है। हालाँकि यह एक अच्छा उपयोग मामला नहीं है क्योंकि मैंने टाइप टाइपस्क्रिप्ट कोड को जोड़ने के एक मिनट बाद मुझे इसे चलाने की कोशिश में एक त्रुटि मिली जो कि मुझे उम्मीद थी। काश नोड्स को .ts फाइलें चलाने पर चेतावनी / त्रुटि होती।
एटॉनवे

3
ts-नोड FTW। एक हवा npm install -g ts-nodeबनाता ts-node your-script.tsहै।
AlwaysLearning


41

हमारे पास निम्नलिखित कदम हैं

  1. पहले आपको टाइपस्क्रिप्ट स्थापित करने की आवश्यकता है

    npm स्थापित -g टाइपस्क्रिप्ट

2. एक फ़ाइल helloworld.ts बनाएँ

function hello(person){
 return "Hello, " + person;
}
let user = "Aamod Tiwari";
const result = hello(user);
console.log("Result",result)

3. कमांड प्रॉम्प्ट खोलें और निम्न कमांड टाइप करें

tsc helloworld.ts

  1. फिर से कमांड चलाएं

नोड helloworld.js

  1. परिणाम कंसोल पर प्रदर्शित होगा

2
आपके मामले में, हम .js फ़ाइल .ts फ़ाइल नहीं चलाते हैं।
मेनाई अला एडडिन - अलादीन

20

ऊपर @Aamod उत्तर जोड़ने के लिए, यदि आप अपने कोड को संकलित करने और चलाने के लिए एक कमांड लाइन का उपयोग करना चाहते हैं, तो आप निम्नलिखित का उपयोग कर सकते हैं:

खिड़कियाँ:

tsc main.ts | node main.js

लिनक्स / macOS:

tsc main.ts && node main.js

2
npm install typescript -gtscCLI
s2t2

1
आह 'विंडोज़ पाइप'
रॉकी ली

यदि आप टाइपस्क्रिप्ट सोर्स लाइन को लाइन से डिबग करना चाहते हैं तो यह काम नहीं करेगा।
परमवीर सिंह करवाल

20

नीचे दिए गए आदेशों को चलाएं और विश्व स्तर पर आवश्यक पैकेज स्थापित करें:

npm install -g ts-node
npm install -g typescript

अब एक टाइपस्क्रिप्ट फ़ाइल निष्पादित करने के लिए निम्नलिखित कमांड चलाएँ:

ts-node typescript-file.ts

2
यह IMHO करने का सबसे अच्छा तरीका है, साथ ts-nodeही टाइपस्क्रिप्ट REPL भी प्रदान करता है।
ट्रॉमी

1
यदि आप npx ts-node yourscript.tsवैश्विक संस्करण का उपयोग नहीं करना चाहते हैं तो आप इस पर भी भरोसा कर सकते हैं ।
राफेलपिवाटो


6

बस उपयोगी जानकारी - यहाँ नवीनतम टाइपप्रति / जावास्क्रिप्ट क्रम है Deno

यह नोड रयान डाहल के निर्माता द्वारा बनाया गया था, इस आधार पर कि यदि वह नए सिरे से शुरुआत कर सकता है तो वह अलग तरीके से क्या करेगा।


1
यहाँ एक उदाहरण है:deno run https://deno.land/std/examples/welcome.ts
mozey

5

अपने आप को एक सरल बैश आवरण लिखें मदद कर सकते हैं।

#!/bin/bash
npx tsc $1 && node ${1%%.ts}

3

अन्य उत्तर में से कोई भी टाइपस्क्रिप्ट स्क्रिप्ट को चलाने के लिए चर्चा नहीं करता है जो मॉड्यूल और विशेष रूप से आधुनिक ईएस मॉड्यूल का उपयोग करता है।

मार्च 2020 तक सबसे पहले टीएस-नोड उस परिदृश्य में काम नहीं करताtsc है node। इसलिए हम इसके बाद निपटेंगे ।

दूसरा, टाइपस्क्रिप्ट अभी भी .mjsफ़ाइलों को आउटपुट नहीं कर सकता है । तो हम .jsफ़ाइलों और "type": "module"में व्यवस्थित करेंगे package.json

तीसरा, आप एक्सटेंशन importनिर्दिष्ट किए बिना .js(जो .tsफ़ाइलों में भ्रमित करना होगा ) क्लीन लाइन्स चाहते हैं :

import { Lib } from './Lib';

खैर, यह गैर तुच्छ है। जब तक आप ध्वज का उपयोग नहीं करते हैं, नोड को आयात पर एक्सटेंशन निर्दिष्ट करने की आवश्यकता होती हैexperimental-specifier-resolution=node । इस स्थिति में, यह नोड को केवल लाइन पर निर्दिष्ट करने के लिए Lib.jsया देखने के लिए सक्षम करेगा ।Lib/index.js./Libimport

चौथा, अभी भी एक झपकी है: यदि आपके पास अपने पैकेज की mainतुलना index.jsमें एक अलग फ़ाइल नाम है , तो नोड नहीं मिलेगा

ट्रांसप्लिंग चीजों को वैनिला नोड चलाने की तुलना में बहुत अधिक गड़बड़ कर देता है।

यहाँ एक आधुनिक टाइपस्क्रिप्ट परियोजना संरचना के साथ एक नमूना रेपो है , जो ES मॉड्यूल कोड बनाता है


1
बहुत बहुत धन्यवाद, यह लगभग उन मुद्दों की सटीक श्रृंखला है जो मैंने आज करने की कोशिश की थी!
डगेलो

3

जैसा जीशान अहमद का जवाब , मैं भी लगता है कि ts-nodeजाने के लिए रास्ता है। मैं एक शेबंग भी जोड़ूंगा और इसे निष्पादन योग्य बनाऊंगा, ताकि आप इसे सीधे चला सकें।

  1. टाइपस्क्रिप्ट और ts-node को विश्व स्तर पर स्थापित करें:

    npm install -g ts-node typescript

    या

    yarn global add ts-node typescript
  2. helloइस सामग्री के साथ एक फ़ाइल बनाएँ :

    #!/usr/bin/env ts-node-script
    
    import * as os from 'os'
    
    function hello(name: string) {
        return 'Hello, ' + name
    }
    const user = os.userInfo().username
    console.log(`Result: ${hello(user)}`)

    जैसा कि आप देख सकते हैं, लाइन एक में ts-node के लिए शेबंग है

  3. केवल फ़ाइल निष्पादित करके सीधे चलाएं

    $ ./hello
    Result: Hello, root

कुछ नोट:


अपडेट 2020/04/06: टिप्पणी में महान इनपुट के बाद कुछ परिवर्तन: अद्यतन कुटिया का उपयोग करने ts-node-scriptके बजाय ts-nodets नोड में मुद्दों के लिए, लिंक।



1
आप इस दृष्टिकोण के साथ कई समस्याओं में भाग सकते हैं। मैंने इस मुद्दे में संभावित समाधानों का दस्तावेजीकरण किया । विशेष रूप से, शेबंग #!/usr/bin/env ts-node-script(भी हिस्सा ts-node) इस उद्देश्य के लिए बेहतर प्रतीत होता है। यदि आप अपनी स्क्रिप्ट (जैसे के साथ npm link) लिंक करना चाहते हैं , तो चीजें अधिक जटिल हो जाती हैं क्योंकि ts-nodeप्रतीकात्मक लिंक का पालन नहीं करता है (अभी तक?)। मैं #!/usr/bin/env -S ts-node --project /usr/local/lib/node_modules/<your-project>/tsconfig.jsonअपने मामले में अंत में साथ गया ।
कास्पर एटर

0

बस किसी में भी मेरी तरह पागल है और सिर्फ टाइपस्क्रिप्ट स्क्रिप्ट को चलाना चाहता है जैसे कि यह एक .js स्क्रिप्ट थी, आप यह कोशिश कर सकते हैं। मैंने एक हैकी स्क्रिप्ट लिखी है जो नोड का उपयोग करके .ts स्क्रिप्ट को निष्पादित करने के लिए प्रकट होती है।

#!/usr/bin/env bash

NODEPATH="$HOME/.nvm/versions/node/v8.11.3/bin" # set path to your node/tsc

export TSC="$NODEPATH/tsc"
export NODE="$NODEPATH/node"

TSCFILE=$1 # only parameter is the name of the ts file you created.

function show_usage() {
    echo "ts2node [ts file]"
    exit 0
}

if [ "$TSCFILE" == "" ]
then
    show_usage;
fi

JSFILE="$(echo $TSCFILE|cut -d"." -f 1).js"

$TSC $TSCFILE && $NODE $JSFILE

आप ऐसा कर सकते हैं या अपना स्वयं का लिख ​​सकते हैं लेकिन अनिवार्य रूप से, यह .js फ़ाइल बनाता है और फिर इसे चलाने के लिए नोड का उपयोग करता है:

# tsrun myscript.ts

सरल। बस सुनिश्चित करें कि आपकी स्क्रिप्ट में केवल एक है "।" वरना आपको अपने जेस्मर्स को मेरे द्वारा दिखाए गए तरीके से अलग तरीके से बदलना होगा।


0
  1. ts-nodeविश्व स्तर पर नोड मॉड्यूल स्थापित करें ।
  2. नोड रनटाइम कॉन्फ़िगरेशन बनाएं (आईडीई के लिए) या nodeकमांड लाइन में फ़ाइल jsफ़ाइल को चलाने के लिए उपयोग करें (पथ विंडोज़ के लिए है, लेकिन आप इसे लिनक्स के लिए भी कर सकते हैं) ~\AppData\Roaming\npm\node_modules\ts-node\dist\bin.js
  3. tsकमांड लाइन तर्क के रूप में अपनी फ़ाइल पथ दें ।
  4. अपनी मर्जी से चलाएं या डिबग करें।

0

जैसे वातावरण के लिए Webstorm जहां nodeआदेश को बदला नहीं जा सकता ts-nodeया npx:

  1. npm install ts-node typescript (निर्भरता स्थापित करें)
  2. node --require ts-node/register src/foo.ts( --require ts-node/register"नोड पैरामीटर" में जोड़ें )

-28

यह प्रश्न 2015 में पोस्ट किया गया था। 2018 में, नोड .js और .ts दोनों को पहचानता है । तो, रनिंग node file.tsभी चलेगी।


19
नोड किसी भी फ़ाइल को जावास्क्रिप्ट के रूप में व्याख्या करता है, इसलिए यह केवल तभी काम करेगा जब प्रश्न में टाइपस्क्रिप्ट फ़ाइल एक मान्य जावास्क्रिप्ट फ़ाइल है।
प्रेड 7or

यह तब काम करेगा जब फ़ाइल सामग्री मान्य जावास्क्रिप्ट है लेकिन एक्सटेंशन ts है। नोड को परवाह नहीं है कि एक्सटेंशन क्या है, जब तक सामग्री मान्य जावास्क्रिप्ट है।
SnnSnn
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.