
Eğer Python’dan benim kadar nefret ediyorsanız bunun nedeni muhtemelen bağımlılıklardır.
Bir Python uygulamasını çalıştırdığımda kabaca %23-319 oranında bağımlılıklar nedeniyle çalışmıyor ve sonunda 17 gerçek ve sanal Python ortamımdan hangisinin gerçekten aktif olduğunu bulmaya çalışıyorum.
Kullanma uv çünkü her şey çok daha iyi, ancak programlama dünyamın tamamını TypeScript’e taşıdığım için artık şunu kullanıyorum: bunbunun yerine otomatik yükleme özelliği. Ve aslında biraz daha iyi.
Farklı Yaklaşımlar, Aynı Hedef
Python’un uv ve Bun, “bağımsız uygulama” sorununu, gereksinimleri programın içine yerleştirerek çözüyorlar, ancak bunu farklı şekillerde yapıyorlar…
Python, bağımlılıkları bildirmek için özel sihirli yorumlar kullanır:
# /// script
# dependencies = ["requests", "rich"]
# ///
import requests
# script continues...1
2
3
4
5
6
Harika çalışıyor, ama bana süper hack-y gibi geliyor.
Sanki kaçakçılık yapıyoruz Python’u bir kez olsun gerçekten çalışması için kandırmak için bağımlılık yükü.
Bun’un Yaklaşımı: Normal şekilde içe aktarın
Severim bunyaklaşımı fazla daha iyi. İthalatları sanki onlardan utanmıyormuş gibi yazıyor!
#!/usr/bin/env bun
// Just import what you need - Bun auto-installs!
import axios from 'axios';
import chalk from 'chalk';
console.log(chalk.cyan.bold('\n🚀 Bun Auto-Install Demo\n'));
// Fetch a random joke
try {
console.log(chalk.yellow('Getting a random joke...'));
const jokeResponse = await axios.get('https://official-joke-api.appspot.com/random_joke');
const joke = jokeResponse.data;
console.log(chalk.green(`\n${joke.setup}`));
console.log(chalk.blue(`${joke.punchline} 😄\n`));
} catch (error) {
console.log(chalk.red('Failed to fetch joke\n'));
}
v// Fetch a random activity
try {
console.log(chalk.yellow('Finding something to do...'));
const activityResponse = await axios.get('https://bored-api.appbrewery.com/random');
const activity = activityResponse.data;
console.log(chalk.magenta(`Activity: ${activity.activity}`));
console.log(chalk.dim(`Type: ${activity.type} | Participants: ${activity.participants}\n`));
} catch (error) {
console.log(chalk.red('Failed to fetch activity\n'));
}
// Show a random number to prove it runs fresh
const randomNum = Math.floor(Math.random() * 1000);
console.log(chalk.green(`Random number: ${randomNum}`));
// Show that this runs fresh each time
console.log(chalk.dim('\nRun again for different results!'));
console.log(chalk.dim('No package.json or npm install needed 🎉\n'));1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Komut Dosyasını Çalıştırma
# Make it executable
chmod +x test.ts
# Run it directly - dependencies auto-install!
./test.ts
# Or just use bun
bun test.ts1
2
3
4
5
6
7
8
Komut dosyasını ilk kez çalıştırdığınızda, bun otomatik olarak:
- Eksik paketleri algılar
- Bunları indirir ve yükler
- Gelecekteki çalıştırmalar için bunları önbelleğe alır
- Komut dosyanızı çalıştırır
HAYIR npm installHAYIR package.jsonkurulum yok; sadece çalıştırın.
Örnek Çıktı
🚀 Bun Auto-Install Demo
Getting a random joke...
Did you watch the new comic book movie?
It was very graphic! 😄
Finding something to do...
Activity: Explore a park you have never been to before
Type: recreational | Participants: 1
Random number: 294
Run again for different results!
No package.json or npm install needed 🎉1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Oh, ve bu nükleer bir hız.
bun test.ts 0.08s user 0.06s system 29% cpu 0.469 total1
Paket servisim
Bu, Python ve TypeScript arasındaki daha büyük bir tartışmaya gidiyor, ancak bunun ikincisinin işleri yapmanın daha doğal, modern bir yolu olduğu başka bir örnek olduğunu düşünüyorum.
Her şeyi TypeScript yapın.