Thursday, 17 July 2014

npm - Node.js package manager

Node Package Manager (npm) là package manager cho Node.js , giống như pip đối với python, gem đối với ruby, cabal đối với Haskell...

Thực hiện trên:
# lsb_release -d
Description:    Ubuntu 12.04.4 LTS
1. Cài đặt npm
apt-get install npm
2. Tìm hiểu khát quát về npm và Node.js
Trước khi đi sâu vào phần "sử dụng npm", ta thử nghiên cứu về khía cạnh system xem NPM này có gì hay:
$ apt-cache show npm
...

Depends: nodejs, nodejs-dev, node-node-uuid, node-request, node-mkdirp, node-minimatch, node-semver, node-ini, node-graceful-fs, node-abbrev, node-nopt, node-fstream, node-rimraf, node-tar, node-which
Cho thấy npm depends vào nodejs và nhiều package khác  =))
Description-en: package manager for Node.js
 Node.js is an event-based server-side javascript engine.
Định nghĩa Node.js:

 Node.js is an event-based server-side javascript engine.
Theo định nghĩa này Node.js  là một Javascript engine, nó KHÔNG PHẢI là một ngôn ngữ lập trình.

Các Javascript engine: Spidermonkey, V8 ...
http://en.wikipedia.org/wiki/JavaScript_engine#JavaScript_engines

Sau khi nghiên cứu lại thì thấy cái định nghĩa Node.js trích từ phần description kia không thực sự chính xác, định nghĩa sau trích từ homepage của Node.js http://nodejs.org/
Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.
Vậy Node.js là 1 platform xây dựng trên V8 JS engine.

Định nghĩa Node.js:
Node.js is a platform built on Chrome's JavaScript runtime 
Định nghĩa npm:
  npm is the package manager for the Node JavaScript platform
3. Các thao tác cơ bản với npm
Kiểm tra version
# npm --version; node --version
1.1.4
v0.6.12
Cài đặt package
# npm install underscore
npm http GET https://registry.npmjs.org/underscore

npm ERR! Error: failed to fetch from registry: underscore
...
Lỗi này do bản npm và node trên Ubuntu 12.04 bị lỗi, cài bản mới hơn từ PPA:
sudo apt-get update
sudo apt-get install -y python-software-properties
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
Theo hướng dẫn ở đây: http://stackoverflow.com/a/21715730/807703

Kiểm tra lại version sau khi cài bản từ PPA
# npm --version; node --version
1.4.14
v0.10.29
Cài đặt  gói underscore
# npm install underscore
underscore@1.6.0 node_modules/underscore
Cài thêm 2 package  nữa để threesome
# npm install colors mkdirp
colors@0.6.2 node_modules/colors

mkdirp@0.5.0 node_modules/mkdirp
└── minimist@0.0.8
Liệt kê các package  đã cài
# npm list

 /root
├── colors@0.6.2
├─┬ mkdirp@0.5.0
│ └── minimist@0.0.8
└── underscore@1.6.0
Gỡ 1 package 
# npm uninstall underscore
unbuild underscore@1.6.0
Thử dùng một package vừa cài đặt 

Tạo một file chứa code tên là pow.js:
# cat > pow.js << _EOF
var mkdirp = require('mkdirp');

mkdirp('/tmp/foo/bar/baz', function (err) {
    if (err) console.error(err)
    else console.log('pow!')
});
_EOF
Chạy nó:
# node pow.js
pow!
# ls -la /tmp/foo/bar/baz
total 8
drwxr-xr-x 2 root root 4096 Jul 17 01:16 .
drwxr-xr-x 3 root root 4096 Jul 17 01:16 ..
Vậy là đoạn code trên đã dùng package "mkdirp" để tạo thư mục theo kiểu `mkdir -p` bằng Node.js

Tạm hết.