SunXinFei / sunxinfei.github.io

前后端技术相关笔记,已迁移到 Issues 中
https://github.com/SunXinFei/sunxinfei.github.io/issues
32 stars 3 forks source link

npm包二三事 #5

Open SunXinFei opened 6 years ago

SunXinFei commented 6 years ago

在此之前先说下nrm,因为国内的开发者一般为了速度,是将自己的npm镜像设为taobao的那个,在这里如果使用该网址,会出现一些错误no_perms Private mode enable, only admin can publish this module:xxx,所以我们需要nrm这个工具来切换我们的NPM源,这点一定要注意。

  1. 首先在npm官网注册
  2. 在本地输入命令npm adduser,然后输入用户名,密码,邮箱即可登入成功,登陆成功后,输入npm whoami如果出现了你的用户名,说明你已经成功登陆了。
  3. 选择一个文件夹,执行npm init命令,
  4. 接下来就是一长串表单:
SunXinFei commented 3 years ago

控制npm上传的文件

主要是通过package.json中的files属性,如files:["package.json","src"],表示发布文件的白名单。 当然也可以通过.npmignore设置黑名单 优先级是files>.npmignore>.gitignore

cdn的方式查看npm包的文件

如https://classic.yarnpkg.com/zh-Hans/package/react-grid-layout-between 这个网站给出了三种CDN的方式访问npm包文件: https://bundle.run/react-grid-layout-between@1.0.0 https://unpkg.com/browse/react-grid-layout-between@1.0.0/ https://cdn.jsdelivr.net/npm/react-grid-layout-between@1.0.0/ 和一种在线查看方式: https://classic.yarnpkg.com/zh-Hans/package/react-grid-layout-between?files

关于npm版本号

npm版本号对于npm开发者来说是需要控制好的,避免出现使用者更新包之后出现不可使用的情况。 规范下的程序版本号使用的描述格式是:主版本号.次版本号.修订号,版本号递增规则如下:

先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。

详情见:https://github.com/SamHwang1990/blog/issues/7

关于npm其他的依赖版本类型

除了上面符合semver 的版本号声明外,npm、yarn 还支持扩展的版本号声明来支持git、github 等:

上面的git url、user/repo均支持使用commit-ish 作后缀来更精确的指向项目的某次提交、某个tag 或某个分支。

关于peerDependencies

peerDependencies的目的是提示宿主环境去安装满足插件peerDependencies所指定依赖的包,然后在插件import或者require所依赖的包的时候,永远都是引用宿主环境统一安装的npm包,最终解决插件与所依赖包不一致的问题。 参考:https://segmentfault.com/a/1190000022435060

npm包版本管理

生成测试包:npm version prerelease --preid=beta 发布测试包: npm publish --tag beta

发布正式包

npm version patch 
npm publish

指定版本 npm version 0.2.0-beta.0 发布正式包

npm version minor
npm publish

查看tag列表:npm dist-tag ls 查看npm包信息:npm info

参考:https://github.com/canvasT/blog/issues/2

package-lock.json 与 npm ci

image

参考:https://juejin.cn/post/7078233610683170824