接前一篇文章,如果创建的 NPM 包在 NPM 上已经存在,那么此时可以修改包名,或者通过Scoped NPM包的方式发布。
Scoped NPM包是指那些以@符号开头的NPM包,这些包通常用于组织内部的项目。
创建一个Scoped NPM模块
在创建NPM模块之前,你需要先创建一个Scoped NPM模块。
$ mkdir my-npm-package
$ cd my-npm-package
$ npm init --scope=@<user>
如果工程已经创建了,可以在工程目录下运行 npm adduser 来添加用户
$ npm adduser --scope=@<user>
此时package.json文件中name字段会包含scope内容<user>,比如:
...
"name": "@<user>/my-npm-package",
...
添加模块代码
创建新文件 index.js,内容如下
function helloworld() {
console.log('Hello World!');
}
module.exports = helloworld;
测试模块
在模块目录(my-npm-package)下执行
$ cd my-npm-package
$ npm link
创建一个新的工程来使用上面创建的模块,比如测试模块叫 my-npm-package-test
$ mkdir my-npm-package-test
$ cd my-npm-package-test
$ npm init
在 my-npm-package-test 工程中使用 my-npm-package 模块
$ cd my-npm-package-test
$ npm link @<user>/my-npm-package
此时会在 my-npm-package-test 工程中创建一个软链接,指向 my-npm-package 模块的安装路径。
创建测试代码,比如创建 test.js 文件,内容如下,导入包的时候需要添加scope内容<user>。
const helloworld = require('@<user>/my-npm-package');
helloworld();
运行测试
$ node test.js
Hello World!
由于是软链接,所以 my-npm-package 模块的代码修改后,不需要重新安装,直接在 my-npm-package-test 工程中重新运行测试即可。
发布NPM包
在发布之前,需要先登录NPM账号,执行命令 npm login 即可。
$ cd my-npm-package
$ npm login
$ npm publish --access public
npm notice
npm notice 📦 @<user>/my-npm-package@1.0.0
npm notice === Tarball Contents ===
npm notice 90B index.js
npm notice 223B package.json
npm notice === Tarball Details ===
npm notice name: @<user>/my-npm-package
npm notice version: 1.0.0
npm notice filename: <user>-my-npm-package-1.0.0.tgz
npm notice package size: 340 B
npm notice unpacked size: 313 B
npm notice shasum: 4cbb2d61be9bdf5ab17a2bc5cb6db4291b6b7e72
npm notice integrity: sha512-MBs8eZHqNxtuJ[...]yHLetbBi3ZL6A==
npm notice total files: 2
npm notice
npm notice Publishing to https://registry.npmjs.org/ with tag latest and public access
+ @<user>/my-npm-package@1.0.0
删除NPM模块
如果后面要删除已经发布的NPM模块,可以通过命令 npm unpublish 来实现。
$ npm unpublish @<user>/my-npm-package --force
安装使用NPM模块
$ cd my-npm-package-test
# 先删除原来的link
$ npm unlink @<user>/my-npm-package
# 安装NPM模块
$ npm install --save @<user>/my-npm-package
网友评论