我的Node.js学习之路(二)NPM模块管理


Posted in Javascript onJuly 06, 2014

NPM是一个Node包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。有了NPM,可以很快的找到特定服务要使用的包,进行下载、安装以及管理已经安装的包。

NPM常用的命令有:

      (1)$ npm install moduleNames
               安装Node模块
               注意事项:如果在使用模块的时候不知道其名字,可以通过http://search.npmjs.org网站按照
                                索引值找到想要的模块。npm也提供了查询的功能  $ npm search indexName
                                 安装完毕后会产生一个node_modules目录,其目录下就是安装的各个node模块。
                                 node的安装分为全局模式和本地模式。一般情况下会以本地模式运行,包会被安装
                                到和你的应用代码统计的本地node_modules目录下。在全局模式下,Node包会被
                                安装到Node的安装目录下的node_modules下。全局安装命令为
                                $ npm install -g moduleName。获知使用$npm set global=true来设定安装模式
                              ,$npm get global可以查看当前使用的安装模式。

      (2)$ npm view moduleNames
                 查看node模块的package.json文件夹
                注意事项:如果想要查看package.json文件夹下某个标签的内容,可以使用
                                 $ npm view moduleName labelName

     (3)$ npm list
                查看当前目录下已安装的node包
                注意事项:Node模块搜索是从代码执行的当前目录开始的,搜索结果取决于当前使用的目录中
                                 的node_modules下的内容。$ npm list parseable=true可以目录的形式来展现当
                                 前安装的所有node包

      (4)$ npm help
                查看帮助命令

     (5)$ npm view moudleName dependencies
                查看包的依赖关系

     (6)$ npm view moduleName repository.url
               查看包的源文件地址

      (7)$ npm view moduleName engines
               查看包所依赖的Node的版本 

     (8)$npm help folders
                查看npm使用的所有文件夹

      (9)$ npm rebuild moduleName
                用于更改包内容后进行重建

      (10)$ npm outdated
                 检查包是否已经过时,此命令会列出所有已经过时的包,可以及时进行包的更新

      (11)$ npm update moduleName
                     更新node模块

     (12)$ npm uninstall moudleName
                      卸载node模块

      (13)一个npm包是包含了package.json的文件夹,package.json描述了这个文件夹的结构。访
                      问npm的json文件夹的方法如下:
                            $ npm help json
                      此命令会以默认的方式打开一个网页,如果更改了默认打开程序则可能不会以网页的形式打
                      开。

      (14)发布一个npm包的时候,需要检验某个包名是否已存在
                    $ npm search packageName

      (15)很多时候我们在使用一个npm包的时候经常会忘记了require其相互依赖的模块,我们可以
                     借助如如下命令来查看此模块相互依赖的包都有哪些
 
 npm是Node.JS的程序包管理器。进行Node.JS开发时,经常使用它安装/卸载程序包。实际上,发布程序包的工作也是由它来完成的。

配置package.json

要打包程序,首先要配好各项设置,这些设置都由程序包根目录下的package.json指定。package.json的内容必须是严格的JSON格式,也就是说:

字符串要用双引号括起来,而不能用单引号;
属性名一定要加双引号;
最后一个属性后千万不要多加一个逗号。
配置对象的属性很多,具体可以参阅这里,这里列一下常用的项目:

name:程序包名,不能跟已有的程序包重复。
version:版本号。
description:一段简短的介绍。
author:作者信息。包含name、email、url三项属性。
bin:如果程序中有可执行文件(主要是命令行里面调用的),就在这里指定,可以指定多个。
main:使用require调用本程序包时的程序入口。
dependencies:依赖的程序包,可以指定版本号。

配置好package.json后,可以先在本地打包安装一次,测试程序运作是否正常,安装命令为:

npm install <本地路径>

另外,还有一条潜规则要注意,如果你希望程序包中的可执行程序在Node.JS的环境中运行,那么,请在程序入口文件的最前面加上这样一行:

#!/usr/bin/env node

如果没有这一行,它将以系统默认的方式打开,而不是在Node.JS的环境中运行。

注册npm帐号

要把程序包发布到npm,还需要先注册一个帐号。npm并没有提供网页版的注册向导。注册也要通过命令行来进行:

npm adduser
执行此命令后,会依次出现输入用户名、Email、密码的提示,输入好之后等待一会儿就可以了。

发布程序包

准备工作都做好了,执行下面的命令就可以发布程序包:

npm publish <本地路径>
如果要更新程序包,只要修改一下package.json中的版本号,再重新执行发布命令就可以了。

Javascript 相关文章推荐
js加强的经典分页实例
Mar 15 Javascript
getJSON调用后台json数据时函数被调用两次的原因猜想
Sep 29 Javascript
js验证IP及子网掩码的合法性有效性示例
Apr 30 Javascript
JS 获取鼠标左右键的键值方法
Oct 11 Javascript
javascript实现限制上传文件大小
Feb 06 Javascript
jQuery设置Cookie及删除Cookie实例分析
Apr 15 Javascript
jquery插件uploadify多图上传功能实现代码
Aug 12 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
Apr 15 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
May 14 Javascript
在Node.js中将SVG图像转换为PNG,JPEG,TIFF,WEBP和HEIF格式的方法
Aug 22 Javascript
vue实现数据控制视图的原理解析
Jan 07 Javascript
小程序实现图片移动缩放效果
May 26 Javascript
我的Node.js学习之路(一)
Jul 06 #Javascript
javascript数组操作方法小结和3个属性详细介绍
Jul 05 #Javascript
jQuery打印指定区域Html页面并自动分页
Jul 04 #Javascript
jQuery 仿百度输入标签插件附效果图
Jul 04 #Javascript
动态载入js提高网页打开速度的方法
Jul 04 #Javascript
JS中getYear()和getFullYear()区别分析
Jul 04 #Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
Jul 04 #Javascript
You might like
一拳超人中怪人协会钦定! S级别最强四人!
2020/03/02 日漫
php多文件上传功能实现原理及代码
2013/04/18 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
2013/06/26 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
2014/06/23 PHP
PHP curl使用实例
2015/07/02 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
2015/12/21 PHP
struts2 jquery 打造无限层次的树
2009/10/23 Javascript
jquery DIV撑大让滚动条滚到最底部代码
2013/06/06 Javascript
jQuery的cookie插件实现保存用户登陆信息
2014/04/15 Javascript
ES6所改良的javascript“缺陷”问题
2016/08/23 Javascript
js验证手机号、密码、短信验证码代码工具类
2020/06/24 Javascript
AngularJS constant和value区别详解
2017/02/28 Javascript
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
用react-redux实现react组件之间数据共享的方法
2018/06/08 Javascript
vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
2019/05/10 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
vue实现移动端input上传视频、音频
2020/08/18 Javascript
原生微信小程序开发中 redux 的使用详解
2021/02/18 Javascript
Python lambda函数基本用法实例分析
2018/03/16 Python
python 2.7.14安装图文教程
2018/04/08 Python
python实现生成字符串大小写字母和数字的各种组合
2019/01/01 Python
python处理大日志文件
2019/07/23 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
Python多线程threading join和守护线程setDeamon原理详解
2020/03/18 Python
复古斯堪的纳维亚儿童服装:Baby go Retro
2017/09/09 全球购物
英国最大的在线奢侈手表零售商:Jura Watches
2018/01/29 全球购物
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
世界上最好的足球商店:Unisport
2019/03/02 全球购物
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
戴尔荷兰官方网站:Dell荷兰
2020/10/04 全球购物
《夜晚的实验》教学反思
2014/02/19 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS
Elasticsearch 聚合查询和排序
2022/04/19 Python
利用Redis实现点赞功能的示例代码
2022/06/28 Redis