我的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 相关文章推荐
浏览器无法运行JAVA脚本的解决方法
Jan 09 Javascript
jQuery UI-Draggable 参数集合
Jan 10 Javascript
Express作者TJ告别Node.js奔向Go
Jul 14 Javascript
微信小程序 倒计时组件实现代码
Oct 24 Javascript
AngularJS Toaster使用详解
Feb 24 Javascript
Bootstrap免费字体和图标网站(值得收藏)
Mar 16 Javascript
Vue+axios 实现http拦截及路由拦截实例
Apr 25 Javascript
基于 Vue 的树形选择组件的示例代码
Aug 18 Javascript
layer实现关闭弹出层刷新父界面功能详解
Nov 15 Javascript
react中实现搜索结果中关键词高亮显示
Jul 31 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
May 22 Javascript
token 机制和实现方式
Dec 15 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
一个php导出oracle库的php代码
2009/04/20 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
2011/06/10 PHP
php把大写命名转换成下划线分割命名
2015/04/27 PHP
PHP getallheaders无法获取自定义头(headers)的问题
2016/03/23 PHP
thinkPHP内置字符串截取函数用法详解
2016/11/15 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
nodejs win7下安装方法
2012/05/24 NodeJs
php图像生成函数之间的区别分析
2012/12/06 Javascript
js/jquery判断浏览器的方法小结
2014/09/02 Javascript
JS打字效果的动态菜单代码分享
2015/08/21 Javascript
微信企业号开发之微信考勤百度地图定位
2015/09/11 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
nodejs读取并去重excel文件
2018/04/22 NodeJs
node.js自动上传ftp的脚本分享
2018/06/16 Javascript
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
vue路由对不同界面进行传参及跳转的总结
2019/04/20 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
jquery实现异步文件上传ajaxfileupload.js
2020/10/23 jQuery
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
使用django-crontab实现定时任务的示例
2018/02/26 Python
Python-ElasticSearch搜索查询的讲解
2019/02/25 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
python中count函数简单的实例讲解
2020/02/06 Python
python简单的三元一次方程求解实例
2020/04/02 Python
Python如何定义有可选参数的元类
2020/07/31 Python
利物浦足球俱乐部官方商店(美国):Liverpool FC US
2019/10/09 全球购物
中专生求职自荐信范文
2013/12/22 职场文书
机关门卫岗位职责
2013/12/30 职场文书
在校硕士自我鉴定
2014/01/23 职场文书
企业承诺书格式范文
2015/04/28 职场文书
党员转正党支部意见
2015/06/02 职场文书
2016年教师节慰问信
2015/12/01 职场文书
MybatisPlus代码生成器的使用方法详解
2021/06/13 Java/Android
vue route新窗口跳转页面并且携带与接收参数
2022/04/10 Vue.js