A Beginner’s Guide to npm — the Node Package Manager

原文: http://www.sitepoint.com/beginners-guide-node-package-manager/

Installing Node.js

验证你的安装是否成功.

$ node
> console.log(‘Node is running‘);
Node is running
> .help
.break Sometimes you get stuck, this gets you out
.clear Alias for .break
.exit  Exit the repl
.help  Show repl options
.load  Load JS from a file into the REPL session
.save  Save all evaluated commands in this REPL session to a file
> .exit

Node已经安装成功了, 现在看看npm是否安装成功, 安装的是哪个版本的npm.

$ npm -v
1.4.28

(我的是)

Node Packaged Modules

npm安装packages分为本地和全局两种模式. 在本地模式下安装会将package安装在你当前目录下的node_modules目录下. 用全局模式安装会安装到{prefix}/lib/node_modules/ 文件夹下({prefix} 通常是/usr/ 或者 /usr/local). 这意味这你可能需要使用sudo来安装全局package.

修改全局package的安装目录

看看npm config输出的是什么东西

$ npm config list

现在我们知道了全局位置.

$ npm config get prefix
/usr/local

这个prefix就是我们想修改的, 为了全局package安装在我们的home目录下, 我们在home目录下创建一个新的文件夹

$ cd && mkdir .node_modules_global
$ npm config set prefix=$HOME/.node_modules_global

简单的修改后, 全局package的目录已经修改好了. 现在在home目录下创建一个.npmrc文件.

$ npm config get prefix
/home/sitepoint/.node_modules_global
$ cat .npmrc
prefix=/home/sitepoint/.node_modules_global

因为我们修改了全局package的安装位置我们需要重新安装npm, 这次我们会在新的位置安装

$ npm install npm --global
[email protected] /home/sitepoint/.node_modules_global/lib/node_modules/npm

最后, 我们需要添加.node_modules_global/bin 到我们的$PATH环境变量. 运行完下面的命令记得重启terminal.

export PATH="$HOME/.node_modules_global/bin:$PATH"

运行下面的命令看看现在npm安装在哪个目录, 安装的是哪个版本的npm.  

$ which npm
/home/sitepoint/.node_modules_global/bin/npm
$ npm -v
2.6.0

(我就不修改目录了)

用全局模式安装package

目前位置我们只用全局模式安装了一个package那就是npm自己. 现在让我们用全局模式来安装uglifyjs. 我么使用 --global flag,  他有一个缩写是 -g.

$ npm install uglify-js --global
[email protected] node_modules/uglify-js
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
└── [email protected] ([email protected])

通过输出你能看出另外4个package也被安装了 – 这是因为uglify-js依赖于这4个package.

看看都安装了哪些全局package

使用npm list命令查看安装了哪些全局包.

$ npm list --global
├─┬ [email protected]
│ ├── [email protected]
│ ├── [email protected]
....................
└─┬ [email protected]
  ├── [email protected]
  ├─┬ [email protected]
  │ └── [email protected]
  ├─┬ [email protected]
  │ └── [email protected]
  └── [email protected]

这个输出的内容非常的多, 他们我们安装package的依赖package也输出了. 我们可以使用--depth=0.

$ npm list -g --depth=0
├── [email protected]
└── [email protected]

我们可以使用我们刚安装的uglifyjs解析js. 下面的命令会 minify example.js 到 example.min.js:

$ uglifyjs example.js -o example.min.js

用本地模式安装package

去除--global就是用本地模式安装package了. package会安装在你当前目录下的node_modules文件夹下. 现在在home目录下创建一个project目录

$ mkdir ~/project && cd ~/project
$ npm install underscore
[email protected] node_modules/underscore
$ ls
node_modules
$ ls node_modules
underscore

列出安装了哪些本地package

$ npm list
/home/sitepoint/project
└── [email protected]

卸载本地package

npm是一个包管理器, 因此我们肯定也能使用它来卸载package:

$ npm uninstall underscore
unbuild [email protected]
$ npm list
/home/sitepoint/project
└── (empty)

指定安装某个版本的package

在@后写版本好即可.

$ npm install [email protected]
[email protected] node_modules/underscore
$ npm list
/home/sitepoint/project
└── [email protected]

更新 Package

$ npm update underscore
[email protected] node_modules/underscore
$ npm list
/home/sitepoint/project
└── [email protected]

搜索查找Packages

本文多次使用了 mkdir命令. 有没有一个node package能做同样的事情呢?  让我们找找

$ npm search mkdir
npm WARN Building the local index for the first time, please be patient
mkdirp

管理Cache

当npm安装一个package时它会自动保留一个copy, 这样下次你想安装这个package的时候, 它不需要去网上下载了, 直接去拿这个copy就好了. 这些copy都缓存在home目录下的.npm目录下.

$ ls ~/.npm
npm  registry.npmjs.org  underscore ...

这个目录下的packagek可能有很多老的版本的package, 所以有的时候我们需要清理他们.

$ npm cache clean

管理Dependencies

手动安装依赖非常不明智, 我们可以在项目的根目录下使用package.json管理package. 可以使用npm init 创建package.json

$ npm init
This utility will walk you through creating a package.json file.
Press ^C at any time to quit.
name: (project) demo
version: (1.0.0)
description: Demo of package.json
entry point: (main.js)
test command:
git repository:
keywords:
author: Sitepoint
license: (ISC)

package.json的内容如下:

{
  "name": "demo",
  "version": "1.0.0",
  "description": "Demo package.json",
  "main": "main.js",
  "dependencies": {
    "mkdirp": "^0.5.0",
    "underscore": "^1.8.2"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Sitepoint",
  "license": "ISC"
}

可以添加private: true 避免在运行npm  installl 时出现的一些警告. 创建一个新目录使用package.json安装我们的dependencies.

$ mkdir ~/demo && cd ~/demo
$ cp ~/project/package.json ~/demo
$ npm install
$ npm list
[email protected] /home/sitepoint/demo
├─┬ [email protected]
│ └── [email protected]
└── [email protected]

看看, 在另一个目录基于之前的package.json文件安装package很容易吧. 当我们安装新的package的时候, 怎样让他反映到package.json中去呢? 我们可以使用--save.

$ npm install request --save
$ npm list --depth=0
[email protected] /home/sitepoint/demo
├── [email protected]
├── [email protected]
└── [email protected]

package.json被更新了:

"dependencies": {
  "mkdirp": "^0.5.0",
  "request": "^2.53.0",
  "underscore": "^1.8.2"
}

  

  

时间: 2024-11-03 03:44:05

A Beginner’s Guide to npm — the Node Package Manager的相关文章

NPM - Node Package Manager - Node 包管理器

NPM - Node Package Manager - Node 包管理器 NPM 是什么? npm(全称Node Package Manager,即node包管理器)是Node.js默认的.以JavaScript编写的软件包管理系统. npm 官方网站 npm 官方文档 一般当我们说npm的时候可能指3件事 NPM 网站:https://www.npmjs.com/ NPM 包管理库,存储了大量的JavaScript代码库 NPM 客户端,我们所使用的npm命令行工具.使用JavaScrip

NPM(Node Package Manager,Node包管理器)

简介 每个Node应用都有一个包含该应用元数据的文件-package.json,包含应用名.版本号已经依赖等信息. 我们使用NPM从NPM库下载并安装第三方包. 所有下载的包以及其依赖都保存在node_modules文件夹,这个文件夹应该排除在源代码版本控制(如git.SVN等)外. Node的包版本号符合的语义格式为:major.minor.patch (即主要版本.次要版本.补丁),如: 4.13.6 major必须满足4,minor必须满足13,patch必须满足6(即完全匹配). ^4.

使用NPM安装Node.js模块以及调试

npm npm 作为Node.js的包管理器,是经常用到的工具. 注意:全局安装一个框架,需要加参数-g npm install -g express 安装后 在项目中只需要导入包即可 var http = require('http'); 调试 调试Node的最简单的方式就是console.log(),但是有时候也需要单步调试 在需要调试的地方写入debugger node debug *.js node中的测试命令: next,n:单步执行 cont,c:继续执行,直到遇到下一个断点 ste

(转)A Beginner's Guide To Understanding Convolutional Neural Networks Part 2

Adit Deshpande CS Undergrad at UCLA ('19) Blog About A Beginner's Guide To Understanding Convolutional Neural Networks Part 2 Introduction Link to Part 1 In this post, we’ll go into a lot more of the specifics of ConvNets. Disclaimer: Now, I do reali

(转)A Beginner's Guide To Understanding Convolutional Neural Networks

Adit Deshpande CS Undergrad at UCLA ('19) Blog About A Beginner's Guide To Understanding Convolutional Neural Networks Introduction Convolutional neural networks. Sounds like a weird combination of biology and math with a little CS sprinkled in, but

Beginner's Guide to Python-新手指导

Refer English Version: http://wiki.python.org/moin/BeginnersGuide New to programming? Python is free, and easy to learn if you know where to start! This guide will help you to get started quickly. 没玩过编程? Python语言是免费的,如果你知道从何处开始,它很容易上手! 本指南将帮助你快速入门. N

如何使用npm发布Node.JS程序包

如何使用npm发布Node.JS程序包 Heero.Luo发表于3年前,已被查看5065次 npm是Node.JS的程序包管理器.进行Node.JS开发时,经常使用它安装/卸载程序包.实际上,发布程序包的工作也是由它来完成的. 配置package.json 要打包程序,首先要配好各项设置,这些设置都由程序包根目录下的package.json指定.package.json的内容必须是严格的JSON格式,也就是说: 字符串要用双引号括起来,而不能用单引号: 属性名一定要加双引号: 最后一个属性后千万

(Molehill) Game Programming Beginner's Guide 读书笔记 chapter2

-- chapter2. //23.-- Blueprint of a MolehillStage3D objects are not inside the DisplayList in Flash!As they are not DisplayObjects, you cannot apply filters or blendmodes. You cannot even put a Stage3D object over the top of other Flash 2D graphics!

Photography theory: a beginner's guide(telegraph.co.uk)

By Diane Smyth, Tim Clark, Rachel Segal Hamilton and Lewis Bush 11:00AM BST 09 Jun 2014 Have you read the Bible cover to cover? Probably not, but it's also fair to assume you know the basic plot, the central characters and a few choice quotes. This i