Cách sử dụng npm để quản lý 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 trước đây, ta đã thảo luận về cách cài đặt Node.js trên server Ubuntu 14.04 . 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, để quản lý các gói Node.js trên  server  của bạn.  Sử dụng trình  này, bạn có thể dễ dàng đáp ứng dependencies  của ứng dụng, tìm kiếm các gói và quản lý cài đặt.
  Ta  sẽ  giả định  bạn đã cài đặt cả Node.js và npm . Bạn có thể làm theo hướng dẫn ở trên để chạy chúng trên Ubuntu 14.04. Tôi khuyên bạn nên sử dụng phương pháp nvm được đề cập trong hướng dẫn đó.
Nếu bạn chỉ muốn bắt đầu nhanh chóng, bạn cũng có thể tìm các gói trong repositories của Ubuntu 14.04 và cài đặt chúng bằng lệnh :
sudo apt-get update sudo apt-get install nodejs npm Làm quen với npm
Đến đây bạn đã cài đặt các thành phần cần thiết, ta có thể bắt đầu.
 Điều đầu tiên  ta  sẽ làm là thêm một số chức năng tự động hoàn thành npm vào shell của  ta  bằng cách thêm một số thông tin vào cuối file  cấu hình shell của  ta .
Bạn có thể thực hiện bằng cách gõ:
npm completion >> ~/.bashrc Bây giờ, chỉ cần nguồn file cấu hình để đọc lại các thay đổi mới bạn vừa thêm:
source ~/.bashrc Bây giờ, npm sẽ có thể tự động hoàn thành các lệnh của nó bằng cách nhấn [TAB] .
Để có định hướng cho bản thân, điều tốt nhất nên làm là làm quen với chức năng trợ giúp mà npm cung cấp. Để có ý tưởng về các lệnh con có sẵn trong npm, có thể chạy lệnh:
npm help Usage: npm <command>  where <command> is one of:     add-user, adduser, apihelp, author, bin, bugs, c, cache,     completion, config, ddp, dedupe, deprecate, docs, edit,     explore, faq, find, find-dupes, get, help, help-search, . . . Để có được một bản tóm tắt ngắn gọn về ý nghĩa của các lệnh con này, có thể chạy lệnh:
npm -l Usage: npm <command>  where <command> is one of:      adduser     npm adduser                 Then enter stuff at the prompts      bin         npm bin                 npm bin -g                 (just prints the bin folder) . . . Bạn có thể có được cái nhìn tổng quan hơn nhiều về từng lệnh này bằng cách sử dụng định dạng sau:
 <pre>
 npm help <span class = “highlight”> subcommand </span>
 </pre>
Thao tác này sẽ hiển thị một trang người đàn ông riêng cho lệnh con mong muốn.
Nếu bạn không biết lệnh nào bao gồm hành động bạn muốn thực hiện, bạn cũng có thể tìm kiếm trong các chủ đề trợ giúp bằng cách sử dụng thông tin như :
 <pre>
 npm help-search <span class = “highlight”> search_term </span>
 </pre>
Tìm kiếm thông tin về hệ thống của bạn
Đến đây bạn đã cài đặt và biết cách truy cập trợ giúp tích hợp của nó, ta có thể khám phá. Hãy bắt đầu bằng cách tìm hiểu cách yêu cầu thông tin về hệ thống của ta có liên quan đến npm.
Trước khi làm điều đó, ta nên nói về sự khác biệt giữa gói local và gói global .
Gói local và gói global
 Khi tạo ứng dụng Node.js, bạn tạo cấu trúc folder  để chứa ứng dụng  của bạn . Trong folder  của dự án, sẽ có một folder  con được gọi là node_modules . Điều này chứa tất cả các module  mà bạn có thể cài đặt cục bộ cho dự án  của bạn .
Hãy tạo một cấu trúc folder trống sẽ dùng làm folder gói của ta như một ví dụ:
mkdir -p ~/projects/test_package/node_modules cd ~/projects/test_package Các module  được cài đặt local   được dùng  trong dự án của bạn bằng cách sử dụng phương thức Javascript request require() thông thường. Đây là những gì bạn cần hầu hết thời gian cho một gói.
 Nếu bạn cần sử dụng khả năng dòng lệnh của gói, bạn nên cài đặt nó  trên phạm vi global  . Các ứng dụng được cài đặt  trên phạm vi global  được lưu trong folder  ~/.npm/ . Các chức năng dòng lệnh của chúng sẽ có sẵn cho tất cả các ứng dụng Node.js. Tuy nhiên, các gói được cài đặt  trên phạm vi global  không thể được sử dụng với Javascript request require() .
 Biết được điều này, bạn có thể thấy cách  ta  sẽ có chức năng được liên kết với từng loại gói cụ thể. Theo mặc định, hầu hết các lệnh npm sẽ  giả định  bạn đang nói về các gói local , trừ khi bạn chuyển các cờ -g hoặc --global .
Các gói danh sách được cài đặt trên hệ thống của ta
  Đến đây bạn  đã biết sự khác biệt giữa gói local  và gói  global ,  ta  có thể tiếp tục. Vì vậy, để liệt kê các gói Node.js (được cài đặt local ) có sẵn trong folder  test_package ,  ta  có thể nhập:
npm ls /home/demouser/projects/test_package └── (empty) Vì ta chưa cài đặt bất kỳ gói Node.js nào cho ứng dụng của bạn , điều này hiển thị trống.
 Tuy nhiên, npm tự động cài đặt một số gói  trên phạm vi global . Hãy vượt qua cờ -g để xem:
npm ls -g /home/demouser/.nvm/v0.11.13/lib └─┬ npm@1.4.9   ├── abbrev@1.0.4   ├── ansi@0.2.1   ├── ansicolors@0.3.2   ├── ansistyles@0.1.3   ├── archy@0.0.2 . . . Như bạn thấy , có khá nhiều gói global . Chúng được hiển thị ở định dạng cây phụ thuộc.
 Có một số tùy chọn khác mà bạn có thể sử dụng để sửa đổi  kết quả . Bạn có thể sử dụng cờ -l hoặc -a để có thêm thông tin. Bạn có thể xem thông tin này trong JSON bằng cách tùy chọn chuyển cờ --json .
Truy vấn thông tin khác
Ngoài việc chỉ hỏi npm về các gói đã cài đặt, ta có thể hỏi nó một số thông tin khác về môi trường của nó.
Ta có thể thấy những gì npm đề cập đến như là folder module root trong phân cấp gói local bằng lệnh :
npm root /home/demouser/projects/test_package/node_modules Bạn có thể lấy đường dẫn cấp cao nhất cho gói bạn đang làm việc bằng cách sử dụng lệnh con prefix :
npm prefix /home/demouser/projects/test_package Chúng cũng  được dùng  với cờ -g để xem nơi các file  chung được lưu trữ.
 Để xem nơi npm sẽ cài đặt các file  thực thi, bạn có thể tìm folder  bin cho dự án hiện tại:
npm bin /home/demouser/projects/test_package/node_modules/.bin Khám phá file của gói
 Để nhanh chóng đi đến vị trí folder  nơi một gói được cài đặt, bạn  có thể  chỉ cần sử dụng lệnh con explore . Thao tác này sẽ mở một vỏ con trong folder  nơi gói được cài đặt.
Ví dụ: ta có thể mở một vỏ con trong folder nơi bản thân npm được cài đặt bằng lệnh :
npm explore -g npm Exploring /home/demouser/.nvm/v0.11.13/lib/node_modules/npm Type 'exit' or ^D when finished Bạn có thể thao tác hoặc khám phá các file trong folder này và sau đó thoát ra khỏi vỏ con để quay lại những gì bạn đã làm trước đó.
exit Sử dụng npm làm Trình quản lý gói
Lúc này, ta đã đề cập đến rất nhiều điều, nhưng ta đã giới thiệu chức năng chính của npm cho đến bây giờ. Lý do chính mà mọi người sử dụng npm là vì khả năng quản lý gói của nó.
Tìm kiếm và Cài đặt Gói
 Khi bạn cần một gói Node.js, bạn có thể tìm kiếm nó bằng npm. Hãy giả sử  ta  cần gói cấp express cho dự án  của bạn . Express là một khuôn khổ web.
Ta có thể tìm kiếm gói này trong repository npm, được đặt tại trang web npm :
npm search express Điều này thực sự sẽ trả về một danh sách cực kỳ dài, vì express là một gói rất phổ biến. Bạn có thể chuyển nó vào một máy nhắn tin less để xem nó dễ dàng hơn.  Ta  cũng có thể sử dụng các biểu thức chính quy (với một số ký tự thú vị để thoát khỏi diễn giải shell) như sau:
npm search /^express\[\ \] NAME    DESCRIPTION                                AUTHOR          DATE       VERSIO express Sinatra inspired web development framework =tjholowaychuk… 2014-05-12 4.2.0 Tuy nhiên, nếu bạn nhận được quá nhiều kết quả, có thể dễ dàng hơn chỉ cần truy cập trang web npm để xem gói chính xác được gọi là gì.
Khi bạn biết tên của gói, bạn có thể cài đặt nó. Vì ta cần chức năng dòng lệnh của express, ta sẽ cài đặt nó trên phạm vi global :
npm install -g express Thao tác này sẽ download và cài đặt gói express và tất cả các gói phụ thuộc của nó vào folder root npm chung.
 Nếu  ta  muốn gói trong folder  module  của ứng dụng local  của  ta  để nó có thể được đưa vào ứng dụng với dòng require() ,  có thể chạy lệnh: 
cd ~/projects/test_package npm install express Tuy nhiên, ta thực sự không cần cài đặt gói và các phần phụ thuộc ở cả hai nơi và ta sẽ hướng dẫn bạn cách tránh điều này bên dưới.
Gỡ cài đặt, khử trùng lặp, cắt tỉa và liên kết các gói
Vì ta muốn gói này ở cả phạm vi global và local , nên ta cần cung cấp cho nó một cách để có gói này ở cả hai nơi.
Trước tiên, hãy gỡ cài đặt version gói local của ta , như sau:
npm uninstall express Bây giờ, ta có thể nói với npm rằng ta muốn liên kết bản sao global của bạn với gói local , như sau:
npm link express Điều này sẽ tạo một  softlink  trong folder  node_modules tới gói  global  của  ta , làm cho nó có sẵn ở cả hai nơi.
Ta có thể đã làm ngược lại điều này bằng cách gỡ cài đặt version global , chuyển sang gói local và liên kết global . Ta có thể làm điều đó như thế này.
Đầu tiên, gỡ cài đặt liên kết local và gói global :
npm uninstall express       # This removes the symbolic link in local npm uninstall -g express    # This removes the actual package in global Cài đặt lại gói dưới dạng gói local :
npm install express Gói này nằm trong folder  ứng dụng local  của  ta  ( ~/projects/test_package/node_modules ), nhưng không được cài đặt  trên phạm vi global .  Ta  có thể liên kết nó  trên phạm vi global  để đi đến folder  gói và gọi lệnh con liên kết mà không có đối số bổ sung:
cd ~/projects/test_package/node_modules/express npm link  Ta  có thể sử dụng thủ tục tương tự này để làm cho test_package của riêng  ta  có sẵn cho các gói khác mà  ta  đang tạo (giả sử nó có cấu trúc folder  và file  thích hợp, mà bây giờ không có).
 Trong khi  ta  đang cài đặt và xáo trộn gói của  ta  xung quanh,  ta  nên tận dụng lợi thế của dedupe chức năng.
Các gói của ta có các phụ thuộc được cài đặt bên dưới chúng trong hệ thống phân cấp. Tuy nhiên, một số gói có thể có các phụ thuộc được chia sẻ. Nếu folder gói của ta chứa hai module mà mỗi module yêu cầu một gói có tên “blah”, thì nó sẽ được cài đặt hai lần, một lần trong “package1 / node modules / blah” và một trong “package2 / node modules / blah”.
 Các dedupe vẻ subcommand cho những trường hợp này và di chuyển chia sẻ phụ thuộc lên một mức độ, nơi cả hai gói sẽ tìm thấy cài đặt duy nhất của dependencies .
Ví dụ, ta có thể cố gắng loại trừ các gói phụ thuộc của ta trong folder express. Ta có thể thực hiện việc này trong folder gói như sau:
cd ~/projects/test_package/node_modules/express npm dedupe Điều này sẽ tìm thấy hai gói (mime và gỡ lỗi). Mô-đun gỡ lỗi thực sự cũng là một phụ thuộc của một phụ thuộc module nhanh khác được gọi là “gửi”. Điều này thường sẽ được loại bỏ trùng lặp, nhưng có một xung đột version , vì vậy không có gì được thực hiện trong trường hợp này.
Giả sử bạn đã backup các gói của bạn , điều này sẽ di chuyển một số gói phụ thuộc lên trên, nhưng sau đó bạn gỡ cài đặt các gói mà trước đây sở hữu gói phụ thuộc. Phần phụ thuộc sẽ không bị xóa vì nó không nằm trong folder con của gói nữa.
Trong những trường hợp này, ta có thể yêu cầu npm "cắt bớt" các gói không cần thiết trong hệ thống của ta . Điều này nghĩa là các gói không được liệt kê trong danh sách phụ thuộc của gói mẹ của ta .
Bạn có thể loại bỏ các phụ thuộc không mong muốn bằng cách gọi:
npm prune Điều này sẽ loại bỏ các gói không cần thiết.
Tìm các gói lỗi thời và cập nhật chúng
Nếu bạn cần tìm xem gói nào đã lỗi thời, bạn có thể thực hiện việc này bằng lệnh như sau:
npm outdated . . . Package  Current  Wanted  Latest  Location type-is    1.1.0   1.1.0   1.2.0  express > type-is debug      0.8.0   0.8.0   0.8.1  express > send > debug Thao tác này sẽ cung cấp cho bạn danh sách các gói có các version mới hơn. Nó sẽ cung cấp cho bạn một biểu đồ hiển thị những gì đã được cài đặt, những gì ứng dụng của bạn yêu cầu và điều đó khác với version hiện tại như thế nào.
 Nếu bạn muốn cập nhật các gói  của bạn , bạn nên chỉnh sửa version  được yêu cầu trong package.json của package.json và sau đó đưa ra lệnh cập nhật:
npm update Kết luận
Ta đã đề cập đến một số cách phổ biến hơn để sử dụng npm làm trình quản lý gói. Đến đây bạn nên có một ý tưởng tốt về cách lấy và quản lý các gói của người khác để sử dụng cho sự phát triển của bạn .
Trong hướng dẫn tiếp theo của ta về npm , ta sẽ xem xét cách cấu hình npm để thay đổi hành vi của nó, cách tạo các gói với npm và cách xuất bản các gói của bạn và tương tác với trang web npm.
<div class = “author”> Bởi Justin Ellingwood </div>
Các tin liên quan
Cách sử dụng npm để xây dựng và xuất bản các gói Node.js trên server Linux2014-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
 

