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

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>


Tags:

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 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