美文网首页
发布自己的npm模块

发布自己的npm模块

作者: 张先森Mr_zhang | 来源:发表于2019-07-25 15:42 被阅读0次

1. 前提&说明

安装node.js
说明:本篇文章提到的指令等都是Mac的,在Windows可能有些不同。

2. 注册npm账号

首先得有一个npm账号 注册地址

3. 开始写我们的模块

因为我们发布的包不能与已有的npm模块名冲突,所以建议先检查一下我们想创建的包是否名字重复。
校验地址 ,在此页面中搜索你想创建的npm模块名称,看是否已经存在。

开始创建我们的项目:(我发布了一个正则校验的模块,以这个为例)

mkdir regexpForYou
cd regexpForYou
npm init
// package name 为我们发布后的npm模块名字
// 其他项可以默认,直接回车即可

4. 项目目录结构

先看一下项目目录结构,部分文件稍后会提到

├── lib // npm run build生成的文件
| ├── index.js
├── src // 项目源码
| ├── index.js
├── test // 测试用例
| ├── test.js
├── .babelrc
├── package.json
├── README.md

5. 项目的一些配置

  • 安装babel

因为我们在src目录写的时候,用到es6的语法,所以需要用Babel编译。

npm install --save-dev babel-cli
npm install --save-dev babel-preset-es2015

新建配置.babelrc, 配置 .babelrc

{
  "presets": ["es2015"]
}

我们把 src 目录里的代码编译到 lib 目录,然后我们在 package.json 里,把 "main" 改为 "lib/index.js",这样对外暴露出去的代码就不会出现兼容性问题。

修改package.json文件的scripts

"scripts": {
    "build": "babel src -d lib"
}

这样运行npm run build就会编译源文件到 lib 目录了

6. src文件编写

src目录下,新建reg.jsindex.js

// reg.js
export const AmountReg = /^-?(\d|([1-9]\d+))(\.?\d{1,2})?$/
export const PIntReg = /^(\d|([1-9]\d+))$/
export const PNIntReg = /^-?(\d|([1-9]\d+))$/
// index.js
import * as REG from './reg'

export function testAmount(str) {
    return REG.AmountReg.test(str)
}
export function testPIntReg(str) {
    return REG.PIntReg.test(str)
}
export function testPNIntReg(str) {
    return REG.PNIntReg.test(str)
}

7. 单元测试

为了保证发布质量,需要写单元测试,这里我们使用 mochachai 做测试

npm install mocha chai --save-dev

新建test文件夹,test.js文件

// test.js
const chai = require('chai')
const should = chai.should()
const regTest = require('../lib/index')

describe("测试正负两位小数正则",() => {
    it('test -2.33 should equal true',() => {
        regTest.testAmount('-2.33').should.equal(true)
    })
})

describe("测试正负两位小数正则",() => {
    it('test -2.333 should equal false',() => {
        regTest.testAmount('-2.333').should.equal(false)
    })
})

describe("测试正整数",() => {
    it('test -2 should equal false',() => {
        regTest.testPIntReg('-2').should.equal(false)
    })
})

describe("测试正整数",() => {
    it('test 2 should equal true',() => {
        regTest.testPIntReg('2').should.equal(true)
    })
})

describe("测试正负整数",() => {
    it('test -2 should equal true',() => {
        regTest.testPNIntReg('-2').should.equal(true)
    })
})

describe("测试正负整数",() => {
    it('test 2 should equal true',() => {
        regTest.testPNIntReg('2').should.equal(true)
    })
})

describe("测试正负整数",() => {
    it('test 2.22 should equal false',() => {
        regTest.testPNIntReg('2.22').should.equal(false)
    })
})

修改package.json文件的scripts

"scripts": {
    "test": "npm run build && mocha -t 5000"
}

在终端执行npm run test,看到执行结果

测试正负两位小数正则
    ✓ test -2.33 should equal true

  测试正负两位小数正则
    ✓ test -2.333 should equal false

  测试正整数
    ✓ test -2 should equal false

  测试正整数
    ✓ test 2 should equal true

  测试正负整数
    ✓ test -2 should equal true

  测试正负整数
    ✓ test 2 should equal true

  测试正负整数
    ✓ test 2.22 should equal false


  7 passing (8ms)

8. 发布自己的npm模块

  • 首次上传:
npm login
// 根据提示输入之前注册的账号、密码
// 发布npm包:
npm publish
  • 更新自己的NPM包:
npm version patch
npm publish
// npm version后面参数说明:
// patch:小变动,比如修复bug等,版本号变动 v1.0.0->v1.0.1
// minor:增加新功能,不影响现有功能,版本号变动 v1.0.0->v1.1.0
// major:破坏模块对向后的兼容性,版本号变动 v1.0.0->v2.0.0

9. 使用自己发布的模块

npm install --save regexp-for-you
const regexp = require('regexp-for-you');
console.log(regexp.testAmount('-2.333'))

运行示例代码:node test.js ,输出 false,和预期一致。

相关文章

  • 发布自己的npm模块

    1. 前提&说明 安装node.js说明:本篇文章提到的指令等都是Mac的,在Windows可能有些不同。 2. ...

  • 发布、安装自己的npm模块

    安装Node,可以去Node官网或者中文网下载文件自行安装。 在npm网站注册一个自己的账号,待会儿会用到这个账号...

  • npm public发布自己的模块

    参考文章:NPM Publish发布自己的模块[https://blog.csdn.net/blackwuxin/...

  • 如何发布自己模块到NPM

    创建项目 接着就依次填写, 不想填写的话也可以一路Enter name:模块名,之后发布之后就可以让用户npm i...

  • 如何发布自己的NPM包(模块)?

    1.注册NPM 账号注册地址:https://www.npmjs.com/[https://link.zhihu....

  • less2er npm模块发布-编译less到css

    类似的模块已经很多,只是通过造轮子,熟悉npm模块的发布流程 项目地址 国内 https://npm.taobao...

  • npm私库发布模块

    npm私库是通过nexus搭建的。nexus的版本是3.x,后面相关的介绍主要是在nexus3.x基础上进行说明的...

  • NPM-在npm上发布模块

    前言 入行前端也不少时间了,之前一直都在使用npm install别人的模块/组件,那么作为一名有追求的前端肯定不...

  • 打造简易的 NPM 私有仓库

    我们通常通过 npm 来安装和使用开源的模块。但是,通常我们有些私有的模块,不想通过npm发布,但是又想在一些项目...

  • 记录下npm 发布模块

    npm login npm whoami 查找自己的用户名 npm init npm publish更新的话在p...

网友评论

      本文标题:发布自己的npm模块

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