npm发布包教程(一):从npm提及

做为一个前端,每一个人应该对npm install这个命令应该很是熟悉了,尤为是对这个命令执行过程当中命令窗口疯狂输出确定印象深入。我发现有的同窗对安装包轻车熟路,但对包从哪里来的以及如何发布一个npm并非很了解,基于此,在团队内部作了一次分享,将分享过程整理以下,但愿对每个想发布本身的包但又不知从何开始的同窗有所帮助。前端

因为发布包涉及到发布、安装、更新、删除/废弃等阶段,写在一篇文章中篇幅过长,决定拆开作成一个系列。今天第一篇首先介绍一下npm相关的一些知识。node

1、npm(node package manager)

  • 是一个辅助前端开发的包管理工具
  • 包括:git

    • 网站:找包、注册用户
    • 命令行:程序员与npm交互的主要形式
    • 仓库:最大的JavaScript软件库
  • 管理对象:包(package)
  • 管理方式:程序员

    • 增(发布:npm publish;安装:npm i)
    • 删(废弃:npm deprecate;卸载:npm rm)
    • 改(更新:npm up)
    • 查(搜索:npm s)

npm中涉及到的主体主要有两个:packagemodule,定义以下:github

  • package:含有package.json描述文件发布到npm仓库的文件或者文件夹
  • module:在node_modules中,能够被Node.js的require()方法加载的任何文件或文件夹

能够这样理解:一个JavaScript软件,从本地发布到npm仓库时是package,从npm仓库下载到本地时就变成了modulenpm

另外,基于以上,能够看出package和module的关系:json

  • module不必定是package(好比node内置模块),package必定是module
  • 含package.json文件的module必定是package

除了以上概念外,再分别看下两个主体中的细节部分:segmentfault

2、package(包)

主要有两个重要的属性:babel

1.Scope(做用域,范围)

一旦注册我的或者团体帐户,就得到了与我的或者团体名相匹配的scope,能够用这个scope做为包的命名空间,例如@yuyy、@58。工具

分类:

  • unscoped:例如babel
  • scoped

    • user: 例如@yuyy/babel
    • org:@babel/parser

做用:为你本身发布的包提供命名空间,防止与他人的包名冲突

2.Accessibility(可访问性)

属性值有:

  • private:私有,仅做者本人或团队成员可见
  • public:公有,全部人可见

此属性和github建立仓库时设定访问性的策略一致:公有,全部人可见,免费;私有,仅本身可见,收费。

以上两个属性之间的关系以下:

clipboard.png

须要说明的几点:

  • 我的帐户(User)能够建立和管理Unscoped的package;团队帐户(Org)相互只能管理Scoped的package
  • Unscoped老是public
  • Private的package老是Scoped
  • Scoped的package默认Private,但须要付费,能够经过命令行改变其属性

3、module(模块)

下载到本地的module主要是用于在node环境被引用,为了能被Node.js的require()方法加载,module必须是下列状况之一:

  • 包含package.json,且package.json中有main字段的文件夹
  • 含有index.js的文件夹
  • JavaScript文件

以上都是一些npm相关的知识,在下一篇《npm发布包教程(二):发布包》中,咱们开始演示发布npm包的实际操做过程。

相关文章:
1.《npm发布包教程(一):从npm提及》
2.《npm发布包教程(二):发布包》
3.《npm发布包教程(三):安装发布包》
4.《npm发布包教程(四):迭代》
5.《npm发布包教程(五):废弃/删除》

相关文章
相关标签/搜索