কমান্ড লাইন থেকে টাইপস্ক্রিপ্ট ফাইলগুলি কীভাবে চালানো যায়?


206

আমি এর উত্তর খুঁজে পেতে আশ্চর্যজনকভাবে খুব কঠিন সময় পার করছি। প্লেইন নোড.জেএস দিয়ে, আপনি node path/to/file.jsকফিস্ক্রিপ্ট coffee hello.coffeeএবং ES6 এর সাথে যে কোনও জেএস ফাইল চালাতে পারেন babel-node hello.js। টাইপস্ক্রিপ্ট দিয়ে আমি কীভাবে এটি করব?

আমার প্রকল্পে একটি রয়েছে tsconfig.jsonযা ব্রাউজারের জন্য একটি দুর্দান্ত ছোট বান্ডিল তৈরি করতে ওয়েবপ্যাক / টিএস-লোডার দ্বারা ব্যবহৃত হয়। আমার আগে কনসোল থেকে একটি বিল্ড স্টেপ রানের দরকার আছে, যদিও .tsএটি প্রকল্পে ব্যবহৃত কিছু ফাইল স্কিমা তৈরি করতে ব্যবহার করবে, তবে আমি সংকলন না করে একক টাইপসক্রিপ্ট ফাইল চালাতে সক্ষম হতে পারি না বলে মনে করি পুরো প্রকল্প।

উত্তর:


268

টাইপস্ক্রিপ্ট দিয়ে আমি কীভাবে এটি করব

আপনি tscব্যবহার করে ঘড়ি মোডে দৌড়াতে ছেড়ে দিতে পারেন tsc -w -p .এবং এটি .jsআপনার জন্য লাইভ ফ্যাশনে ফাইল তৈরি করবে , যাতে আপনি node foo.jsস্বাভাবিকের মতো চালাতে পারেন

টিএস নোড

টিএস-নোড রয়েছে: https://github.com/TypeStrong/ts-node যা ফ্লাইতে কোডটি সংকলন করবে এবং নোডের মাধ্যমে চালাবে 🌹

npx ts-node src/foo.ts

10
tsc ডিস্কে জেএস লিখেছেন। টিএস-নোডের এটি করার দরকার নেই এবং
— ফ্লাইতে

1
কেবলমাত্র টিএস-নোড আমদানি করা মডিউলগুলি থেকে লগ কনসোল করে না rem উদাহরণস্বরূপ: আপনি যদি ts-node ফাইল 1.ts এবং file1.ts অভ্যন্তরীণভাবে file2.ts ব্যবহার করেন তবে ফাইল 2.ts থেকে কনসোল লগগুলি লগ করা হবে না।
— শাদাব ফয়েজ

1
একটি রেড হেরিং সতর্ক হতে আমি ছুটে গিয়েছিলাম এবং আমাকে বিভ্রান্ত করছিলাম। আমার কাছে একটি সাধারণ টাইপসক্রিপ্ট ফাইল test.tsছিল যা কখনও স্থানান্তরিত হয়নি এবং কোডের একক লাইন ছিল: console.log('hello');এতে। আমি node test.tsকমান্ড লাইন থেকে দৌড়ছিলাম এবং এটি 'হ্যালো'কে আউটপুট করে কাজ করেছিল যা আমাকে বিভ্রান্ত করছে। ভাল যদি ফাইলটি নিখুঁতভাবে বৈধ জাভাস্ক্রিপ্ট হয় এবং আপনি node myFile.tsএটি চালনা করেন তবে এটি কার্যকর হয় । তবে আমি টাইপস্ক্রিপ্ট কোডটি যুক্ত করার মিনিটের হিসাবে এটি ভাল ব্যবহারের ক্ষেত্রে নয় তবে এটি চালানোর চেষ্টা করার পরে আমি একটি ত্রুটি পেয়েছি যা আমি প্রত্যাশা করি। আমার ইচ্ছা নোড .ts ফাইল চালানোর সময় সতর্কতা / ত্রুটি ঘটায়।
— এটকনওয়ে

3
ts-node FTW। npm install -g ts-nodeতোলে ts-node your-script.tsএকটি হাওয়া।
— সর্বদা


41

আমরা নিম্নলিখিত পদক্ষেপ আছে

  1. প্রথমে আপনাকে টাইপস্ক্রিপ্ট ইনস্টল করতে হবে

    এনপিএম ইনস্টল -জি টাইপ স্ক্রিপ্ট

2. একটি ফাইল হেলিওরল্ড.টিস তৈরি করুন

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

কমান্ড প্রম্পট ওপেন করুন এবং নিম্নলিখিত কমান্ড টাইপ করুন

tsc helloworld.ts

  1. আবার কমান্ড চালান

নোড হেলিওরল্ড.জেএস

  1. কনসোল-এ ফলাফল প্রদর্শিত হবে

2
আপনার ক্ষেত্রে, আমরা .js ফাইলটি .ts ফাইল নয় run
— মেনাই আলা এডডাইন - আলাদিন

20

উপরের @ আমোদ উত্তরে যুক্ত করতে, আপনি যদি নিজের কোডটি সংকলন করতে এবং পরিচালনা করতে একটি কমান্ড লাইন ব্যবহার করতে চান তবে আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন:

উইন্ডোজ:

tsc main.ts | node main.js

লিনাক্স / ম্যাকোস:

tsc main.ts && node main.js

2
npm install typescript -gtscসিএলআই ইনস্টল করতে
— 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

কেবল সহায়ক তথ্য - এখানে রয়েছে নতুনতম টাইপস্ক্রিপ্ট / জাভাস্ক্রিপ্ট রানটাইম ডেনো ।

এটি নোডের স্রষ্টা রায়ান ডাহল তৈরি করেছিলেন, যদি তিনি নতুন করে শুরু করতে পারেন তবে তিনি আলাদাভাবে কী করবেন তার উপর ভিত্তি করে।


1
এখানে একটি উদাহরণ রয়েছে:deno run https://deno.land/std/examples/welcome.ts
— মোজেয়

5

নিজেকে একটি সাধারণ ব্যাশের মোড়কে লিখতে সাহায্য করতে পারে।

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

3

অন্যান্য উত্তরগুলির মধ্যে কোনটিই মডিউলগুলি এবং বিশেষত আধুনিক ইএস মডিউলগুলি ব্যবহার করে এমন কোনও টাইপস্ক্রিপ্ট স্ক্রিপ্ট কীভাবে চালাবে তা আলোচনা করে না।

প্রথমত, ২০২০ সালের মার্চ পর্যন্ত টিএস-নোড সেই পরিস্থিতিতে কাজ করে না So সুতরাং আমরা tscএরপরে স্থির করবnode ।

দ্বিতীয়ত, টাইপস্ক্রিপ্ট এখনও .mjsফাইল আউটপুট করতে পারে না । সুতরাং আমরা .jsফাইল এবং "type": "module"মধ্যে নিষ্পত্তি করবpackage.json ।

তৃতীয়ত, আপনি এক্সটেনশনটি importনির্দিষ্ট না করেই পরিষ্কার লাইনগুলি চান .js(যা .tsফাইলগুলিতে বিভ্রান্তিকর হবে ):

import { Lib } from './Lib';

আচ্ছা, এটা তুচ্ছ নয়। আপনি পতাকা ব্যবহার না করে নোডের আমদানিতে নির্দিষ্টকরণের প্রয়োজনexperimental-specifier-resolution=node । এই ক্ষেত্রে, এটি নোড সন্ধান করতে সক্ষম করবে Lib.jsবা Lib/index.jsআপনি যখন কেবলমাত্র নির্দিষ্ট ./Libকরে specifyimport লাইন।

চতুর্থত, এখনও একটি বাধা আছে : আপনার প্যাকেজের চেয়ে যদি আপনার আলাদা mainফাইল নাম থাকে তবে index.jsনোড এটি খুঁজে পাবেন না ।

ট্রান্সপ্লাইং জিনিসগুলি ভ্যানিলা নোড চালানোর চেয়ে অনেক বেশি মেসেঞ্জার করে তোলে।

এখানে একটি আধুনিক টাইপস্ক্রিপ্ট প্রকল্প কাঠামো সহ একটি নমুনা রেপো রয়েছে , ES মডিউল কোড তৈরি করছে।


1
অনেক অনেক ধন্যবাদ, এটি আজই করার চেষ্টা করার সময় আমি প্রায় সমস্যার মুখোমুখি হয়েছি!
— dgellow

3

জিশান আহমদের জবাবের মতো আমিও মনে করি ts-nodeপথ চলার উপায়। আমি একটি শেবাং যুক্ত করব এবং এটি সম্পাদনযোগ্য করে তুলব, যাতে আপনি এটি সরাসরি চালাতে পারেন।

  1. টাইপস্ক্রিপ্ট এবং টিএস-নোড বিশ্বব্যাপী ইনস্টল করুন:

    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)}`)

    আপনি দেখতে পাচ্ছেন, লাইন একের কাছে টিএস-নোডের শেবাং রয়েছে

  3. কেবলমাত্র ফাইলটি চালিয়ে সরাসরি চালান

    $ ./hello
    Result: Hello, root

কিছু নোট:


আপডেট 2020-04-06: মন্তব্যে দুর্দান্ত ইনপুট পরে কিছু পরিবর্তন: টিএস-নোডের ইস্যুগুলির ts-node-scriptপরিবর্তে পরিবর্তে ব্যবহারের জন্য শেবাং আপডেট করুন ts-node।



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 2018 সালে নোড .js এবং .ts উভয়কেই স্বীকৃতি দেয় । সুতরাং, node file.tsদৌড়াদৌড়িও চলবে।


19
নোড যেকোন ফাইলকে জাভাস্ক্রিপ্ট হিসাবে ব্যাখ্যা করে, সুতরাং এটি তখনই কাজ করবে যদি প্রশ্নে টাইপসক্রিপ্ট ফাইলটি একটি বৈধ জাভাস্ক্রিপ্ট ফাইল হয়।
— Preda7or

ফাইলের বিষয়বস্তু বৈধ জাভাস্ক্রিপ্ট তবে এক্সটেনশন টিএস থাকলে এটি কাজ করবে। নোড এক্সটেনশন কী তা বিবেচনা করে না, যতক্ষণ না সামগ্রী বৈধ জাভাস্ক্রিপ্ট হয়।
— SnnSnn
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.