手把手教你玩转npm包

【npm是什么】

官网是这个:npm

官网介绍:npm is the package manager for javascript,

npm是js的包管理器,更多的用于nodejs端。

基本上每种语言都有自己的包管理器,nodejs是npm以及yarn;

java是ant,maven,gradle;

python有很多包管理器;

ruby是rubygem。

如果你熟悉以上某种包管理器,那么npm也是大同小异的。

【npm常用命令】

基于package.json安装项目依赖包

npm install

安装一个npm包

npm install express
or
npm i express

卸载一个npm包

	
npm uninstall express

列出当前使用到的npm包

npm list

以上命令添加-g后为全局使用,

熟悉以上命令基本可以简单使用npm了。

【npm init】

熟悉常用命令后,开始各种npm install,或者npm install -g,

某天想自己发布一个npm包,发现有点茫然,那就从头开始。

第一步是npm init,

首先创建一个文件夹,然后cd到文件夹下,然后执行npm init,

发现需要你输入一些信息,依次输入,

package name,包名是什么,也就是最终其他人npm install xxx,这个xxx就是包名;

version,版本号;

description:描述;

entry point:入口js;

test command:测试命令,暂时空开;

gir repository:git库地址,暂时空开;

keywords:关键字;

author:作者,先写你的名字;

license:协议;

最后询问你是否生成package.json,输入y回车。

【写一个简单的例子】

在这个文件夹下,新建lib,test文件夹,

新建index.js文件,

// nothing

新建lib/qiao.test.demo2.js文件,

/**
* say hello
*/
exports.sayHello = function(){
    console.log('hello world!');
};

新建test/test.js文件,

var qiaoTestDemo2 = require('../lib/qiao.test.demo2.js');

function test(){
    qiaoTestDemo2.sayHello();
}

test();

测试一下,执行node test/test.js,

【开始第一次发布】

创建帐号

首先需要注册一个帐号,输入npm adduser,然后输入姓名,密码,邮箱,注意,密码不能过于简单

激活邮箱

npm adduser成功后,npm会给你的邮箱发一封邮件,需要激活,如果不激活就发布npm包会报错,如下

首次发布

npm publish

验证1

在npm官网搜索qiao.test.demo2,可以搜索到

验证2

npm install qiao.test.demo2可以安装

【实战一个小功能】

如上,已经可以发布一个npm包了,但是发布的包基本没啥用,

接下来实战一个小功能,基于archiver封装一个压缩zip的功能,

首先快速的看一遍archiver的文档:archiver - npm

提炼出核心代码到lib/qiao.test.demo2.js中,如下

var fs             = require('fs');
var archiver     = require('archiver');

/**
* zip folder
* destZip, d:/1.zip
* sourceFolder, d:/test1 
* cb, callback
*/
exports.zipFolder = function(destZip, sourceFolder, cb){
    // init
    var output = fs.createWriteStream(destZip);
    var archive = archiver('zip', {
        zlib: { level: 9 }
    });
     
    // on
    output.on('close', function() {
        cb(null, '压缩完成!');
    });
    archive.on('error', function(err) {
        cb(err);
    });

    // zip
    archive.pipe(output);
    archive.directory(sourceFolder, false);
    archive.finalize();
};

test/test.js修改为:

var qiaoTestDemo2 = require('../lib/qiao.test.demo2.js');

function test(){
    var destZip            = 'd:/1.zip';
    var sourceFolder     = 'd:/test1';

    qiaoTestDemo2.zipFolder(destZip, sourceFolder, function(err, msg){
        if(err) throw err;

        console.log(msg);
    });
}

test();

执行node test/test.js发现报错,如下

原来是没有引入archiver,这个时候执行npm install archiver,

然后再次执行node test/test.js,看到压缩完成,如下

【再次发布】

压缩一个文件夹的功能,基于archiver包已经实现,现在可以再次发包,

需要将package.json中的version修改为0.0.2,如下

{
  "name": "qiao.test.demo2",
  "version": "0.0.2",
  "description": "qiao test demo 2",
  "main": "index.js",
  "scripts": {
  },
  "keywords": [
    "qiao",
    "test",
    "demo",
    "2"
  ],
  "author": "qiaowenbin",
  "license": "MIT",
  "dependencies": {
    "archiver": "^2.1.0"
  }
}

同时你会发现,dependencies中添加对archiver的依赖

再次执行npm publish,发布qiao.test.demo2 0.0.2版本成功

【使用自己的包】

npm包已经发布完毕,现在要测试如果是其他人安装你的包后是否可以使用,

新建一个文件夹,写一个test.js如下

var qiaoTestDemo2 = require('qiao.test.demo2');

function test(){
    var destZip            = 'd:/1.zip';
    var sourceFolder     = 'd:/test1';

    qiaoTestDemo2.zipFolder(destZip, sourceFolder, function(err, msg){
        if(err) throw err;

        console.log(msg);
    });
}

test();

注意,和之前test/test.js的不同是require不同,这次是直接引用,

然后执行node test.js,发现报错,是没有引用qiao.test.demo2包,

执行npm install qiao.test.demo2,安装包,再次执行node test.js,

发现还是报错,报错如下:

zipFolder未定义,但是lib/qiao.test.demo2.js中是有定义的,问题出在哪里,

出在index.js中,因为index.js是你这个包的入口,而目前的index.js是空的,需要修改为:

module.exports = require('./lib/qiao.test.demo2');

再次发布为0.0.3版本,再次安装,再次执行node test.js,成功,

【小结一下】

目前可以做到的是:

1.注册npm

2.发布npm包

3.实现压缩文件夹功能

4.将该包对外

【readme.md】

在npm官网上搜索qiao.test.demo2,点进去,发现页面是空白的,

不像其他npm包一样,有详细的介绍,如下

因为包下没有readme.md文件,添加一个readme.md,如下,markdown的语法可以自行百度,

# qiao.test.demo2
---
zip folder by archiver

# install
---
npm install qiao.test.demo2

# zip folder
---
    var qiaoTestDemo2 = require('../lib/qiao.test.demo2.js');

    function test(){
        var destZip            = 'd:/1.zip';
        var sourceFolder     = 'd:/test1';

        qiaoTestDemo2.zipFolder(destZip, sourceFolder, function(err, msg){
            if(err) throw err;

            console.log(msg);
        });
    }

    test();

将package.json中的version修改为0.0.4,再次npm publish,刷新npm页面,如下

【丰富package.json】

接下来还可以丰富下package.json文件,最简单的方法是看文档,或者下载一个成熟的npm包进行模仿,

比如npm install express后看express的package.json是怎么写的,

丰富后如下,主要丰富了author,homepage,repository,

{
  "name": "qiao.test.demo2",
  "version": "0.0.4",
  "description": "qiao test demo 2",
  "main": "index.js",
  "scripts": {
  },
  "keywords": [
    "qiao",
    "test",
    "demo",
    "2"
  ],
  "author": {
    "name": "qiaowenbin",
    "email": "npm@insistime.com",
    "url": "http://insistime.com"
  },
  "homepage": "http://insistime.com/",
  "license": "MIT",
  "dependencies": {
    "archiver": "^2.1.0"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/ your github url"
  }
}

一般npm包都会开源到github上一份,package.json中的repository会指向github,用户可以直接查看源码

【.npmignore】

需要注意的一点是npm发布后不能撤回,也就是千万不要把一些重要的配置文件发布上去,

这个时候需要用的npmignore文件,类似gitignore,

配置好后就可以忽略一些不想上传的文件

【npm脚本】

细心的同学会发现,最开始npm init的时候有一项是test commad,之前的空的,

现在需要稍作修改,在package.json中修改为:

"scripts": {
      "test" : "node test/test.js"
  },

之后就可以执行npm run test,如下

你也可以添加其他脚本,在package.json中的script下添加,key-value,value为要执行的命令,

然后就可以使用npm run key的方式执行对应的value命令

【总结】

1.npm注册

2.npm发包

3.实现压缩文件夹功能

4.将npm包对外

5.添加readme.md

6.丰富package.json

7.添加npmignore

8.使用npm脚本

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用npmvite需要执行以下命令:npm init vite [project-name。其中,是你想要创建的项目名称。这个命令会使用create-vite中的create-vite命令来创建一个名为的vite项目。另外,你也可以使用npm exec create-vite [project-name来达到相同的效果。所以,执行npm create vite命令实际上是执行了npm exec create-vite命令来创建vite项目。npm init命令在这里充当了执行命令的作用。需要注意的是,如果你在国内使用npm,可能需要将npm镜像源切换到官方源,以便能够正常发布npm。可以使用npm config set registry=https://registry.npmjs.org命令来切换镜像源。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [“npm create vite“ 是如何实现初始化 Vite 项目?](https://blog.csdn.net/Cyj1414589221/article/details/128191826)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [使用vite构建Vue3组件库,发布npm](https://blog.csdn.net/y227766/article/details/126426546)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uikoo9

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值