摘要:然后通过命令打开帮助文档,并根据实际的项目需求自行初始化的项目即可。必选项,模块入口文件相对路径相对于模块根目录。
前言
NPM作为Node的模块管理和发布工具,作用与Ruby的gem、Python的pypl或setuptools、PHP的pear和.Net的Nuget一样。在当前前端工程化极速狂奔的年代,即使不做nodejs的开发,也需要学习和使用NPM的,谁叫grunt、bower、yeoman这一堆的工具都通过NPM发布呢?! 本文为针对非nodejs的开发者整理的NPM使用说明。当然最好的教程还是官网的啦!
二、什么是包?nodejs以包的形式组织程序模块,而包的定义却十分简单——包含文件内容符合规范package.json文件的目录或归档文件。并通过”package-name”@”version”来唯一标识每个包。
三、灵魂——package.json包的定义和NPM都围绕着package.json文件做文章,package.json文件其实就相当于JAVA中的MANIFEST.MF文件,用于存放模块的名称、版本、作者、机构、模块入口、依赖项等信息。首先我们通过
npm init
命令在当前工作目录下以用户引导的方式创建一个全新的package.json文件。然后通过
npm help json
命令打开帮助文档,并根据实际的项目需求自行初始化package.json的项目即可。下面将对基础配置项进行叙述。
name必选项,表示模块名称。命名时不能包含js、node、和url中需要转义的字符,不能以.和_为开头。
version必选项,表示模块的版本号。版本号以
主版本号(Major).副版本号(Minor).补丁版本号(Patch)
构成(如1.2.0)。 而engines、dependencies和devDependencies等配置项中可使用语义化版本号语法,具体如下:
标记
介绍
1.1.1
精确下载安装1.1.1版本的包
>、=1.1.1
分别表示下载安装大于、小于等于、大于等于1.1.1版本的包
1.0.1-1.1.1
表示版本范围是包含1.0.1到1.1.1版本的包
~1.1.1
表示尽量采用靠近1.1.1版本的包,但可用的包版本范围是1.1.1-0到1.1.x-x版本的包
~1.1
表示下载安装1.1.x-x版本的包
~1
表示下载安装1.x.x-x版本的包
^1.1.1
表示包版本范围是1.1.1到1.x.x-x
^0.1.1
表示包版本范围是1.1.1到1.1.x-x
^1.1
表示包版本范围是1.1.x-x到1.x.x-x
^1
表示包版本范围是1.x.x-x
空格、x、
表示任意版本即可
其他
两个版本选择器间,空格表示and关系,”||” 表示or关系。
main必选项,模块入口文件相对路径(相对于模块根目录)。
description可选项,表示模块功能描述,显示在
npm search "package-name"
中
keywords可选项,数组类型,表示模块的关键字,显示在
npm search "package-name"
中
author可选项,表示发起者信息。示例如下:
{
"author": {
"name": "luoyue",
"email": "luoyue@zz173.com",
"url": "https://post.zz173.com"
},
}
可选项,依赖的node版本。示例如下:
{
"engines":{
"node": ">= 0.8.0"
}
}
可选项,源码托管地址。示例如下:
{
"repository": {
"type": "git",
"url": "git+https://github.com/rozbo/hexo-hrefmd.git",
},
}
可选项,自定义在cli中输入
npm "script"
时实际执行的程序。npm默认提供大量的script供我们调用。
dependencies、devDependencies可选项,用于配置模块的生产环境依赖包和开发环境依赖包。当执行npm install时,npm会根据这两个配置项的值去下载安装相关的依赖包。两者的区别是devDependencies是模块开发过程的依赖包(如:grunt只在开发时有用的模块),并且当其他模块需要依赖当前模块时,当通过npm install “package-name”时会自动下载安装dependencies的包而不会下载devDependencies的包。
四、NPM的配置信息现在我们对package.json有一定的了解了,现在就到理论+实践时间咯。在实践之前我们要先配置一下NPM的资源库(国内被墙,你懂的),内网用户还要配置一下网络代理地址等信息。
查看部分配置信息——
npm config ls
查看所有配置信息——
npm config ls -l
修改配置信息的三种方式:
1. 直接修改配置文件修改用户家目录的.npmrc文件(没有则新建一个);
2. 通过命令修改npm config set "config" "config-value"
命令;
npm config set registry http://registry.npm.taobao.org/
npm config set proxy http://proxy.com:8081/
比如–registry=”registry-uri”等命令可选项临时配置。
npm install grunt –registry=http://registry.npm.taobao.org
五、查找、安装/卸载、更新依赖包在安心玩耍之前我们要先了解一件事件,就是包的作用范围分为 全局 和 本地 两种。
包的种类 全局包用作在cli上直接调用,而无法在项目中通过require导入依赖包。如将grunt-cli安装到全局时,则可在cli中输入grunt调用了!
npm install -g grunt-cli
cmd或shell中直接调用
本地包grunt
用作在项目中通过require导入依赖包,供项目使用。
那么全局和本地的依赖包到底是存放在哪里的呢?通过
npm root -g
和
npm root
可分别查看全局和本地的依赖包下载安装的绝对目录了。本地的依赖包会存放在当前项目根目录下的node_modules目录下。
现在我们可以正式操作依赖包了!
包的搜索 搜索依赖包,npm search "package-name"
查看依赖包的package.json信息,npm view "package-name"
另外我们可以多带带查看package.json某个配置。
查看包的依赖关系npm view "package-name" dependencies
查看包的源文件地址npm view "package-name" repository.url
查看包所依赖的node版本号npm view "package-name" engines
查看本地包信息 查看当前项目的本地依赖包,npm list
查看全局依赖包,npm list -g
查看本地依赖包是否不是最新版npm outdated "package-name"
安装、卸载、更新包 安装包本地
npm install "package-name"
全局
npm install -g "package-name"
这样会安装最新版的包,若需要安装特定版本,则
npm install "package-name"@"version"
卸载包卸载本地
npm uninstall "package-name"
卸载全局
npm uninstall -g "package-name"
更新包更新本地
npm update "package-name"
更新全局
npm update -g "package-name"
六、发布包站在使用者的角度,掌握上述章节的内容已经足够了,但当我们开发出好玩的项目而且又想和大家分享时,那么下面的内容就不得不了解了!
1.注册一个registry帐号,npm adduser
,然后根据引导输入帐号、密码和邮箱地址。
2. 登录registry帐号,npm login
,登录信息会保存在客户端。
3. 发布项目,npm publish
。(建议发布版本从1.0.0开始)
4.注意经过上述步骤我们就可发布模块了。但这个时候你也许会考虑到项目中部分目录和文件不应该被发布出去,应该有一个像.gitignore的文件来配置这些排除项。看来你猜对了,那就是.npmignore文件,不过npm做得更灵活一些!
默认不带.npmignore文件,若项目中带.gitignore则使用.gitignore文件内容的配置项;
若带.npmignore文件则不使用.gitignore文件中的配置项;
即使配置.npmignore文件,也无法排除package.json和README.*文件;
NPM内置设定以下文件必须被排除
.*.swp
.*.swp
._*
.DS_Store
.git
.hg
.lock-wscript
.svn
.wafpickle-*
CVS
npm-debug.log
现在我们终于可以安心下载各种node依赖包来推进前端工程化的步伐了!
八、参考http://www.cnblogs.com/fsjohnhuang/p/4178019.html
http://www.cnblogs.com/linjiqin/p/3765772.html
http://www.infoq.com/cn/articles/nodejs-npm-install-config/
http://www.infoq.com/cn/articles/msh-using-npm-manage-node.js-dependence
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/61052.html
摘要:这是一套基于样式库开发的小程序扩展组件库,同微信原生视觉体验一致的组件库,由微信官方设计团队和小程序团队为微信小程序量身设计,令用户的使用感知更加统一。 微信小程序...
摘要:介绍说明的包管理器,用于插件管理包括安装卸载管理依赖等使用安装插件命令提示符执行插件名称。总结安装新建文件全局和本地安装安装插件新建文件通过命令提示符运行任务。 showImg(https://segmentfault.com/img/remote/1460000010873466); 前言 众所周知目前比较火的工具就是gulp和webpack,但webpack和gulp却有所不同,本...
摘要:前阵子微信小程序的推出快速占据了桌面,手机厂商们坐不住了,为了抢回移动端应用分发入口,前几天中国通信院等协会联合小米华为等一众手机厂商共同发布了快应用。总的来说,这个文件就是微信小程序清单文件的混合体,用来描述应用和做一些基本配置。 前阵子微信小程序的推出快速占据了Android桌面,手机厂商们坐不住了,为了抢回移动端应用分发入口,前几天中国通信院等协会联合小米、华为、OPPO等一众手...
摘要:的前世今生基于平台,快速开放极简的开发框架。性能上在之上进行了二次元的操作。提供了所需的所有功能。详解如何秒掉代码中间件中间件是一个函数,它可以访问请求对象响应对象和应用中处于请求响应循环流程中的中间件,一般被命名为的变量。 express的前世今生 基于 Node.js平台,快速、开放、极简的 web 开发框架。 优点 极简 灵活, express提供一系列强大的特性,帮助你创...
摘要:脚本列出了在结束时安装的映像。在不同的体系结构,将用标识体系结构的字符串替换。提供了许多来支持各种编程语言,官方发布了两款针对和的和文档。。 入门 在我们开始之前,如果你还没有这样做,你可能希望检查是否已经在开发区块链应用程序和/或运行Hyperledger Fabric的平台上安装了所有前提条件。 一旦安装了前提条件,就可以下载并安装HyperLedger Fabric了,当我们在F...
阅读 1006·2021-11-24 09:39
阅读 1918·2021-11-22 13:54
阅读 1784·2021-09-08 10:45
阅读 1299·2021-08-09 13:43
阅读 2872·2019-08-30 15:52
阅读 2968·2019-08-29 15:38
阅读 2719·2019-08-26 13:44
阅读 2925·2019-08-26 13:30