প্রকল্প সম্পর্কে
# esm.sh
আধুনিক ওয়েব ডেভেলপমেন্টের জন্য একটি নো-বিল্ড JavaScript CDN।
## সংক্ষিপ্ত বিবরণ
esm.sh কোনো ইনস্টলেশন বা বিল্ড ধাপ ছাড়াই সরাসরি HTTP URL থেকে JavaScript মডিউল ইমপোর্ট করার সুযোগ দেয়। এটি সোর্স কোডকে সার্ভার সাইডে ব্রাউজার-সামঞ্জস্যপূর্ণ ES মডিউলে রূপান্তর করে, ফলাফল ক্যাশ করে এবং একটি গ্লোবাল Cloudflare CDN থেকে পরিবেশন করে।
## রেজিস্ট্রি সমর্থন
- **NPM**: নাম, ভার্সন বা ট্যাগ দিয়ে যেকোনো প্যাকেজ ইমপোর্ট করুন
- **JSR**: `/jsr/` দিয়ে শুরু হওয়া Deno-বান্ধব রেজিস্ট্রি
- **GitHub**: `/gh/` প্রিফিক্স দিয়ে রিপোজিটরি থেকে সরাসরি ইমপোর্ট
- **pkg.pr.new**: `/pr/` প্রিফিক্স দিয়ে PR থেকে প্রিভিউ বিল্ড
## প্রধান বৈশিষ্ট্য
### জিরো-বিল্ড ইমপোর্ট
```js
import React from "https://esm.sh/react@19.2.4";
import { encodeBase64 } from "https://esm.sh/jsr/@std/encoding@1.0.0/base64";
```
### সোর্স রূপান্তর
বিল্ড টুল ছাড়াই ব্রাউজারে স্বয়ংক্রিয়ভাবে `.ts(x)`, `.vue` এবং `.svelte` ফাইল রূপান্তর করে।
### ডিপেন্ডেন্সি ম্যানেজমেন্ট
কোয়েরি প্যারামিটার দিয়ে ডিপেন্ডেন্সি ভার্সন নির্দিষ্ট করুন:
```js
import useSWR from "https://esm.sh/swr?deps=react@18.3.1";
```
ডিপেন্ডেন্সি অ্যালিয়াস করুন:
```js
import useSWR from "https://esm.sh/swr?alias=react:preact/compat";
```
### বান্ডলিং অপশন
- `?bundle=false` - ডিফল্ট বান্ডলিং নিষ্ক্রিয় করুন
- `?standalone` - সব ডিপেন্ডেন্সি একটি ফাইলে বান্ডল করুন
- `?raw` - অপরিবর্তিত সোর্স কোড পরিবেশন করুন
- `?exports=foo,bar` - নির্দিষ্ট এক্সপোর্টে ট্রি-শেক করুন
### বিল্ড কনফিগারেশন
বিল্ড টার্গেট ও অপশন নিয়ন্ত্রণ করুন:
```js
// ডেভেলপমেন্ট বিল্ড
import React from "https://esm.sh/react?dev";
// টার্গেট নির্দিষ্ট করুন
import React from "https://esm.sh/react?target=es2022";
// ESBuild অপশন
import foo from "https://esm.sh/foo?conditions=custom1,custom2";
import foo from "https://esm.sh/foo?keep-names";
```
### ইমপোর্ট ম্যাপ ইন্টিগ্রেশন
বেয়ার স্পেসিফায়ার রেজোলিউশনের জন্য HTML ইমপোর্ট ম্যাপের সাথে কাজ করে:
```html
<script type="importmap">
{
"imports": {
"react": "https://esm.sh/react@19.2.4"
}
}
</script>
```
ব্রাউজার রেজোলিউশনের জন্য ইমপোর্টগুলোকে বেয়ার স্পেসিফায়ার হিসেবে রাখতে `?external` বা `*` প্রিফিক্স ব্যবহার করুন।
### অতিরিক্ত বৈশিষ্ট্য
- **CSS ইমপোর্ট**: JS-এ CSS ইমপোর্ট করা প্যাকেজের জন্য `?css` ফ্ল্যাগ
- **Web Workers**: ইনজেকশন সমর্থনসহ ওয়ার্কার লোডিংয়ের জন্য `?worker` কোয়েরি
- **Deno সামঞ্জস্য**: Node.js বিল্ট-ইন মডিউল (fs, os, net, ইত্যাদি) রিজলভ করে
- **TypeScript সমর্থন**: `X-TypeScript-Types` হেডারের মাধ্যমে স্বয়ংক্রিয় টাইপ ডেফিনিশন
- **tsx স্ক্রিপ্ট**: HTML-এ সরাসরি TSX লেখার জন্য 1KB স্ক্রিপ্ট
### ক্যাশ পার্জ
আপডেট হওয়া প্যাকেজের জন্য ক্যাশ করা বিল্ড রিফ্রেশ করুন:
- সঠিক ভার্সন সাথে সাথে রিবিল্ড হয়
- বেয়ার নাম পরবর্তী রিকোয়েস্টে ভার্সন পুনরায় রিজলভ করে
- প্রুফ-অফ-ওয়ার্ক চ্যালেঞ্জ অপব্যবহার প্রতিরোধ করে
### সেলফ-হোস্টিং
[হোস্টিং ডকুমেন্টেশন](./HOSTING.md) অনুসরণ করে নিজের ইনস্ট্যান্স ডিপ্লয় করুন।
## সীমাবদ্ধতা
বর্তমানে Node.js বা Bun রানটাইম দ্বারা সমর্থিত নয়।
## লাইসেন্স
MIT
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.