为了深入学习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项目地址





目录
相关文章
|
2月前
|
移动开发 JavaScript 前端开发
一些处理浏览器兼容性问题的JavaScript库
这些库在处理浏览器兼容性问题方面都有着各自的特点和优势,可以根据具体的需求和项目情况选择合适的库来使用,从而提高代码的兼容性和稳定性,为用户提供更好的体验。同时,随着浏览器技术的不断发展,还需要持续关注和学习新的兼容性解决方案。
112 48
|
2月前
|
JavaScript 前端开发
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?
|
2月前
|
CDN
如何在项目中使用Moment.js库?
如何在项目中使用Moment.js库?
|
2月前
|
Web App开发 JavaScript 前端开发
如何学习JavaScript?
如何学习JavaScript?
52 5
|
2月前
|
JavaScript 前端开发
如何在不影响性能的前提下使用JavaScript库来实现复杂的动画效果?
如何在不影响性能的前提下使用JavaScript库来实现复杂的动画效果?
|
2月前
|
JavaScript 前端开发 索引
JavaScript学习第二章--字符串
本文介绍了JavaScript中的字符串处理,包括普通字符串和模板字符串的使用方法及常见字符串操作方法如`charAt`、`concat`、`endsWith`等,适合前端学习者参考。作者是一位热爱前端技术的大一学生,专注于分享实用的编程技巧。
34 2
|
2月前
|
存储 JavaScript 前端开发
JavaScript学习第一章
本文档介绍了JavaScript的基础知识,包括其在网页中的作用、如何通过JavaScript动态设置HTML元素的CSS属性,以及JavaScript中的变量类型(`var`、`let`、`const`)和数据类型(基本数据类型与引用数据类型)。通过实例代码详细解释了JavaScript的核心概念,适合初学者入门学习。
55 1
|
2月前
|
算法 开发者
Moment.js库是如何处理不同浏览器的时间戳格式差异的?
总的来说,Moment.js 通过一系列的技术手段和策略,有效地处理了不同浏览器的时间戳格式差异,为开发者提供了一个稳定、可靠且易于使用的时间处理工具。
46 1
|
2月前
|
JavaScript 前端开发 搜索推荐
Moment.js、Day.js、Miment,日期时间库怎么选?
【10月更文挑战第29天】如果你需要一个功能强大、插件丰富的日期时间库,并且对性能要求不是特别苛刻,Moment.js是一个不错的选择;如果你追求极致的轻量级和高性能,那么Day.js可能更适合你;而如果你有一些特定的日期时间处理需求,并且希望在性能和功能之间取得平衡,Miment也是可以考虑的。
|
2月前
|
存储 JavaScript 前端开发
decimal.js库的安装和使用方法
【10月更文挑战第24天】decimal.js 是一个非常实用的高精度计算库,通过合理的安装和使用,可以在 JavaScript 中实现精确的数值计算和处理。你可以根据具体的需求和项目情况,灵活运用该库来解决数字精度丢失的问题。

推荐镜像

更多