npm新的包名规范

npm官方对包的命名方式进行了一些修改,为的是更好的防御「误植」攻击,同时帮助包开发者们挑选出更加合适的包名

image.png

1、包名类似,拒绝发布

把包名中的标点符号去掉并与现有的包进行比较,相同则不允许发布

例如:react-native已经存在,那么诸如

  • reactnative
  • react_native
  • react.native

的就不可以再发布了

2、使用作用域

如果因为你起的包名与现有的包名太相近而被阻止发布这个包,那么找到一个独一无二包名最简单方法就是使用自己的作用域。你可以使用@+你的npm用户名加在包名前面将包划到你的npm账户作用域下。比如,我的npm用户名是caowen,所以我的作用域是@caowen

所以在package.json文件里把

{
    "name": “react-native"
}

修改成

{
    "name": “@caowe/react-native"
}

然后我要发布这个包。被划了作用域的包默认是私有的,所以要通过—access=public让它变为公有的包:

> npm publish --access=public
+ @caowe/react-native@1.0.0

3、包命名的历史

在npm注册表上,包名的历史是一个很小心的地添加条件限制的过程。在最早的时候,npm允许在包名上添加url安全字符,包括大写和小写字母。但是现在创建的包名中不能再有大写字母了,但是在npm注册表中那些包名中有大写字母的包依然存在也依然在使用,包名仅仅在大小写上的差异让我们第一次遇到了误植事件!

可能大多数人遇到的例子是jsonstream。JSONStream 和 jsonstream 是不同的包但是很难区分,在一些大小写不敏感的系统中安装这些包就可能有问题

4、好的包名可以帮助到所有人

我们希望新的包名规则可以帮助包开发者们挑选出合适的名字,并且能够帮助用户去避免意外获取到错误的包。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,080评论 25 709
  • React-Native开发规范 标签(空格分隔): React-Native JavaScript 一、编程规约...
    德山_阅读 5,493评论 1 0
  • 你活了这么多年?有没有亲自思考题目中这个问题? 康德何许人也?伊曼努尔·康德(Immanuel Kant, 172...
    山中君阅读 8,612评论 0 0
  • 我们出了远门,总要在生命的某个时刻决定要回头,扔下所有的借口,搭上归来的列车。不知道什么原因,离去的时候,我们的记...
    白纸上的墨香阅读 3,321评论 0 0
  • 大家好,我是成都分公司服务部刘宛霞,因为还要念书,很遗憾不能继续待在企业湾这个温暖的大家庭了,在此特向各位领导、同...
    她的猫先生阅读 2,924评论 0 0

友情链接更多精彩内容