มาใช้ Package management สำหรับ deno กันเถอะ
NotAllow
Posted on May 30, 2020
หลังจากที่ผมได้ลองเล่น Deno มาได้สักพักก็ไปนึกถึง npm ที่เป็น Package management แล้วก็มาเจอ Trex
ซึ่งอ่านว่าทีเร็กซ์ นั้นเป็นตัวจัดการที่ทำหน้าที่คล้าย npm เลย แต่ก็มีสิ่งที่เราต้องรู้จักก่อนที่จะใช้ Trex
นั่นคือ import_map.json
import_map.json
import_map.json คืออะไร ? มันก็คือ ไฟล์ที่ไว้กำหนด import map กับ modules สำหรับ deno แต่ตอนนี้เขาบอกว่ายังไม่ stable แต่ก็ลองมาใช้กันก่อนครับ มาดูข้อจำกัดตอนนี้กัน
- single import map
- no fallback URLs
- ไม่ support
std:
namespace - supports ไฟล์ที่เป็น :, http: และ https: schemes เท่านั้น
มาดูตัวอย่างกัน ในทีนี้ผมจะใช้ framework oak ในการทำ http server นะครับ
ผมสร้างไฟล์ index.ts
ตาม code ด้านล่างนี้
import { Application } from 'https://deno.land/x/oak/mod.ts'
const app = new Application()
app.use(ctx => {
ctx.response.body = 'Hello World!'
})
await app.listen({ port: 4000 })
แต่ถ้าเรากำหนดไฟล์ import_map.json
เพื่อการ map modules ที่เราเรียกใช้จะได้ตามนี้ครับ
code สำหรับ import_map.json
{
"imports": {
"oak": "https://deno.land/x/oak/mod.ts"
}
}
แล้วเราก็มาเปลี่ยน code ที่ไฟล์ index.ts ที่ import กันครับจะได้ code ตามตัวอย่างข้างล่างนี้
import { Application } from 'oak'
const app = new Application()
app.use(ctx => {
ctx.response.body = 'Hello World!'
})
await app.listen({ port: 4000 })
เพียงเท่านี้เราก็จะได้ใช้ import map เรียบร้อยแล้วครับ งั้นมาลองรันกันครับ
วิธีการรัน สิ่งที่จะต้องใช้ตอน deno run คือ
- --allow-net
- --importmap=import_map.json (ไว้กำหนดไฟล์ importmap)
- --unstable (importmap ยังไม่ stable เลยต้องกำหนด permission ว่ารันแบบ unstable)
$ deno run --allow-net --importmap=import_map.json --unstable index.ts
เมื่อสั่ง deno run จากคำสั่งข้างต้นเสร็จเราลองเรียก http://localhost:4000
ผลลัพธ์ถ้าถูกต้องจะได้ Hello World!
OK ! งั้นต่อมาเรามาใช้ Package management สำหรับ deno กัน สิ่งที่ผมจะใช้คือ Trex
นั่นเอง
Trex
ก่อนอื่นเรามาติดตั้งกันครับ (ใช้ได้สำหรับ deno version 1.0.0 ขึ้นไปเท่านั้น)
$ deno install --allow-read --allow-write --allow-net --allow-run --unstable https://deno.land/x/trex/Trex.ts
หลังจากติดตั้งรองรัน Trex ดูครับโดยการเช็ค Trex version
$ Trex --version
ผลลัพธ์ที่ได้
Trex:
Version v0.2.0
༼ つ ◕_◕ ༽つ
โอเคน่าจะใช้งานได้แล้วครับ 👍
ก่อนอื่นเราลองลบไฟล์ import_map.json
ของเราที่สร้างเองเมื่อสักครู่นี้ก่อนครับ
เมื่อลบแล้วมาติดตั้ง package กัน
คำสั่งก็เหมือน ๆ กับ npm เลยครับ
$ Trex install --map {modules name} // or Trex i --map {modules name}
ผมจะ install oak มาใช้งานนะครับ
$ Trex i --map oak
เมื่อรันเสร็จแล้วก็จะมีไฟล์ import_map.json
ที่ Trex ได้สร้างขึ้นมาพร้อมกับ code ที่ map กับ modules
เสร็จแล้วก็ลองรันไฟล์ index.ts
ดูครับ
$ deno run --allow-net --importmap=import_map.json --unstable index.ts
เปิด Browser ขึ้นมาเข้า http://localhost:4000
ผลลัพธ์ก็น่าจะได้
Hello World!
มานะครับ
จะลบ modules ที่ map ก็แค่ใช้
$ Trex delete {modules name}
สรุป
ข้อดีของ Trex คือสามารถกำหนด import map ให้เราโดยอัตโนมัติให้เรา แต่ถ้าเราไม่ใช้ก็ต้องกำหนด import map ด้วยตัวเอง ยังไงซะหวังว่าอนาคตน่าจะ stable และมีอะไรที่น่าสนใจอีกครับ หวังว่าบทความนี้จะมีประโยชน์ต่อผู้อ่านนะครับ ขอบคุณที่ยอมอ่านจนจบครับ 😀
Posted on May 30, 2020
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.