当前位置:首页 > 技术文章 > 正文内容

还没有开始用自己的npm包吗,简单几步就搞定了

zonemu16小时前技术文章1

准备工作

npm是一个辅助前端开发的包管理工具。主要设计到两个概念package和module,可以这样理解,一个JavaScript软件,从本地发布到npm仓库时是package,从npm仓库下载到本地时就变成了module。如果要发布自己的包到npm,我们需要注册npm账户。在npm上注册一个账号是很简单的,需要填一下用户名密码邮箱,然后会收到一封邮件,进邮箱验证邮件的真实性。否则发布会报错。

创建包

创建package.json文件

新建一个wave-test文件夹,在文件夹中执行npm init,按照提示一步一步继续就可以了,最后在文件夹生成一个package.json文件,如果该文件夹是一个git仓库,它会提示一步步填上对应的repository相关的地址,这个将来发布到npm上的时候会在相应的页面上显示。

{
  "name": "wave-test",
  "version": "0.0.1",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
  },
  "keywords": [],
  "author": "wavesnow",
  "license": "MIT"
}

创建一个入口文件index.js

我们按照默认的创建一个index.js文件,写一个测试方法getRandomNumber。

(function () {
  'use strict';
    function getRandomNumber() {

        var random = Math.floor(Math.random() * 100);
        if (random >= 100)
            throw new Error("Error");
        return random;
    }
    exports.getRandomNumber = getRandomNumber;
  }());

创建README.md文件

这个文件将来也会将内容显示到发布的npm包所在的页面,用来帮助用户理解说明你发布的包。

发布包

不带命名空间的包

有了上面三个个文件,我们就可以发布npm包了。依次执行下面几个命令,登陆后还需要输入密码及发布用的邮箱,该邮箱会公开。

## 登陆
npm login

## 发布
npm publish

带命名空间的包

如果想发布带命名空间的包,有scope的,那首先应该先去npm网站创建一个组织,这个组织的名字就是一个scope,以发布open的scope为例,后面需要修改一下这个package.json文件,比如申请的scope是myscope,那上面的package文件需要将名字这块做一个修改,其他可以不用动。

{
  "name": "@myscope/wave-test",
  "version": "0.0.1",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
  },
  "keywords": [],
  "author": "wavesnow",
  "license": "MIT"
}

这种包发布的时候,需要加入一个参数--access public,发布私有scope的,访问限制私有的包npm需要收费。

npm publish --access public

使用

和其他包使用是一样的。现有一个测试工程。创建一个test-mypackage文件夹,安装我们的包

mkdir test-mypackage && cd test-mypackage
 
npm init -y

npm i wave-test

然后创建一个index.js文件,引入我们的包

let test = require('wave-test');
test.getRandomNumber();

运行index.js,

node index.js

更新

一个npm包发布之后,我们难免会修改一些bug,或者增改一些功能,这就涉及到对npm包的迭代。其中会涉及到到两个方面,内容的变更和版本的变更。npm采用语义化版本,共三位,以’.’隔开,从左至右依次代表:主版本(major)、次要版本(minor)、补丁版本(patch)。

## 变更版本号的命令
npm version <major | minor | patch>

比如我们执行命令:

npm version minor

package.json中的version变为0.1.1,然后执行发布命令就可以了。

项目中更新对这个包的引用,可以执行

npm up wave-test

废弃或删除

npm包发布后可以对包进行废弃或删除操作。废弃不会将包或版本从npm仓库删除,仍然可以继续下载安装,并在安装的时候会有警示。删除会将包从npm彻底删除,无法被下载安装。无论是废弃还是删除,都包含两个层面:

  • 版本的废弃/删除,鼓励用户更新最新版本
  • 包的废弃/删除,此包内容已经过时,没有了维护的价值

废弃

语法:npm deprecate <pkg>[@<version>] <message>,我们以wave-test为例:

## 废弃指定版本
npm deprecate wave-test@0.0.1 'deprecate reason'

## 废弃指定的包
npm deprecate wave-test 'deprecate reason'

执行后我们用npm view wave-test versions查看版本,记录的版本号并无变化。废弃的包除了安装时会有警示,并不影响使用。

删除

npm不鼓励任何形式的删除,主要因为我们发布的包可能已经被其他人引用,如果我们删除了此包,其他人在重新安装含有我们包的依赖的工程时,出现找不到包问题。

## 任意目录下删除包
npm unpublish wave-test --force

## 开发目录下删除当前版本
npm unpublish --force

相关文章

供热收费管理系统(供热收费管理系统有哪些)

今天来了解《#供热收费管理系统》,它包括如下功能:街道小区设置表格界面,热费标准设置表格界面,优惠设置表格界面,滞纳金设置表格界面,余热比例设置表格界面,用户录入信息窗口,用户档案表格界面,用户录入信...

Vue父子组件参数传递方法(vue父子组件传参方式)

在 Vue 中,父子组件之间的参数传递是常见的需求,主要通过 Props 和 自定义事件 实现。以下是详细说明和代码示例:一、父组件向子组件传递参数(Props)父组件通过 属性 向子组件传递数据,子...

用IDEA开发如何用Git快速拉取指定分支代码?

1,准备空的文件夹,git init2,关联远程仓库,git remote add origin gitlab地址3,拉取远程分支代码,git pull origin 远程分支名再用IDEA打开项目即...

Gitlab 的使用和代码审查流程介绍

1、先简洁介绍下项目常用的信息-面板统计页面2、用户信息面板3、服务器信息4、项目信息5、重点介绍代码提交审核机制和授权合并机制开发人员推送代码的时候不能直接推送到master,否则就会报错。此时开发...

Java教程:GitLab在项目的环境搭建和基本的使用

gitlab-使用入门1 导读本教程主要讲解了GitLab在项目的环境搭建和基本的使用,可以帮助大家在企业中能够自主搭建GitLab服务,并且可以GitLab中的组、权限、项目自主操作GitLab简介...

基于Docker构建安装Git/GitLab,以及制作springboot工程镜像

今天给大家分享的是《领先的开源自动化服务器Jenkins的应用实战》之基于Docker安装构建Git/GitLab版本控制与代码云存储的场所;使用Git管理项目,springboot工程制作镜像知识体...