描述

原文档地址:https://docs.npmjs.com/misc/scope

所有npm模块都有name,有的模块的name还有scope。scope的命名规则和name差不多,同样不能有url非法字符或者下划线点符号开头。scope在模块name中使用时,以@开头,后边跟一个/ 。package.json中,name的写法如下:

@somescope/somepackagename

scope是一种把相关的模块组织到一起的一种方式,也会在某些地方影响npm对模块的处理。

npm公共仓库支持带有scope的的模块,同时npm客户端对没有scope的模块也是向后兼容的,所以可以同时使用两者。

安装带有scope的模块

带有scope的模块安装在一个子目录中,如果正常的模块安装在node_modules/packagename目录下,那么带有scope的模块安装在node_modules/@myorg/packagename目录下,@myorg就是scope前面加上了@符号,一个scope中可以包含很多个模块。

安装一个带有scope的模块:

npm install @myorg/mypackage

在package.json中写明一个依赖:

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

如果@符号被省略,那么npm会尝试从github中安装模块,在npm install命令的文档中有说明 https://docs.npmjs.com/cli/install

require带有scope的模块

在代码中require一个含有scope的模块:

require('@myorg/mypackage')

nodejs在解析socpe模块的时候,并没有把它当做一个有什么蹊跷的东西来处理,仅仅是按照路径去找@myorg目录下的mypackage模块

发布带有scope的模块

带有scope的模块可以被发布到任意支持socpe模块的npm仓库,包括npm公共仓库,公共仓库从2015-04-19就开始支持带有scope的模块了。

如果有必要,可以把某个scope关联到某个仓库,见下面的说明。

如果要发布一个公共socpe模块,你必须在最开始发布的时候指定--access public。这样会让模块能被公开使用,就像在publish之后运行了 npm access public命令一样。

如果要发布私有模块,那么你必须有一个npm私有模块账户,可以选择自己搭建一个npm服务,或者直接使用官方的,官方的需要支付7刀/月。

发布私有模块的命令:

npm publish

或者

npm publish --access restricted 。

即发布socpe模块时,默认就是restricted的。
这些在npm publish文档里边可以看到详细说明。 https://docs.npmjs.com/cli/publish

将一个scope和一个仓库关联

scope可以和一些自己搞的npm仓库关联起来。这样你就可以同时使用npm公共仓库和一些其他的私有仓库中的模块,例如企业npm。
可以用npm login把scope关联到一个仓库:

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

scope和仓库可以是一个多对一的关系:一个仓库里边可以放多个scope,但是一个scope同时只能放在一个仓库中。
也可以用npm config把scope关联到一个仓库:

npm config set @myco:registry http://reg.example.com

当一个scope关联到一个私有仓库之后,该scope下的模块在npm install的时候都会从它关联的仓库中获取模块,而不是npm配置的仓库,发布的时候也是同样的道理,会发布到它关联的仓库而不是npm配置的仓库。

相关文档

本文转自我的个人网站,原文地址,欢迎前往交流讨论

最新文章

  1. javascript的垃圾收集机制
  2. websocket初探
  3. iOS检查App新版本并更新新版本
  4. 《征服 C 指针》摘录6:解读 C 的声明
  5. 分析案例:应用服务器W3WP进程CPU持续超过百分之九十(Oracle客户端Bug)
  6. Windows系统安装Oracle 11g数据库
  7. ExtJs4.2 知识点
  8. HDU-2700 Parity
  9. 【产品体验】ONE一个
  10. [经典] Best Time to Buy and Sell Stock
  11. 20个 Unix/Linux 命令技巧
  12. hibernate 一张数据表的流程
  13. Appium 的安装启动
  14. 使用免费 mongodb数据库 + 免费node.js服务器搭建小程序接口
  15. axure8.0激活
  16. TestNg 8.参数化测试 - xml
  17. 在Ubuntu18.04下配置hadoop集群
  18. Docker构建文件
  19. 功率因数cosφ仪表盘
  20. 网络基础之 tcp/ip五层协议 socket

热门文章

  1. ABP框架 - OData 集成
  2. 我为Net狂 ~ 社交平台系列小集合!
  3. Web Api 入门实战 (快速入门+工具使用+不依赖IIS)
  4. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part2:clusterware安装和升级
  5. C# 生成验证码图片时消除锯齿
  6. WebApi基于Token和签名的验证
  7. [数据结构]——链表(list)、队列(queue)和栈(stack)
  8. 如何使用swing创建一个BeatBox
  9. StatePattern(状态模式)
  10. Flex 布局教程:实例篇