Thứ tư, 14/05/2014 | 00:00 GMT+7

Cách sử dụng npm để xây dựng và xuất bản các gói Node.js trên server Linux

Node.js là một nền tảng Javascript phổ biến cho lập trình phía server cho phép bạn xây dựng và chạy các ứng dụng web một cách nhanh chóng.

Trong hướng dẫn này, ta sẽ nói về cách sử dụng npm , một hệ thống quản lý gói Node.js. Trong hướng dẫn trước đây, ta đã thảo luận về cách cài đặt Node.js trên server Ubuntu 14.04 . Ta cũng đã thảo luận về cách sử dụng npm như một người tiêu dùng gói bằng cách tìm kiếm và mua các gói .

Bây giờ, ta sẽ đề cập đến cách sửa đổi cài đặt cấu hình, tạo và xuất bản một gói cũng như cách tương tác với repository npm. Hãy bắt tay ngay vào.

Quản lý cài đặt cấu hình

Để kiểm soát hành vi của npm, bạn có thể điều chỉnh cài đặt cho công cụ. Có khá nhiều cách được tích hợp trong npm để thực hiện việc này.

Liệt kê các Cài đặt Cấu hình Hiện tại

Đầu tiên, hãy xem cài đặt hiện tại của ta là gì. Ta có thể làm điều này bằng lệnh :

npm config ls 

; cli configs registry = "https://registry.npmjs.org/" user-agent = "npm/1.4.9 node/v0.11.13 linux x64"  ; node bin location = /home/demouser/.nvm/v0.11.13/bin/node ; cwd = /home/demouser/projects/test_package ; HOME = /home/demouser ; 'npm config ls -l' to show all defaults. 

Danh sách cài đặt này được lấy từ nhiều nơi khác nhau, bao gồm cả môi trường hoạt động hiện tại. Nó được xây dựng khi lệnh được chạy. Bạn có thể kiểm tra bằng cách chuyển cờ -g . Nó sẽ đột nhiên hiển thị rằng tùy chọn " global " đã được đặt:

<pre>
npm config ls -g
</pre>
<pre>
; cli cấu hình
<span class = “highlight”> global = true </span>
registry = “ https://registry.npmjs.org/
user-agent = “npm / 1.4.9 node / v0.11.13 linux x64”

</pre>

Ngay bây giờ, NPM không kéo bất kỳ thông tin từ các file cấu hình của nó bởi vì không file cấu hình đã được tạo ra được nêu ra. Nó chỉ đơn giản là thu thập thông tin từ môi trường của nó (thư mục hiện tại, v.v.) và sử dụng các ứng dụng mặc định.

Mặc dù vậy, ta không hiển thị hầu hết các giá trị mặc định với lệnh này. Để có thêm thông tin mở rộng, ta sẽ phải vượt qua cờ -l :

npm config ls -l 

; cli configs long = true registry = "https://registry.npmjs.org/" user-agent = "npm/1.4.9 node/v0.11.13 linux x64"  ; default values always-auth = false bin-links = true browser = null ca = null . . . 

Nhận và cài đặt các giá trị cụ thể

Như bạn thấy , có rất nhiều cặp thông tin key-value . Đây là cách ta làm việc với các giá trị cấu hình trong npm. Ví dụ: nếu ta muốn xem giá trị hiện tại của khóa “editor”, ta có thể nhập:

npm config get editor 

vi 

Nếu ta muốn thay đổi giá trị này, ta có thể dễ dàng thực hiện điều đó bằng lệnh thông tin như sau:

<pre>
npm config set editor <span class = “highlight”> vim </span>
</pre>

Điều này sẽ làm được hai điều. Nó sẽ overrides giá trị mặc định (vi) bằng giá trị mới (vim) của ta và nó cũng sẽ tạo file cấu hình của ta , vì nó là giá trị tùy chỉnh đầu tiên của ta .

Tệp cấu hình của ta được viết ở đâu? Tại sao ta không hỏi npm:

npm config get userconfig 

/home/demouser/.npmrc 

Nếu ta đặt giá trị bằng cú pháp config set -g , chúng sẽ được ghi vào file globalconfig của ta . Ta có thể tìm nơi lưu trữ thông tin này bằng lệnh :

npm config get globalconfig 

/home/demouser/.nvm/v0.11.13/etc/npmrc 

Vị trí file của bạn sẽ khác nhau tùy thuộc vào phương pháp bạn đã sử dụng để cài đặt Node.js. , file này sẽ không tồn tại cho đến khi bạn đi lạc khỏi các giá trị mặc định ở cấp độ chung.

Đối với các file mà không tồn tại, nếu bạn muốn chỉnh sửa nó với soạn thảo của bạn, bạn có thể thực hiện bằng cách gõ:

npm config edit 

Điều này sẽ không hoạt động nếu file chưa được tạo (theo cách thủ công hoặc bằng cách đặt giá trị không mặc định trong npm).

Bạn cũng có thể đặt các tùy chọn cấu hình khác nhau cho một lệnh cụ thể khi bạn đang gọi lệnh đó bằng cách sử dụng cú pháp sau:

<pre>
npm <span class = “highlight”> subcommand </span> - <span class = “highlight”> key </span> <span class = “highlight”> value </span>
</pre>

Các khu vực khác nơi các giá trị được lấy từ là file package.json cho chính dự án và các biến môi trường.

Tạo một gói với npm

Ta đã tìm hiểu một chút về cách sử dụng npm làm trình quản lý gói tiêu chuẩn để có được và quản lý các gói và phụ thuộc mà ứng dụng của bạn cần . Tuy nhiên, bạn cũng có thể sử dụng npm để giúp bạn đóng gói và chia sẻ ứng dụng hoặc thư viện của bạn .

Một trong những điều đầu tiên mà npm giúp là tạo file package.json cho dự án của bạn. Trước khi ta bắt đầu, bạn nên xem trang trợ giúp về việc này để làm quen với các trường mà bạn sẽ được hỏi:

npm help json 

Khi bạn đã ở trong folder ứng dụng của bạn , bạn có thể bắt đầu:

cd ~/projects/test_package npm init 

Điều này sẽ nhắc bạn về thông tin mà nó cần để xây dựng một file gói cho bạn. Nó sẽ lấy một số dấu hiệu từ môi trường để điền các giá trị mặc định. Phiên của bạn có thể trông giống như sau:

name: (test_package)  version: (0.0.0) 0.0.1 description: A test package entry point: (index.js) index.js test command: echo "test" git repository: http://fake.git.repo.com keywords: test author: me license: (ISC) GLP About to write to /home/demouser/projects/test_package/package.json:  {   "name": "test_package",   "version": "0.0.1",   "description": "A test package",   "main": "index.js",   "dependencies": {     "express": "^4.2.0"   },   "devDependencies": {},   "scripts": {     "test": "echo \"test\""   },   "keywords": [     "test"   ],   "author": "me",   "license": "GLP" }  Is this ok? (yes) yes 

Nếu bạn phải cài đặt các phần phụ thuộc bổ sung sau khi đã tạo file package.json của bạn , bạn nên cài đặt chúng bằng cờ --save , cờ này sẽ cập nhật danh sách các phần phụ thuộc trong file package.json của bạn.

Nếu gói của bạn yêu cầu version rất cụ thể, bạn có thể sử dụng shrinkwrap subcommand. Thông thường, file gói đặt các gói hiện tại của bạn làm version khả thi tối thiểu cần thiết để xây dựng. Với một file co lại, các version này là cụ thể và bị khóa.

Bạn có thể tạo file này bằng:

npm shrinkwrap 

Điều này sẽ tạo ra một file có tên npm-shrinkwrap.json với thông tin gói rất chi tiết cho từng phụ thuộc và theo cách đệ quy. Nếu môi trường ứng dụng của bạn mỏng manh, đây là một công cụ cần thiết.

Tương tác với Trang web npm thông qua npm

Dự án npm duy trì một trang web gồm các gói tại npmjs.org . Bạn có thể tương tác với trang web này thông qua công cụ dòng lệnh npm. Ta đã thảo luận về cách bạn có thể tìm kiếm các gói, nhưng cũng có nhiều chức năng hơn.

Đầu tiên, nếu bạn chưa đăng ký account , bạn có thể thực hiện việc này từ bên trong giao diện npm bằng lệnh :

npm adduser 

Bạn cần chọn tên user , password và địa chỉ email. Chúng sẽ được đăng lên trang web, giống như khi bạn đăng ký thông qua trình duyệt web.

Nếu bạn kiểm tra cấu hình của bạn , bạn sẽ thấy chi tiết account mới của bạn :

npm config ls 

. . . ; userconfig /home/demouser/.npmrc editor = "vim" email = "demouser@domain.com" username = "demouser" . . . 

Xuất bản Gói của bạn

Khi bạn đã tạo một gói mà bạn muốn chia sẻ với cộng đồng Node.js lớn hơn, trang web npm là một nơi tuyệt vời để bắt đầu.

May mắn là npm đi kèm với một số chức năng trợ giúp sẽ giúp bạn bắt đầu.

Nếu bạn đang ở trong folder của gói, bạn chỉ cần nhập:

npm publish 

Điều này sẽ đẩy gói của bạn lên trang web npm. Sự thành công của hoạt động này phụ thuộc vào gói của bạn có tên và số version duy nhất. Nếu bạn đến đó và tìm kiếm gói của bạn , nó sẽ được liệt kê giống như bất kỳ gói Node.js nào khác.

Gắn thẻ Video tải lên của bạn

Bạn có thể gắn thẻ các bản phát hành cụ thể của các gói của bạn bằng cách sử dụng lệnh phụ tag . Chúng được dùng thay cho số version trong quá trình cài đặt và thông số kỹ thuật phụ thuộc.

Theo mặc định, npm sẽ bao gồm một thẻ có nhãn “mới nhất” cho bất kỳ gói nào bạn xuất bản. Đây chỉ là sự thúc đẩy mới nhất . Bạn có thể thấy điều này bằng lệnh :

npm config get tag 

latest 

Điều này nghĩa là bạn có thể yêu cầu cụ thể version mới nhất bằng lệnh những thứ như:

npm install package@latest 

Nếu bạn muốn thêm thẻ bổ sung vào một trong các kết hợp gói / version của bạn , bạn có thể nhập thông tin như :

<pre>
npm tag <span class = “highlight”> package </span> @ <span class = “highlight”> version </span> <span class = “highlight”> tag_name </span>
</pre>

Điều này sẽ cho phép bạn tham chiếu version mà bạn đã gắn thẻ bằng “tag_name” thay vì số version .

Thay đổi quyền sở hữu các gói

Theo mặc định, khi bạn xuất bản một gói, bạn sẽ được cấp quyền sở hữu gói đó.

Bạn có thể xác minh điều này bằng lệnh :

<pre>
npm chủ sở hữu ls <span class = "highlight"> package_name </span>
</pre>
<pre>
demouser < demouser@domain.com >
</pre>

Nếu bạn muốn thêm những người khác vào dự án, điều này sẽ cho phép họ thực hiện các sửa đổi, bạn có thể ra lệnh như sau:

<pre>
chủ sở hữu npm thêm <span class = “highlight”> tên user </span>
</pre>

Bạn cũng có thể làm ngược lại điều này và xóa quyền khỏi những user như thế này:

<pre>
npm chủ sở hữu rm <span class = “highlight”> tên user </span>
</pre>

Tại thời điểm viết bài này, tất cả các chủ sở hữu đối với một gói đều có quyền như nhau, vì vậy không thể chỉ định kiểm soát truy cập chi tiết hơn.

Loại bỏ và không dùng gói

Đôi khi, có một thay đổi quan trọng trong gói của bạn khiến bạn cần phải ngừng sử dụng các version cũ hơn. Ví dụ: có thể đã xảy ra sự cố bảo mật.

Với npm, bạn có thể dễ dàng từ chối version hoặc phạm vi version trong gói của bạn bằng lệnh nội dung như sau:

<pre>
npm không dùng nữa <span class = “highlight”> tên gói </span> @ “<span class =" highlight "> version hoặc dải ô </ span" "<span class =" highlight "> thông báo không dùng nữa cho user </span> “
</pre>

Thông báo bạn chọn đưa vào sẽ được hiển thị dưới dạng cảnh báo cho mọi user đang cài đặt các version gói bạn đã đánh dấu.

Nếu bạn muốn gỡ bỏ hoàn toàn gói của bạn , bạn có thể thực hiện bằng cách hủy xuất bản nó. Bạn có thể không nên làm điều này nếu gói của bạn đã được người khác sử dụng và npm khuyến khích bạn không dùng gói đó nữa. Bạn cũng có thể hủy xuất bản một version cụ thể, nhưng vẫn giữ nguyên đề xuất đó.

Một điều quan trọng cần lưu ý là ngay cả khi bạn hủy xuất bản một gói và nó bị xóa khỏi trang web, thì các tổ hợp tên / version mà nó nắm giữ sẽ không thể được sử dụng lại. Điều này nhằm đảm bảo mọi người không vô tình kéo nhầm các gói hàng.

Cú pháp để hủy xuất bản tác phẩm của bạn là:

<pre>
npm hủy xuất bản <span class = "highlight"> package_name </span> @ <span class = “highlight”> version </span>
</pre>

Bạn có thể bỏ @version nếu bạn muốn xóa toàn bộ gói. Trong trường hợp này, bạn sẽ phải thêm cờ --force để tránh việc vô tình xóa toàn bộ dự án của bạn:

<pre>
npm hủy xuất bản –force <span class = “highlight”> package_name </span>
</pre>

Kết luận

Đến đây bạn đã nắm được khá sâu về cách tận dụng sức mạnh của npm trong các dự án Node.js của bạn . Tiện ích npm được dùng để hỗ trợ trong hầu hết các lĩnh vực phát triển dự án, từ xây dựng file và thu thập các phụ thuộc, đến xuất bản các gói và triển khai vào production .

<div class = “author”> Bởi Justin Ellingwood </div>


Tags:

Các tin liên quan

Cách sử dụng npm để quản lý gói Node.js trên server Linux
2014-05-14
Cách khắc phục sự cố trang web thường gặp trên server Linux
2014-05-09
Cách Fail2Ban hoạt động để bảo vệ các dịch vụ trên server Linux
2014-05-07
Cách cài đặt Linux, Nginx, MySQL, PHP (LEMP) trên Ubuntu 14.04
2014-04-25
Cách cài đặt Linux, Apache, MySQL, PHP (LAMP) trên Ubuntu 14.04
2014-04-18
Thiết lập server ban đầu với Ubuntu 14.04
2014-04-17
Giới thiệu về công cụ nén tệp trên server Linux
2014-04-15
Cách tải phần mềm và nội dung lên VPS Linux của bạn
2014-04-14
Cách bảo vệ server của bạn chống lại lỗ hổng bảo mật OpenSSL.
2014-04-08
Cách cấu hình mail server bằng Postfix, Dovecot, MySQL và SpamAssassin
2014-04-01