jsrosetta

Thư viện chuẩn

Quản lý module

npm của Node.js so với Go modules, Cargo (Rust), Swift Package Manager và Maven/Gradle (Java): cài, cập nhật, gỡ và export/import package.

Phiên bản tối thiểu
Node.js ≥ 19Go ≥ 1.16Rust ≥ 1.85Swift ≥ 6.0Java ≥ 25
Đã chạy thử trên
Node.js 24.12.0Go 1.27.1Rust 1.98.1Swift 6.2.4Java 25.0.4.1

Code Node.js là ES module: lưu file .mjs hoặc đặt "type": "module" trong package.json.

Mỗi hệ sinh thái đều có một file khai báo dependency (package.json, go.mod, Cargo.toml, Package.swift, pom.xml/build.gradle) và công cụ để quản lý nó. npm và crates.io (Rust) có registry trung tâm; Go module và Swift package thường chỉ là git repository — không cần publish qua registry nào (Go tải qua module proxy GOPROXY, SwiftPM tải thẳng qua URL git). Java tách biệt: package chỉ là namespace trong ngôn ngữ, dependency được Maven/Gradle quản lý qua pom.xml/build.gradle, còn JPMS (module-info.java, từ Java 9) là một lớp đóng gói/kiểm soát truy cập khác nữa, độc lập với cả hai.

Cài đặt, cập nhật và gỡ dependency

Việc cần làm npm (Node.js) Go modules Cargo (Rust) Swift Package Manager Maven (Java)
Khởi tạo file quản lý dependency npm init go mod init github.com/you/yourmodule cargo new/cargo init swift package init mvn archetype:generate
Cài một package npm install uuid go get github.com/google/uuid@v1.6.0 cargo add uuid -F v4 swift package add-dependency <url> --from <ver> thêm <dependency> vào pom.xml
Cài một CLI dùng toàn cục npm install -g <pkg> go install pkg@latest cargo install <crate> — (không chuẩn hoá; thường dùng Homebrew/Mint) — (thường dùng SDKMAN/jbang)
Cập nhật lên bản mới nhất npm install uuid@latest go get -u github.com/google/uuid cargo update -p uuid swift package update sửa version trong pom.xml
Gỡ một package npm uninstall uuid go get github.com/google/uuid@none cargo remove uuid xoá dependency khỏi Package.swift xoá <dependency> khỏi pom.xml
Dọn dependency không dùng npm prune go mod tidy — (không có lệnh chuẩn) — (không có lệnh chuẩn) mvn dependency:analyze (chỉ báo cáo)
Publish npm publish push code + tag release lên git repository cargo publish tag release trên git (Swift Package Index tự index) mvn deploy (lên Maven Central qua Sonatype)

Import một package bên ngoài

// import module
import { v4 as uuidv4 } from 'uuid'
 
const id = uuidv4()
console.log(id) // uuid ngẫu nhiên, khác nhau mỗi lần chạy

Export module của chính bạn

// greeter.js — export module
export function greet(name) {
  console.log(`hello ${name}`)
}
 
// main.js — import module vừa export
import { greet } from './greeter.js'
 
greet('bob') // hello bob

Tham khảo: github.com/miguelmota/golang-for-nodejs-developers#modules