使用 npmjs 存储静态资源,加速资源访问

node   npm   npmjs   tool  
发布于 Oct 9, 2024

之前看到一个新闻,有一个家伙将某个电视剧上传到了 npmjs 仓库中,由于 npmjs 有一些 cdn 支持,直接将薅别人的羊毛,真的是太不讲武德了,哈哈哈。

npmjs 是一个 js 项目仓库分发共享平台,允许全世界的 nodejs 爱好者将创建的项目推送到仓库中,类似 java 项目的 Maven 中央仓库。

那么我们如何将我们的静态资源上传上去呢?其实比较简单,也就分 3 步:

  1. 拥有一个 npmjs 的账号
  2. 创建一个项目
  3. 登录账号并推送项目

创建 npmjs 账号

这个应该没啥难度啊,不细讲了,直接自己注册即可。

https://www.npmjs.com/

创建一个项目

创建项目也比较简单,你本地安装好 nodejs, npm 直接找个目录初始化一个 nodejs 项目即可。

mkdir npm-pub-test
cd npm-pub-test
npm init -y

touch index.js

会创建一个默认的 package.json 里面自动填充了一些字段,比如 name, version

默认创建的项目 name 会根据 当前所在的目录进行命名,这个名称是可以更改的,在推送到 npmjs 时这个名称有一些要求,我们首先要知道一下 npmjs 的 scope 的概念。

官网解释:https://docs.npmjs.com/about-scopes

默认的免费账号是不支持私有 仓库 的, 必须是 public 的,public 也分为 unscoped 和 scoped, 这两个怎么理解呢?其实可以理解为 *全局仓库**带@用户名前缀的仓库* 两种

  • unscoped, 不带 @用户名前缀 的,在 install 的时候直接是 npm i element-ui -S
  • scoped, 都是带有用户名前缀的,在 install 的时候是 npm i @antv/g6 -S

unscoped 要求全局唯一性,考验你取名的能力了,建议咱们普通用户可以使用 scoped 不用操心重名问题。

npm init 的时候是可以直接指定 --scope

npm init --scope=@chinaxiang -y

给 index.js 塞点内容

vim index.js
exports.printMsg = function() {
  console.log("This is a message from the demo package");
}

登录账号

这里的登录指命令行登录,要先把之前配置的 registry mirror 去掉,保留默认的 registry=https://registry.npmjs.org/

执行 npm login ,会让你输入 username, password, email 还有 one-time password.

one-time password 是邮箱接收到的一串数字。

登录成功的提示

查看当前登录用户

发布项目

然后执行 publish 指令,默认 publish 指令是发布为 私有 项目的,当然我们免费用户是没有权限的,需要加一个额外的参数 --access=public

npm publish --access=public

下面是发布成功的记录

CDN 加速

上传到 npmjs 中的资源会拥有 CDN 的加持,如下是两个不错的站点

例如我发布上去的 js 就可以通过下面的地址直接访问

另外,由于 npmjs 没法存放私有包,阿里云提供的云效是个不错的选择,作为个人或小团队的私有包保管平台不要太爽

https://packages.aliyun.com/npm/npm-registry/guide

本次的分享到此结束,希望对你有所帮助。

如果你对我分享的内容感兴趣,欢迎扫码关注公众号:新质程序猿,并设置星标,推送更实时哟!

本文由 黄彦祥 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。
可自由转载、引用,但需署名作者且注明文章出处。