添加到package_npm入门(二)—package(包)的管理

本文介绍了npm包的分类,包括public和private包,以及它们的区别。通过scopes来管理和区分包的命名空间,防止命名冲突,并控制访问权限。详细讲解了如何在npm中创建、转换包的类型,以及私有包的授权和权限管理。最后,阐述了如何使用`npm init`创建package.json文件,初始化npm项目。
摘要由CSDN通过智能技术生成

前言

上一篇 npm入门(一)—了解基本组成与概念 简单介绍了一下npm的相关知识,这篇可以说是npm的核心知识。

分类

关于pacakge,是有分为public pacakge(公共包)、private pacakge(私有包)。前面我们也知道npm账号也有两种,一直的免费用户,一个是付费用户。私有包是付费用户才能发布的。

直观地,在npn website上看,package前面会有个标签标注该包是公有的还是私有的

1c057cb5827aff6537c4d57f23217487.png

scopes

在此之前,我们先了解这么一个概念——scopes(中文意思是作用域)。我们在注册npm账号和创建组织时,你将被授予一个与你的用户或组织名称匹配的范围,即你获得了一个适用范围(scope),这个范围是你的用户名或者创建的组织名。你可以将此范围用作相关包的命名空间。如你有一个package名叫mypackage,你的用户名为myusername,则你可以把这个package放到你的域里

@myusername/mypackage

这样有什么作用呢?

  1. 避免与别人的包重名,发生冲突。
  2. 限制该包的访问权限。假设你是付费用户,想要创建一个私有包,那么可以在你的域里授权哪些用户才能访问

public package

默认地,如果我们不对registry进行了任何设置,那么发布的包就是基于默认的registry(http://registry.npmjs.org)的,发布出来的包是公共的,任何人都可以访问使用。

public package也有两种:

  • unscoped package:这个就是普通的共用包了,没有指定范围
  • scoped package:这个是在划分了范围的包,默认是私有的,但是手动转化为共有的。

private package

私有包,只有付费用户才能创建。私有包,是指只有授权用户才能进行下载发布等管理,而且还能指定各种权限,例如只读只写之类的。

私有包肯定是指定了范围的(scoped),默认地,指定了范围的包都是私有包(当然后面可以手动更改)

私有包可以划分两种

  • 用户范围的私有包:只能由你和你授予读或读/写访问权限的协作者访问。
  • org(组织)范围的私有包:只能被授予读或读/写访问权限的团队访问。

包类型的转换

上面我们知道包的一些分类,那么,如何在需要时改变它们的类型呢?

公有转私有

在npm website上操作的方法就不说了,直接说敲命令的方式:

npm access restricted

替换为真实包名

私有转公有

在npm website上操作的方法就不说了,直接说敲命令的方式:

npm access public

替换为真实包名

需要注意的是,只有是付费用户才能转为私有。

私有包授权用户

私有包有时候为了协作,需要添加其他开发者进行一起管理,所以需要把私有包授权给某些用户。根据私有包类型

用户私有包

在npm website上操作的方法就不说了,直接说敲命令的方式:

npm owner add

组织私有包

要授予npm用户对私有组织包的访问权,您必须有一个组织所有者将它们添加到您的组织中,然后将它们添加到有权访问私有包的团队中。具体步骤参考 这里


创建package

说了那么多,是时候应该知道,如何创建一个package了。

进入你想要创建package的文件夹根目录中,运行以下命令

npm init

进行npm项目(package)的初始化,当运行这个命令后,会出现一个问卷,例如问你项目的名称,作者,描述等信息,你按照实际情况输入回应即可。填完问卷后,会在该目录下生成一个package.json文件,该文件里包含刚回应问卷的一些信息。

如果你懒得一个个回应,可以使用默认的情况,运行

npm init --y 或者 npm init --yes

这样会自动根据你当前目录的情况,生成一系列默认信息在package.json文件。

当然我们也可以设置一些init时的固定指定信息,如

npm set init.author.name xxxx

npm set init.author.email xxxx

这里就设定了init时固定作者信息是啥

如果你想创建的是指定域的包,那么运行

npm init --scope=@yourscopename

yourscopename替换成你想要起的域的名称

package.json

上一篇我们说过,package是由一个package.json文件描述组织起来的,所以这个文件至关重要。先大概看一下这个文件长哪样

{

"name": "xxxx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值