npm学习

178 阅读2分钟

从三个角度:package.json、版本管理、依赖安装结合具体实例对 npm 的包管理机制进行了详细分析。

Node.js 中,模块是一个库或框架,也是一个 Node.js 项目。Node.js 项目遵循模块化的架构,当我们创建了一个 Node.js 项目,意味着创建了一个模块,这个模块必须有一个描述文件,即 package.json

1.1必备属性

package.json中有很多属性,其中必须填写的只有两个:name 和 version ,他们两个组成 npm 模块的唯一标识。

"name": "vue",

"version": "3.3.4",

npm包命名规则

name 即模块名称,其命名时需要遵循官方的一些规范和建议:

  • 包名会成为模块url、命令行中的一个参数或者一个文件夹名称,任何非url安全的字符在包名中都不能使用,可以使用 validate-npm-package-name 包来检测包名是否合法。

  • 语义化包名,可以帮助开发者更快的找到需要的包,并且避免意外获取错误的包。

  • 若包名称中存在一些符号,将符号去除后不得与现有包名重复

查看包是否被占用

name 是一个包的唯一标识,不得和其他包名重复,我们可以执行 npm view packageName 查看包是否被占用,并可以查看它的一些基本信息

1.2描述信息

"description": "The progressive JavaScript framework for building modern web UI.",
"keywords":["vue"]

description:用于添加模块的描述信息,方便别人了解你的模块

keywords:给你的模块添加关键字。

开发人员

"auther":{ 
    "name" : "ConardLi", 
    "email" : "lisqPersion@163.com", 
     "url" : "https://github.com/ConardLi"}

描述开发人员的字段有两个:authercontributors

auther:指包的主要作者,对应一个人

contributors:指贡献者信息,对应多个人

地址

{
"homepage": "http://ant.design/",
"bugs": {"url": "https://github.com/ant-design/ant-design/issues"},
"repository": {"type": "git","url": "https://github.com/ant-design/ant-design"},
}

Homepage:指定该模板的主页。

repository:指定模块的代码仓库。

Bugs:指定地址或邮箱,提出bug。

1.3依赖配置

我们的项目可能依赖一个或多个外部依赖包,根据依赖包的不同用途,我们将他们配置在下面几个属性下:dependencies、devDependencies、peerDependencies、bundledDependencies、optionalDependencies

配置规则

"dependencies": {"antd": "ant-design/ant-design#4.0.0-alpha.8",
"axios": "^1.2.0",
"test-js": "file:../test",
"test2-js": "http://cdn.com/test2-js.tar.gz","core-js": "^1.1.5",}

依赖配置遵循下面几种配置规则:

  • 依赖包名称:VERSION
  • VERSION是一个遵循SemVer规范的版本号配置,npm install 时将到npm服务器下载符合指定版本范围的包。
  • 依赖包名称:DWONLOAD_URL
  • DWONLOAD_URL 是一个可下载的tarball压缩包地址,模块安装时会将这个.tar下载并安装到本地。
  • 依赖包名称:LOCAL_PATH
  • LOCAL_PATH 是一个本地的依赖包路径,例如 file:../pacakges/pkgName。适用于你在本地测试一个npm包,不应该将这种方法应用于线上。
  • 依赖包名称:GITHUB_URL
  • GITHUB_URLgithubusername/modulename 的写法,例如:ant-design/ant-design,你还可以在后面指定 tagcommit id
  • 依赖包名称:GIT_URL
  • GIT_URL 即我们平时clone代码库的 git url