之前看到一个新闻,有一个家伙将某个电视剧上传到了 npmjs 仓库中,由于 npmjs 有一些 cdn 支持,直接将薅别人的羊毛,真的是太不讲武德了,哈哈哈,真是太有才了。
npmjs 是一个 js 项目仓库分发共享平台,允许全世界的 nodejs 爱好者将创建的项目推送到仓库中,类似 java 项目的 Maven 中央仓库。
那么我们如何将我们的静态资源上传上去呢?其实比较简单,也就分 3 步:
-
拥有一个 npmjs 的账号
-
创建一个项目
-
登录账号并推送项目
创建 npmjs 账号
这个应该没啥难度啊,不细讲了,直接自己注册即可。
npm | Homehttps://www.npmjs.com/
创建一个项目
创建项目也比较简单,你本地安装好 nodejs, npm 直接找个目录初始化一个 nodejs 项目即可。
注:如果不会安装 nodejs, npm 我前面的文章有介绍到,可以翻一翻,还有更多实用的文章哟!
mkdir npm-pub-test
cd npm-pub-test
npm init -y
touch index.js
会创建一个默认的 package.json
里面自动填充了一些字段,比如 name, version
默认创建的项目 name 会根据 当前所在的目录进行命名,这个名称是可以更改的,在推送到 npmjs 时这个名称有一些要求(不能重名),我们首先要知道一下 npmjs 的 scope 的概念。
默认的免费账号是不支持私有 仓库 的, 必须是 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 去掉,如果不去掉会登录到 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 没法存放私有包,阿里云提供的云效是个不错的选择,作为个人或小团队的私有包保管平台不要太爽,回头有空再为大家介绍云效吧,也可以自行到下面的地址去看:
END
好了,今天的分享就到这里,欢迎到我的个人站点 huangyanxiang.com 或者 个人公&号:新质程序猿 查看更多内容。
感谢大家的阅读,如果有任何异议的地方,欢迎指正,也欢迎大家与我做朋友!