美文网首页
创建并发布 Scoped NPM 模块

创建并发布 Scoped NPM 模块

作者: kongxx | 来源:发表于2024-08-07 09:01 被阅读0次

    接前一篇文章,如果创建的 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
    

    相关文章

      网友评论

          本文标题:创建并发布 Scoped NPM 模块

          本文链接:https://www.haomeiwen.com/subject/gzpqkjtx.html