我正在参与掘金创作者训练营第5期,点击了解活动详情
在前文《NPM教程(一)》中,已经讲解了npm是什么、npm能干什么以及npm如何安装等方面的知识内容。那么接下来,将带着大家对npm中的package基本使用教程进行一一的讲解。
package介绍
当你在开发一个项目的时候,肯定是需要安装各种各样的依赖包,那么这些包该如何统一管理呢?因此,npm提供了一个叫做package.json的文件。
该文件作为一个描述性文件,描述你项目依赖哪些包;同时允许使用语义版本规则,指明你项目依赖的版本;本;最后让你的构建可以更好的与其他人共享。
目前,package的范围主要分为scoped和unscoped两种,其分别对应的可见性以及权限如下表所示:
| 范围 | 访问权限 | 可以查看和下载 | 可以写(可以发布) |
|---|---|---|---|
| 组织(scoped) | 私人的 | 组织中对包具有读取权限的团队成员 | 组织中对包具有读写权限的团队成员 |
| 组织(scoped) | 公开的 | 每个人 | 组织中对包具有读写权限的团队成员 |
| 用户(scoped) | 私人的 | 包所有者和已被授予对包的读取权限的用户 | 包所有者和被授予对包的读写权限的用户 |
| 用户(scoped) | 公开的 | 每个人 | 包所有者和被授予对包的读写权限的用户 |
| unscoped | 公开的 | 每个人 | 包所有者和被授予对包的读写权限的用户 |
注意:只有用户帐户可以创建和管理无范围的包。组织只能管理范围包。
- 无范围的包总是公开的。
- 私有包总是有范围的。
- 范围包默认是私有的;您必须在发布时传递命令行标志才能将它们公开
package创建
前面已经讲述了package文件主要有scoped和unscoped两种形式,那么接下来将分别进行这两种包的创建。
unscoped public package
-
在命令行界面,创建一个用于存放package的文件夹
-
切换至该文件夹目录下
-
运行npm init命令,输入配置信息
-
unscoped public package.json文件创建成功(name为package-file)
scoped public package
-
在命令行界面,创建一个用于存放package的文件夹
-
切换至该文件夹目录下
-
运行npm init --scope=gt命令,输入配置信息
-
scoped public package.json文件创建成功(name为@gt/scoped-package)
由于有范围的私有包需要组织账户才能创建,因此这里就不演示了,有兴趣的可以查看官方文件“Creating and publishing private packages”。
package字段
当package.json文件创建完成后,可以看到其中存在一些字段内容。那么接下来将着重对package所拥有的字段的含义以及功能进行讲解。
"name": "package-file",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
- name:该
"name"字段包含您的包的名称,并且必须是小写字母和一个单词,并且可以包含连字符和下划线。 - version:该
"version"字段包含您的包的版本,在文件中必须存在,同时x.x.x版本需要遵循语义版本控制,并且在每次发布的时候,该字段都需要进行修改。 - description:该
"description"字段包含您的包的具体描述,便于用户搜寻到。 - keywords:该
"version"字段包含您的包的关键词,便于用户搜寻到。 - homepage:该
"homepage"字段包含您的包的官网地址。 - license:该
"license"字段包含您的包所采用的协议,便于用户明晰操作权限。 - author:该
"author"字段包含您的包的作者。 - contributors:该
"contributors"字段包含您的包的主要贡献者。 - files:该
"files"字段包含您的包作为依赖项安装时要包含的文件,即允许被上传的文件。 - main:该
"main"字段包含您的包的入口文件路径,在你通过import或require引用该npm包时就是引入的该路径的文件。 - browser:该
"browser"字段包含您的包在 browser 环境下的入口文件。 - bin:该
"bin"字段包含您的包的可执行文件,并将其加入到path变量中。 - scripts:该
"scripts"字段包含您的包的脚本命令。 - dependencies:该
"dependencies"字段包含您的包在生产环境中所依赖的包。 - devDependencies:该
"devDependencies"字段包含您的包在本地环境中所依赖的包。 - private:该
"private"字段包含您的包的是否运行被发布,可以防止意外发布私有库的风险。
总结
通过上文对package的范围、创建方式以及字段的讲解,我相信大家对npm中package的知识有了更加深入的了解,同时也能根据自己的需求进行很好的使用。
那么接下来的文章,我们将对npm的版本控制、版本锁定以及npm脚本相关的知识进行进一步的讲解。