为了深入学习JS我写了一个JS工具库 | 从零到一发布到npm上(2)

简介: 为了深入学习JS我写了一个JS工具库 | 从零到一发布到npm上(2)

使用自己的工具库


新建一个项目,再建一个js文件

在终端输入npm install learnjts

npm install learnjts

安装成功可以看到我们的项目里多了几个文件


image.png


在index.js文件里引入工具函数

有可能还会报 import 引入错误,解决方案和上面一样


image.png


此时可以看到可以正常打印出来数据类型,则说明


添加eslint 和 单元测试


添加一个README.md文档,来介绍自己的工具库


image.png


添加 eslint


既然写都写了,肯定要最好最全面的配置呀,所以我决定添加eslint

两种安装方式,一般选择第二种在当前项目安装

//方式一.全局安装
npm i -g eslint
//方式二.当前项目安装
npm i -D eslint

使用命令配置并生成一个.eslintrc文件

npm init @eslint/config

命令行会有一些简单的配置,生成如下内容

module.exports = {
    "env": {
        "browser": true,
        "node": true,
        "es2021": true
    },
    "extends": "eslint:recommended",
    "parserOptions": {
        "ecmaVersion": "latest",
        "sourceType": "module"
    },
    "rules": {
    }
}

配置一下规则,可以在env里添加node,es6等

module.exports = {
    "env": {
        "browser": true,
        "node": true,
        "es6": true
    },
    "extends": "eslint:recommended",
    "parserOptions": {
        "ecmaVersion": "latest",
        "sourceType": "module"
    },
    "rules": {
        "space-before-function-paren": 0,  // 函数定义时括号前面要不要有空格
        "semi": 0,  // 语句可以不需要分号结尾
        "eqeqeq": 1, // 必须使用全等
    }
}

可以在rules配置一些语法规则

module.exports = {
    "rules": {
        /* 
            "off" -> 0 关闭规则
            "warn" -> 1 开启警告规则
            "error" -> 2 开启错误规则
        */
        "space-before-function-paren": 0,  // 函数定义时括号前面要不要有空格
        "semi": 0,  // 语句可以不需要分号结尾
        "eqeqeq": 2, // 必须使用全等
    }
}

此时再回到getDataType.js文件中去就会发现,没有使用全等的地方爆红了,修改后恢复到正常


image.png


添加单元测试jest


单元测试的执行通常需要测试规范、断言、mock、覆盖率工具等支持

jest是用来创建、执行和构建测试用例的 JavaScript 测试库,自身包含了 驱动、断言库、mock 、代码覆盖率等多种功能

安装

npm i --save-dev jest

把 jest 安装到项目后,在 package.json 添加配置

"scripts": {
  "test": "jest"
}

这样就可以使用命令 npm test 执行测试代码了


image.png


创建一个test/getDataType.test.js文件来测试getDataType方法

import getDataType from '../src/getDataType.js';
test('getDataType(2)===number', () => {
  expect(getDataType(2)).toBe("number");
})
test('getDataType({a:1})===object', () => {
    expect(getDataType({a:1})).toBe("object");
})
复制代码

此时你会发现,又有很多爆红


image.png


解决办法:在「.eslintrc.cjs」 配置"jest": true


image.png


在jest原生测试框架中,无法使用es6的import export语法,只能使用commonJS语法,可以使用下面的方式解决

step1: 在项目根目录下添加.babelrc文件

{
  "env": {
    "test": {
      "plugins": ["@babel/plugin-transform-modules-commonjs"]
    }
  }
}

step2:安装ES6语法解析转换插件

npm install --save-dev @babel/plugin-transform-modules-commonjs

此时再运行

npm test

可以看到我们的单元测试,成功通过


image.png


可以在「package.json」 里多加一个配置

"jest": {
    "collectCoverage": true
},

会生成一个 coverage 报告


image.png


更新


更新之前必须要修改一下版本号,否则就会报错更新失败


image.png


因为之前登录过了,所以直接输入npm publish就可以了

npm publish

再次到npm官网查看自己的库就可以看到,已经更新到1.0.1版本了,并且README文档已经显示出来了


image.png


在项目中引入最新包


在终端输入npm install learnjts@latest

npm install learnjts@latest


image.png


此时可以看到版本已经更到最新了

这就是我搭建一个自己的JS工具库的全部过程了,其中我遇到的问题和解决方案也都有讲解。但是毕竟经验不足,可能会有一些不对的地方或者局限性,仅供参考

learnjts工具库既然已经写出来了,其中也写了一些方法。下一步就准备使用vuepress2.x搭建一个文档,方便查阅和使用

learnjts文档也已经搭建好了,☞使用vuepress搭建learnjts文档详细步骤

learnjts文档演示效果

learnjts项目源码和地址在这里☞github项目地址 |npm项目地址





目录
相关文章
|
JavaScript 前端开发 Java
通义灵码 Rules 库合集来了,覆盖Java、TypeScript、Python、Go、JavaScript 等
通义灵码新上的外挂 Project Rules 获得了开发者的一致好评:最小成本适配我的开发风格、相当把团队经验沉淀下来,是个很好功能……
1900 103
|
12月前
|
JavaScript 前端开发 API
|
11月前
|
资源调度 JavaScript 前端开发
Day.js极简轻易快速2kB的JavaScript库-替代Moment.js
dayjs是一个极简快速2kB的JavaScript库,可以为浏览器处理解析、验证、操作和显示日期和时间,它的设计目标是提供一个简单、快速且功能强大的日期处理工具,同时保持极小的体积(仅 2KB 左右)。
729 24
|
存储 JavaScript 前端开发
在NodeJS中使用npm包进行JS代码的混淆加密
总的来说,使用“javascript-obfuscator”包可以帮助我们在Node.js中轻松地混淆JavaScript代码。通过合理的配置,我们可以使混淆后的代码更难以理解,从而提高代码的保密性。
1219 9
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
623 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
11月前
|
JavaScript 数据可视化 前端开发
three.js简单实现一个3D三角函数学习理解
1.Three.js简介 Three.js是一个基于JavaScript编写的开源3D图形库,利用WebGL技术在网页上渲染3D图形。它提供了许多高级功能,如几何体、纹理、光照、阴影等,以便开发者能够快速地创建复杂且逼真的3D场景。同时,Three.js还具有很好的跨平台和跨浏览器兼容性,让用户无需安装任何插件就可以在现代浏览器上观看3D内容。
404 0
node环境之当我们遇到需要付费的依赖库@fortawesome/fontawesome-pro导致npm install无法进行怎么办-fontawesome-pro依赖库
node环境之当我们遇到需要付费的依赖库@fortawesome/fontawesome-pro导致npm install无法进行怎么办-fontawesome-pro依赖库
472 3
node环境之当我们遇到需要付费的依赖库@fortawesome/fontawesome-pro导致npm install无法进行怎么办-fontawesome-pro依赖库
|
存储 资源调度 JavaScript
npm、cnpm 和 pnpm 是三种常用的 Node.js 包管理工具
npm、cnpm 和 pnpm 是三种常用的 Node.js 包管理工具。npm 是官方默认的包管理器,提供依赖管理、安装和更新等功能;cnpm 是由阿里巴巴开发的 npm 镜像,专为中国大陆用户优化,解决下载速度慢的问题;pnpm 通过硬链接技术提高安装速度并节省磁盘空间,特别适合磁盘资源紧张的环境。三者命令类似,但各有特色,开发者可根据需求选择合适的工具。
2073 5
|
JavaScript 前端开发
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?
如何在项目中使用Moment.js库?
如何在项目中使用Moment.js库?

推荐镜像

更多
  • NPM