发布npm包质量分测试

news2025/6/22 23:04:22

查询质量分接口

https://registry.npmjs.org/-/v1/search?text=canvas-plus

v0.0.1 quality 0.2987

新建文件夹 canvas-plus

执行命令 npm init

生成package.json

{
  "name": "@3r/canvas-plus",
  "version": "0.0.1",
  "description": "a extension methods to canvas.",
  "main": "index.js",
  "scripts": {
    "test": "echo test"
  },
  "keywords": [
    "canvas",
    "tool",
    "extension"
  ],
  "author": "@3r",
  "license": "MIT",
  "dependencies": {
    "@3r/tool": "^1.3.2"
  }
}

新建 index.js文件

在文件夹下执行

# 先登录 如果登录过忽略
npm login
# 发布一个版本
npm publish --access=public

Q:

Package name too similar to existing package xxx;

A:

package.json中的name重名了,需要换一个名字

v0.0.2 quality 0.3234

配置typescript

安装开发依赖包

npm install -D typescript

配置tsconfig.json

{
    "compilerOptions": {
        "target": "ES2016", // 指定ECMAScript目标版本
        "module": "ESNext", // 指定模块化类型
        "declaration": true, // 生成 `.d.ts` 文件
        "outDir": "./", // 编译后生成的文件目录
        "strict": true, // 开启严格的类型检测
        "sourceMap": false,
        "allowJs": true,
        "skipLibCheck": true
    },
    "include": [
        "src/**/*"
    ],
    "exclude": []
}

新建src文件夹

新建src/index.ts文件

export function add(a: number, b: number) {
    return a + b
}

执行npx tsc进行代码编译

新建github仓库

将代码上传至仓库

新增.gitignore文件,忽略某些文件上传

node_modules/

新增.npmignore文件,忽略某些文件发布

/src
/.vscode
/.github

新建README.md,简单介绍一下

# Canvas +

This a extension methods package to canvas.

## Platform

- [x] ie11+

修改package.json追加仓库地址信息

{
  "name": "@3r/canvas-plus",
  "version": "0.0.2",
  "description": "a extension methods to canvas.",
  "main": "index.js",
  "scripts": {
    "test": "echo test"
  },
  "keywords": [
    "canvas",
    "tool",
    "extension"
  ],
  "author": "@3r",
  "license": "MIT",
  "dependencies": {
    "@3r/tool": "^1.3.2"
  },
  "devDependencies": {
    "typescript": "^5.2.2"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/White-Dews/canvas-plus.git"
  },
  "bugs": {
    "url": "https://github.com/White-Dews/canvas-plus/issues"
  },
  "homepage": "https://github.com/White-Dews/canvas-plus#readme"
}

v0.0.3 quality 0.6709

增加jest

安装依赖

npm i -D jest

安装转换依赖

npm i -D @babel/plugin-transform-modules-commonjs

新建.babelrc文件

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

新建jest.config.cjs文件

// jest.config.js
module.exports = {
    // 收集测试覆盖率
    collectCoverage: true
}

新建test文件夹

新建test/index.test.js测试文件

import { add } from "../index.js"

describe('canvas-plus', function () {
    it('add', function () {
        expect(add(1, 2)).toEqual(3)
        expect(add(2, 1)).toEqual(3)
        expect(add(1.5, 1.5)).toEqual(3)
        expect(add(1.2, 1.8)).toEqual(3)
    })
})

增加测试脚本命令在package.json文件中

"test": "jest --coverage"

增加eslint

安装依赖

npm i -D eslint
npm i -D @typescript-eslint/eslint-plugin
npm i -D @typescript-eslint/parser

新建.eslintignore文件

*.js
*.cjs

新建.eslintrc.json文件

{
    "env": {
        "browser": true,
        "es2021": true
    },
    "extends": [
        "eslint:recommended",
        "plugin:@typescript-eslint/recommended"
    ],
    "overrides": [],
    "parser": "@typescript-eslint/parser",
    "parserOptions": {
        "ecmaVersion": "latest",
        "sourceType": "module"
    },
    "plugins": [
        "@typescript-eslint"
    ],
    "rules": {
        "indent": [
            "warn",
            "tab"
        ],
        "linebreak-style": [
            "error",
            "windows"
        ],
        "quotes": [
            "warn",
            "single"
        ],
        "semi": [
            "warn",
            "never"
        ],
        "no-tabs": "off",
        "generator-star-spacing": "off",
        "no-unused-vars": "off",
        "no-useless-escape": "off",
        "@typescript-eslint/no-explicit-any": "off",
        "space-before-function-paren": "off",
        "no-extend-native": "off",
        "prefer-rest-params": "off",
        "lines-between-class-members": "off"
    }
}

增加格式检查脚本命令在package.json文件中

"lint": "npx eslint src/*.ts --fix"

完整的package.json文件

{
  "name": "@3r/canvas-plus",
  "version": "0.0.2",
  "description": "a extension methods to canvas.",
  "main": "index.js",
  "scripts": {
    "test": "jest --coverage",
    "lint": "npx eslint src/*.ts --fix"
  },
  "keywords": [
    "canvas",
    "tool",
    "extension"
  ],
  "author": "@3r",
  "license": "MIT",
  "dependencies": {
    "@3r/tool": "^1.3.2"
  },
  "devDependencies": {
    "@babel/plugin-transform-modules-commonjs": "^7.23.0",
    "@typescript-eslint/eslint-plugin": "^6.7.5",
    "@typescript-eslint/parser": "^6.7.5",
    "eslint": "^8.51.0",
    "jest": "^29.7.0",
    "typescript": "^5.2.2"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/White-Dews/canvas-plus.git"
  },
  "bugs": {
    "url": "https://github.com/White-Dews/canvas-plus/issues"
  },
  "homepage": "https://github.com/White-Dews/canvas-plus#readme",
  "type": "module",
  "typings": "index.d.ts"
}

更新.npmignore文件

/src
/.vscode
/.github
/coverage

执行脚本

npm run test
npm run lint

v0.0.4 quality 0.6986

增加LICENSE文件

MIT License

Copyright (c) 2023 林一怂儿

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

README.md增加徽章

# Canvas +

![npm](https://img.shields.io/npm/dw/@3r/canvas-plus)![npm](https://img.shields.io/npm/v/@3r/canvas-plus)

This a extension methods package to canvas.

## Platform

- [x] ie11+

v0.0.5 quality 0.8224

增加coveralls

https://coveralls.io/ 授权Github访问权限

新建.github/workflows/ci.yml文件

name: CI Pipeline

on:
  push:
    branches: [main]
    paths:
      - "**/*.test.js"
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Use Node.js 18.x
        uses: actions/setup-node@v1
        with:
          node-version: 18.x
      - run: |
          yarn install
          yarn run lint
          npx tsc
          yarn run test
      - name: Coveralls
        uses: coverallsapp/github-action@master
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}

CI成功后,将徽章赋值到README.md

img

# Canvas +

[![Coverage Status](https://coveralls.io/repos/github/White-Dews/canvas-plus/badge.svg?branch=main)](https://coveralls.io/github/White-Dews/canvas-plus?branch=main)![npm](https://img.shields.io/npm/dw/@3r/canvas-plus)![npm](https://img.shields.io/npm/v/@3r/canvas-plus)

This a extension methods package to canvas.

## Platform

- [x] ie11+

完整的package.json文件

{
  "name": "@3r/canvas-plus",
  "version": "0.0.4",
  "description": "a extension methods to canvas.",
  "main": "index.js",
  "scripts": {
    "test": "jest --coverage",
    "lint": "npx eslint src/*.ts --fix"
  },
  "keywords": [
    "canvas",
    "tool",
    "extension"
  ],
  "author": "@3r",
  "license": "MIT",
  "dependencies": {
    "@3r/tool": "^1.3.2"
  },
  "devDependencies": {
    "@babel/plugin-transform-modules-commonjs": "^7.23.0",
    "@typescript-eslint/eslint-plugin": "^6.7.5",
    "@typescript-eslint/parser": "^6.7.5",
    "eslint": "^8.51.0",
    "jest": "^29.7.0",
    "typescript": "^5.2.2"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/White-Dews/canvas-plus.git"
  },
  "bugs": {
    "url": "https://github.com/White-Dews/canvas-plus/issues"
  },
  "homepage": "https://github.com/White-Dews/canvas-plus#readme",
  "type": "module",
  "typings": "index.d.ts",
  "engines": {
    "node": ">=8"
  },
  "publishConfig": {
    "access": "public"
  },
  "pre-commit": [
    "fix"
  ],
  "sideEffects": true
}

v0.0.6 quality 0.8302

增加codeclimate

https://codeclimate.com 授权Github访问权限

复制TEST REPORTER ID

img

写入在github setting action secrets 中 起名为 TESTREPORTERID

值赋值进去

最新.github/workflows/ci.yml文件

name: CI Pipeline

on:
  push:
    branches: [main]
    paths:
      - "**/*.test.js"
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Use Node.js 18.x
        uses: actions/setup-node@v1
        with:
          node-version: 18.x
      - run: |
          yarn install
          yarn run lint
          npx tsc
          yarn run test
      - name: Coveralls
        uses: coverallsapp/github-action@master
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
      - name: Codeclimate
        uses: paambaati/codeclimate-action@v3.2.0
        env:
          CC_TEST_REPORTER_ID: ${{ secrets.TESTREPORTERID }}
        with:
          coverageCommand: yarn run test
          debug: true

最新README.md文件

# Canvas +

![action](https://img.shields.io/github/actions/workflow/status/White-Dews/canvas-plus/ci.yml)[![Coverage Status](https://coveralls.io/repos/github/White-Dews/canvas-plus/badge.svg?branch=main)](https://coveralls.io/github/White-Dews/canvas-plus?branch=main)![npm](https://img.shields.io/npm/dw/@3r/canvas-plus)![npm](https://img.shields.io/npm/v/@3r/canvas-plus)[![Code Climate](https://codeclimate.com/github/White-Dews/canvas-plus/badges/gpa.svg)](https://codeclimate.com/github/White-Dews/canvas-plus)[![Test Coverage](https://codeclimate.com/github/White-Dews/canvas-plus/badges/coverage.svg)](https://codeclimate.com/github/White-Dews/canvas-plus/coverage)![MIT](https://img.shields.io/npm/l/@3r/tool)

This a extension methods package to canvas.

## Platform

- [x] ie11+

后面的提升就很慢很慢了… 有缘再更/(ㄒoㄒ)/~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1086392.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EXCEL——根据单元格值设置不同色阶

方法:开始—>条件格式—>色阶(默认色阶或复杂色阶)。 一、默认色阶 如图,可选择自定义的色阶模式。 二、复杂色阶 1、如图,点击"其他规则" 2、选择复杂格式 此时可以看到,支持多种格式…

uniapp 使用和引入 thorui

1. npm install thorui-uni 2. "easycom": { "autoscan": true, "custom": { "tui-(.*)": "thorui-uni/lib/thorui/tui-$1/tui-$1.vue" } }, 3.

spring boot RabbitMq基础教程

RabbitMq 由于RabbitMQ采用了AMQP协议,因此它具备跨语言的特性。任何语言只要遵循AMQP协议收发消息,都可以与RabbitMQ交互。并且RabbitMQ官方也提供了各种不同语言的客户端。 但是,RabbitMQ官方提供的Java客户端编码相对复杂,一般…

如何看待国内PMP考试通过率高达97%?

自认为是虚高,虽然中国人在考试方面的确独树一帜的强,应该也没有这样夸张。 我分析,因为报考的条件有一个“由PMI项目管理协会授权的培训机构开具35学时证明”,这样,就都不得不去报培训班,但大家都知道有可…

Qual+Android方案Unlock学习 以Oneplus7Pro为例

目录 背景 Unpack guacamole_21_H.04_190416.ops Unlock探究 开发者选项–允许解锁 fastboot oem unlock extract LinuxLoader from abl 过程分析 FH读写分区 逆向MSM Download USB抓包 token & pk 逆向结果 尝试修改分区实现unlock VerifiedBoot Protocol 分…

Spring-事务源码解析2

上一篇文章我们介绍了事务开启注解EnableTransactionManagement源码解析《Spring-事务源码解析1》 里面提到了2个关键组件,这里我们分析下Spring如何利用这2个组件来给Bean创建代理对象。 文章待整理 先说下执行流程,当请求进来的时候,会执…

TensorFlow入门(二十五、单个神经元的扩展——Maxout网络)

Maxout网络的原理 Maxout是Goodfellow在2013年提出的一个新的激活函数,与其它的激活函数相比,Maxout是需要参数的,且参数可以通过网络的反向传播得到学习,因此它比其它激活函数有着更好的性能,理论上可以拟合任意凸函数,进而使得网络取得更好的性能。 Maxout网络主要是扩展单个…

移动app广告变现,对接广告联盟还是选择第三方聚合广告平台?

作为互联网广告的载体,APP天生就比线下传统广告位更具优势,不受地域限制可以辐射到地球上的每一个角落,可以让广告获得更广的覆盖面。通过丰富的广告形式,精准的目标用户画像,也可以更好地实现品牌广告或效果广告的投放…

主流大模型训练库和框架的介绍

文章目录 前言1.主流大模型框架介绍 前言 参考: Pytorch训练模型损失Loss为Nan或者无穷大(INF)原因 1.主流大模型框架介绍

模拟电路基础知识经典 200问,收藏这些就够了!

大家总说模电知识总是学不会,IC修真院为大家整理了模电经典200问,看看你掌握了多少,文末可以获取全部哦。 文末可领全部文档 1、半导体材料制作电子器件与传统的真空电子器件相比有什么特点? 答:频率特性好、体积小、功耗小&…

CDN加速服务:网站快递服务

原始服务器:网站的储藏库 想象一下,CDN加速服务的旅程从原始服务器开始,这个服务器就像是一个巨大的储藏库,通常藏身于数据中心或云服务提供商的服务器中。这里存放着网页、图片、视频、应用程序等静态和动态的货品。 CDN节点&…

SpringBoot整合JWT、实现登录和拦截

SpringBoot整合JWT 、实现登录和拦截 一、JWT简介1.什么是JWT2.为什么要用JWT3.传统Session认证的弊端4.JWT认证的优势5.JWT结构 二、SpringBoot整合JWT1.引入依赖2.JWT工具类3.自定义拦截器4.异常处理1.自定义异常ServiceException2.全局异常处理器3.同一封装返回结果 3.登录实…

Window10运行onnxruntime报错的处理

背景 在Windows10中安装好英伟达驱动、cuda、cudnn等资源,然后运行程序的时候,发现程序会在加载模型时崩溃。 经过一番查找后,得到输出的信息是说是缺少zlibwapi.dll。 这个问题是去年做的一个项目时发现的,忘记当时是怎么发现了…

Java标识符和关键字,Java常量的定义和分类

任何一种计算机语言都离不开标识符和关键字,因此下面将详细介绍 java 的标识符、关键字和保留字。 标识符 Java 中标识符是为方法、变量或其他用户定义项所定义的名称。标识符可以有一个或多个字符。在 Java 语言中,标识符的构成规则如下。 标识符由数…

Go的运算符解密:探索计算的奥秘

目录 算术运算符 赋值运算符 比较运算符 逻辑运算符 位运算符 其他运算符 运算符优先级 代码示例 更多关于Go的相关技术点,敬请关注公众号:CTO Plus后续的发文,有问题欢迎后台留言交流。 原文:Go的运算符解密:…

论文阅读之【Is GPT-4 a Good Data Analyst?(GPT-4是否是一位好的数据分析师)】

文章目录 论文阅读之【Is GPT-4 a Good Data Analyst?(GPT-4是否是一位好的数据分析师)】背景:数据分析师工作范围基于GPT-4的端到端数据分析框架将GPT-4作为数据分析师的框架的流程图 实验分析评估指标表1:GPT-4性能表现表2&…

日语学习网站web项目

支持日语五十音,平片假名、罗马音、词义转换、百度翻译功能,方便日语初学者学习日语发音 介绍 采用vitevue3ts技术栈开发, pinia管理全局化。主要是为了日语入门学习五十音, 以及日语句子罗马 发音对照练习。 参考以下两个项目完成 https://github.com/hexenq/kuroshiro ht…

SpringMVC的请求处理

请求映射路径的配置 请求映射路径的配置主要是通过RequestMapping注解实现的 相关注解作用使用位置RequestMapping设置控制器方法访问路径的资源,可以接收任何请求方法和类上GetMapping设置控制器方法访问路径的资源,可接收GET请求方法和类上PostMappin…

绿源正式登陆港股,行业老将凭原创科技走向新未来

两轮电动车领域历史最悠久的老将之一——绿源,正式掀开发展之路的新篇章。10月12日,绿源正式登陆港交所,上市首日股价开盘向上,涨幅一度超过9%。 此前,绿源的招股书失效以及在地方抽检中出现的负面新闻,引…

YOLOv7改进策略:RIFormerBlock助力检测|CVPR2023 RIFormer:无需TokenMixer也能达成SOTA性能的极简ViT架构

💡💡💡本文属于原创独家改进: 稀疏重参数RIFormerBlock模型引入YOLOv7进行创新性 RIFormerBlock | 亲测在多个数据集实现涨点; 收录: YOLOv7高阶自研专栏介绍: http://t.csdnimg.cn/tYI0c ✨✨✨前沿最新计算机顶会复现 🚀🚀🚀YOLOv7自研创新结合,轻松…