阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      NPM 包名称作用域/scope的详细解读

      说明

      所有 npm 软件包都有一个名称。

      某些软件包名称也有作用域。

      范围遵循包名称的常用规则(URL 安全字符,无前导点或下划线)。在软件包名称中使用时,作用域前面带有@符号,后面带有斜杠,例如

      @somescope/somepackagename
      

      范围是将相关软件包组合在一起的一种方式,并且还会影响 npm 处理软件包的方式。

      每个 npm 用户/组织都有自己的范围,只有您可以在自己的范围内添加软件包。

      这意味着您不必担心有人会在您之前使用您的包名称。

      因此,这也是向组织发出正式文件包的好方法。

      有作用域的软件包可以从npm@2npm主注册表开始发布和安装。无作用域的程序包可以取决于作用域程序包,反之亦然。

      npm 客户端与无作用域的注册表向后兼容,因此它可以用于同时作用域和无作用域的注册表。

      安装作用域包

      范围内的软件包将安装到常规安装文件夹的子文件夹中,例如,如果您将其他软件包安装在node_modules/packagename,则范围内的模块将安装在中node_modules/@myorg/packagename。作用域文件夹(@myorg)只是作用域的名称,后跟一个@符号,并且可以包含任意数量的作用域包。

      甲作用域包由按名称引用它,由前面安装 @符号,在 npm install:

      npm install @myorg/mypackage
      

      或在 package.json:

      "dependencies": {
        "@myorg/mypackage": "^1.3.0"
      }
      

      请注意,如果@省略该符号,则无论哪种情况,npm 都会尝试从 GitHub 安装;见 npm-install。

      要求范围内的软件包

      由于将范围包安装在范围文件夹中,因此在代码中需要它们时,必须包括范围名称。

      require('@myorg/mypackage')
      

      Node 处理范围文件夹的方式没有什么特别的。这仅需要 mypackage 名为的文件夹中的模块@myorg。

      发布作用域包

      范围包可以从 CLI 开始发布,npm@2 并且可以发布到支持它们的任何注册表,包括主要 npm 注册表。

      (自 2015 年 4 月 19 日起,在 npm 2.0 或更高版本中,主要 npm 注册表 确实支持作用域软件包。)

      如果您愿意,可以将范围与注册表关联。见下文。

      将公共范围的程序包发布到主要的 npm 注册表

      要发布公共范围的程序包,必须指定--access public初始发布。这将发布程序包,并设置对 public 您的访问权限,就好像您npm access public在发布后运行了该程序包一样。

      将私有范围的程序包发布到 npm 注册表

      要将私有范围的程序包发布到 npm 注册表,您必须具有 npm 私有模块 帐户。

      然后,您可以使用npm publish或来发布模块npm publish --access restricted,并且该模块将出现在 npm 注册表中,并且具有受限访问权限。然后,您可以根据需要npm access通过 npmjs.com 网站或在 npmjs.com 网站上更改访问权限。

      将范围与注册表关联

      范围可以与单独的注册表关联。

      这使您可以无缝地混合使用主要 npm 注册表和一个或多个私有注册表(例如 npm Enterprise)中的软件包。

      您可以在登录时将范围与注册表关联,例如

      npm login --registry=http://reg.example.com --scope=@myco
      

      范围与注册表具有多对一的关系:一个注册表可以托管多个范围,但是一个范围只能指向一个注册表。

      您还可以使用npm config以下方式将作用域与注册表关联:

      npm config set @myco:registry http://reg.example.com 将范围与注册表关联后,npm install具有该范围的软件包的任何内容都将向该注册表请求软件包。任何 npm publish一个包含范围包名称将被发布到注册表来代替。

      目录
      目录