初涉npm

NPM是什么

NPM(node package manager Node包管理器)
以往的Web开发中,JS文件数量少,依赖少,逻辑相对简单。需要jQuery时,跑到官网下载后引用,需要Bootstrap时,官网下载后引用,大部分都是这样。
但是伴随着Web时代到来,需求功能变多,需要依赖、引用、复用的库渐渐增多,有人就觉得这样十分麻烦,不可以由一个服务器来管理所有的库、功能包吗?NPM的雏形就诞生了。当时Node.js还在Ryan Dahl的大脑里孕育着,所以NPM刚出来时并没有得到注意和推广,社区力量薄弱,创始人在一次与Ryan Dahl聊天时,将这个想法告知了Ryan Dahl,他觉得这主义不错,就将NPM纳入了Node.js中。NPM的成功推广也是由Node.js所带来的。

NPM中文文档
NPM官网

NPM常见的使用场景有:

  • 允许用户从NPM服务器下载别人编写的第三方包到本地应用。
  • 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
  • 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。

安装
window:npm install npm -g

安装模块:使用NPM来安装一个模块,并使用它。

  • 创建一个my-project目录,安装colors模块,然后创建一个index.js文件。
md my-project
cd ./my-project/
npm install colors

安装完成后,可以在当前目录下查看是否有node_modules/colors目录。

注意,这只是在当前目录下安装,只能再对应目录下使用。这样每到一个新目录都得重新安装一次,我们可以使用全局安装。

npm install -g colors

创建index.js

cd .>index.js

在文件中写如下内容:

require("colors");
console.log("hello world" .rainbow);

运行index.js,你就会看到彩虹色的hello world了。


npm ls可以查看安装了哪些包

npm ls

npm ls pkg查看特定package的信息,运行如下命令,输出colors的信息

npm info pkg如果要查看更详细信息,可以通过npm info pkg ,输出的信息非常详尽,包括作者、版本、依赖等。

npm info colors

进入node_modules/colors模块中,看一看文件构成。

其中package.json带着一些这个包的元数据的文件。一个网站,将会依赖于几十上百个包。这些包通常很小。
name - 包名。

version - 版本号。

description - 描述。

homepage - 官网。

author - 作者姓名。

contributors - 包的其他贡献者姓名。

dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。

repository - 包代码存放的位置。

等等。

NPM中文文档


自定义模块

要自定义模块,你需要创建一个package.json文件。通过这种方式来定义模块有三种好处。

  • 可以很方便的将项目中的模块共享给其他人,不需要将整个node_modules目录发送给他们。因为有了package.json之后,其他人运行npm install就可以把依赖的模块都下载下来了,在以往,都是直接将node_modules目录发送给别人,这是馊主意。特别是当使用Git这样的SCM系统进行代码控制的时候。
  • 可以很方便的纪录所依赖模块的版本号。举个例子来说,当你的项目通过npm install colors安装的是0.5.0的colors。一年后,由于colors模块API的开放,可能导致与你的项目不兼容,如果你使用npm install并且不指定办版本号来安装的话,你的项目就没法正常运行了。
  • 让分享更简单。如果你的项目不错,你是否想将它分享给别人?这时,因为有package.json文件,通过npm publishiucn可以将其发布到NPM库中供所有人下载使用了。

在原先的目录中,删除node_modules目录,并创建一个package.json文件:

md .>package.json
vim package.json

添加如下内容:

{
    "name": "my-colors-project",
    "version": "0.0.1",
    "dependencies": {
        "colors": "0.5.0"
    }
}

package.json文件是从Node.js和NPM两个层面来描述目的。其中只有name和version是必要的字段,也叫最少配置项:

  • "name"

    • 全部为小写字母
    • 一个单词,无空格
    • 允许半角破折号和下划线
  • "version"

    • 格式为x.x.x
    • 遵循语义化版本号规则semver spec

示例:

{
    "name": "my-project-package",
    "version": "1.0.0"
}

通常情况下,package.json还会定义一些依赖的模块,通过使用一个对象,将依赖模块的模块名以及版本号以对象的属性和值将其定义在package.json文件中。

保存之前的内容,安装依赖的模块,然后再次运行index.js文件:

npm install
node index  # 注意了,这里不需要加上".js"后缀。

当运行npm install后,就会自动为项目安装依赖项。

运行node index,结果和之前显示的也一样。

在这个例子中,自定义模块是内部使用的,如果想发布出去,NPM提供了如下这种方式,可以很方便的发布模块 :

npm publish

当别人使用require('my-colors-project')时,为了能够让Node知道该载入哪个文件,我们可以在package.json文件中使用main属性来指定:

{
    "name": "my-colors-project",
    "version": "0.0.1",
    "main": "./index",
    "dependencies": {
        "colors": "0.5.0"
    }
}

当需要让模块暴露API的时候,main属性就会变得尤为重要,因为你需要为模块定义一个入口(有时候,入口可能是多个文件)。

npm help json查看package.json文件所有的属性文档

tips:如果你不想发布你的模块,那么在package.json中加入"private":"true"。可以避免误发布。

NPM有一个丰富的仓库,包含了上千个模块。NPM有两个命令可以用来在仓库中搜索和查看模块:search和view。

例如,要搜索realtime相关的模块,可以使用如下命令:

npm search realtime

该命令会在已发布模块的name、tags以及description字段中搜索此关键字,并返回匹配的模块。

找到了感兴趣的模块后,通过运行npm view命令,后面紧跟该模块名,就能看到package.json文件以及NPM仓库相关的属性。

相关:

npm 模块安装机制简介
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 什么是 NPM npm之于Node,就像pip之于Python,gem之于Ruby,composer之于PHP。 ...
    ihoey阅读 11,401评论 2 36
  • 大家好,我是IT修真院深圳分院第3期的学员,一枚正直纯洁善良的前端程序员,今天给大家分享一下,修真院官网前端工程师...
    大大头大阅读 8,052评论 0 1
  • 1 Node.js模块的实现# 之前在网上查阅了许多介绍Node.js的文章,可惜对于Node.js的模块机制大都...
    七寸知架构阅读 6,286评论 1 50
  • 不经意间又与你邂逅 成熟美丽 风采依旧 硕果累累 如镶金戴玉的新娘 牵起秋风精巧的手 任秋风的刻刀 把你雕塑成 一...
    觅缘人阅读 2,880评论 8 12
  • 读书的时候,大一点的人不让我们用圆珠笔写字。圆珠笔的笔尖有一个小小的圆珠,写字的时候要把笔立起来才能出油,...
    公子向北走了阅读 4,021评论 0 1

友情链接更多精彩内容