update
This commit is contained in:
parent
4d55caeb02
commit
bd80def8ad
@ -20,7 +20,7 @@
|
||||
|
||||
const fs = require("fs-extra");
|
||||
const inquirer = require("inquirer");
|
||||
|
||||
const semver = require("semver")
|
||||
const path = require("path");
|
||||
const shelljs = require("shelljs");
|
||||
const createLogger = require("logsets");
|
||||
@ -38,16 +38,16 @@
|
||||
|
||||
|
||||
|
||||
const packages = [
|
||||
"git log --format=%cd --date=iso -1 -- packages/babel/package.json",
|
||||
"git log --format=%cd --date=iso -1 -- packages/cli/package.json",
|
||||
"git log --format=%cd --date=iso -1 -- packages/runtime/package.json",
|
||||
"git log --format=%cd --date=iso -1 -- packages/formatters/package.json",
|
||||
"git log --format=%cd --date=iso -1 -- packages/vue/package.json",
|
||||
"git log --format=%cd --date=iso -1 -- packages/vite/package.json",
|
||||
"git log --format=%cd --date=iso -1 -- packages/autopublish/package.json",
|
||||
"git log --format=%cd --date=iso -1 -- packages/utils/package.json"
|
||||
]
|
||||
// const packages = [
|
||||
// "git log --format=%cd --date=iso -1 -- packages/babel/package.json",
|
||||
// "git log --format=%cd --date=iso -1 -- packages/cli/package.json",
|
||||
// "git log --format=%cd --date=iso -1 -- packages/runtime/package.json",
|
||||
// "git log --format=%cd --date=iso -1 -- packages/formatters/package.json",
|
||||
// "git log --format=%cd --date=iso -1 -- packages/vue/package.json",
|
||||
// "git log --format=%cd --date=iso -1 -- packages/vite/package.json",
|
||||
// "git log --format=%cd --date=iso -1 -- packages/autopublish/package.json",
|
||||
// "git log --format=%cd --date=iso -1 -- packages/utils/package.json"
|
||||
// ]
|
||||
|
||||
function getPackages(){
|
||||
let workspaceRoot = process.cwd()
|
||||
@ -89,24 +89,74 @@
|
||||
return changeFiles.length>0 ? changeFiles.split("\n") : []
|
||||
}
|
||||
|
||||
function execShellScript(script){
|
||||
/**
|
||||
* 执行脚本,出错会返回错误信息
|
||||
* @param {*} script
|
||||
*/
|
||||
function execShellScript(script,options={}){
|
||||
if(shelljs.exec(script).code>0){
|
||||
throw new Error(`执行<${script}>失败`)
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 执行脚本并返回结果
|
||||
* @param {*} script
|
||||
*/
|
||||
function execShellScriptReturns(script,options={}){ ){
|
||||
return shelljs.exec(script,options).code>0).stdout.trim()
|
||||
}
|
||||
|
||||
program
|
||||
|
||||
/**
|
||||
* 执行Git提交命令
|
||||
*
|
||||
* 1. 检查当前包是否有未提交的文件
|
||||
* 2. 如果没有则不提交
|
||||
* 3. 如果有则提交
|
||||
*
|
||||
*
|
||||
*/
|
||||
function commitProject(packageName,{versionIncrementStep="patch",autoCommit=false}={}){
|
||||
const lastChanges = getPackageLastChanges(package.name)
|
||||
let lastCommit = shelljs.exec(`git log --format=%cd --date=iso -1 -- .`, { silent: true }).stdout.trim()
|
||||
let hasError = false // 执行过程是否出错了
|
||||
let isCommit = autoCommit // 是否执行了提交操作
|
||||
|
||||
if(lastCommit){
|
||||
lastCommit = dayjs(lastCommit)
|
||||
logger.log("最后一次提交:{}({})",lastCommit.format("YYYY-MM-DD HH:mm:ss"),lastCommit.fromNow())
|
||||
}
|
||||
if(lastChanges.length>0){
|
||||
logger.log("包[{}]存在{}个未提交的文件:",package.name,lastChanges.length)
|
||||
lastChanges.forEach(file=>logger.log(` - ${file.trim()}`))
|
||||
if(!autoCommit){
|
||||
const result = await inquirer.prompt({
|
||||
name:"isCommit",
|
||||
type:"confirm",
|
||||
message:"是否提交以上文件到仓库?"
|
||||
})
|
||||
isCommit = result.isCommit
|
||||
}
|
||||
if(isCommit){
|
||||
execShellScript(`git commit -a -m "Update ${package.name}"`)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let VERSION_STEPS = ["major", "minor", "patch","premajor","preminor","prepatch","prerelease"]
|
||||
program
|
||||
.command("publish")
|
||||
.description("发布当前工作区下的包")
|
||||
.option("-f, --force", "强制发布")
|
||||
.option("--no-auto-commit", "不提交源码")
|
||||
.option("-q, --query", "询问是否发布,否则会自动发布")
|
||||
.addOption(new Option('-i, --version-increment-step [value]', '版本增长方式,取值major,minor,patch').default("patch").choices(['major', 'minor', 'patch']))
|
||||
.option("--no-add-version-tag", "不添加版本标签")
|
||||
.addOption(new Option('-i, --version-increment-step [value]', '版本增长方式').default("patch").choices(VERSION_STEPS))
|
||||
.action(async (options) => {
|
||||
console.log(JSON.stringify(options))
|
||||
const {versionIncrementStep,autoCommit} = options
|
||||
const {versionIncrementStep,autoCommit,addVersionTag} = options
|
||||
|
||||
if(!["major","minor","patch"].includes(versionIncrementStep)){
|
||||
if(!VERSION_STEPS.includes(versionIncrementStep)){
|
||||
versionIncrementStep = "patch"
|
||||
}
|
||||
|
||||
@ -114,49 +164,73 @@ function execShellScript(script){
|
||||
const packageFolder = process.cwd()
|
||||
const packageName = path.basename(packageFolder)
|
||||
const pkgFile = path.join(packageFolder,"package.json")
|
||||
|
||||
const { version,scripts } = fs.readJSONSync(pkgFile)
|
||||
|
||||
const package = fs.readJSONSync(pkgFile)
|
||||
const packageBackup = Object.assign({},package) // 备份package.json,当操作失败时,还原
|
||||
|
||||
logger.log("包名:{}",`${packageName}`)
|
||||
|
||||
|
||||
// 第一步: 查询当否已经提交了代码,如果没有则提交代码
|
||||
const lastChanges = getPackageLastChanges(packageName)
|
||||
let lastCommit = shelljs.exec(`git log --format=%cd --date=iso -1 -- .`, { silent: true }).stdout.trim()
|
||||
if(lastCommit){
|
||||
lastCommit = dayjs(lastCommit)
|
||||
logger.log("最后一次提交:{}({})",lastCommit.format("YYYY-MM-DD HH:mm:ss"),lastCommit.fromNow())
|
||||
}
|
||||
if(lastChanges.length>0){
|
||||
logger.log("包[{}]存在{}个未提交的文件:",packageName,lastChanges.length)
|
||||
lastChanges.forEach(file=>logger.log(` - ${file.trim()}`))
|
||||
let isCommit = autoCommit
|
||||
if(!autoCommit){
|
||||
const result = await inquirer.prompt({
|
||||
name:"isCommit",
|
||||
type:"confirm",
|
||||
message:"是否提交以下文件?"
|
||||
})
|
||||
isCommit = result.isCommit
|
||||
}
|
||||
if(isCommit){
|
||||
execShellScript(`git commit -a -m "Update ${packageName}"`)
|
||||
}
|
||||
}
|
||||
// 第二步:更新最新的版本号
|
||||
// 第一步: 提交代码
|
||||
commitProject(package,{versionIncrementStep,autoCommit})
|
||||
|
||||
execShellScript(`npm version ${versionIncrementStep}`)
|
||||
// 第二步: 更新版本号和发布时间
|
||||
package.version = semver.inc(package.version,versionIncrementStep)
|
||||
package.lastPublish = dayjs().format()
|
||||
fs.writeJSONSync(pkgFile,package)
|
||||
|
||||
|
||||
|
||||
// const lastChanges = getPackageLastChanges(packageName)
|
||||
// let lastCommit = shelljs.exec(`git log --format=%cd --date=iso -1 -- .`, { silent: true }).stdout.trim()
|
||||
// let hasError = false // 执行过程是否出错了
|
||||
// let isCommit = autoCommit // 是否执行了提交操作
|
||||
|
||||
// if(lastCommit){
|
||||
// lastCommit = dayjs(lastCommit)
|
||||
// logger.log("最后一次提交:{}({})",lastCommit.format("YYYY-MM-DD HH:mm:ss"),lastCommit.fromNow())
|
||||
// }
|
||||
// // 如果当前包有变化时需要要进行提交
|
||||
// if(lastChanges.length>0){
|
||||
// logger.log("包[{}]存在{}个未提交的文件:",packageName,lastChanges.length)
|
||||
// lastChanges.forEach(file=>logger.log(` - ${file.trim()}`))
|
||||
|
||||
// if(!autoCommit){
|
||||
// const result = await inquirer.prompt({
|
||||
// name:"isCommit",
|
||||
// type:"confirm",
|
||||
// message:"是否提交以上文件到仓库?"
|
||||
// })
|
||||
// isCommit = result.isCommit
|
||||
// }
|
||||
// if(isCommit){
|
||||
// // 由于更新版本号、发布时间等信息,需要修改package.json,所以在提交一份
|
||||
// execShellScript(`npm version ${versionIncrementStep}`)
|
||||
// // 重新读取package.json
|
||||
// package = fs.readJSONSync(pkgFile)
|
||||
// // 保存发布时间
|
||||
// package.lastPublish = dayjs().format()
|
||||
// // 由于更新版本号、发布时间等信息,需要修改package.json,所以在提交一份
|
||||
// execShellScript(`npm version ${versionIncrementStep}`)
|
||||
// // 提交代码到仓库
|
||||
// execShellScript(`git commit -a -m "Update ${packageName}"`)
|
||||
// // 添加版本标签
|
||||
// if(addVersionTag){
|
||||
// execShellScript(`git tag Version:${package.version}`)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// 由于每次发布均会更新npm version patch,并且需要提交代码
|
||||
// const lastCommit = shelljs.exec(`git log --format=%cd --date=iso -1 -- ${pkgFile}`, { silent: true }).stdout.trim()
|
||||
|
||||
// // 增加版本号
|
||||
|
||||
|
||||
// //
|
||||
// shelljs.exec(`pnpm publish --access publish`, { silent: true }).stdout.trim()
|
||||
|
||||
|
||||
// 第三步:执行发布到Npm
|
||||
// 由于工程可能引用了工作区内的其他包,必须pnpm publish才能发布
|
||||
// pnpm publish会修正引用工作区其他包到的依赖信息,而npm publish不能识别工作区内的依赖,会导致报错
|
||||
try{
|
||||
execShellScript(`pnpm publish --no-git-checks --access publish`)
|
||||
// 当发布完毕后,由于更新了publish,因此需要重新提交代码
|
||||
}catch{
|
||||
fs.writeJSONSync(pkgFile,packageBackup)
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
program
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@voerkai18n/publish",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.1",
|
||||
"description": "发布项目工具",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
@ -14,6 +14,7 @@
|
||||
"publish": "./index.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"commander": "^9.0.0"
|
||||
"commander": "^9.0.0",
|
||||
"semver": "^7.3.5"
|
||||
}
|
||||
}
|
||||
|
2
packages/runtime/dist/index.cjs
vendored
2
packages/runtime/dist/index.cjs
vendored
File diff suppressed because one or more lines are too long
2
packages/runtime/dist/index.cjs.map
vendored
2
packages/runtime/dist/index.cjs.map
vendored
File diff suppressed because one or more lines are too long
2
packages/runtime/dist/index.esm.js
vendored
2
packages/runtime/dist/index.esm.js
vendored
File diff suppressed because one or more lines are too long
2
packages/runtime/dist/index.esm.js.map
vendored
2
packages/runtime/dist/index.esm.js.map
vendored
File diff suppressed because one or more lines are too long
90
packages/runtime/dist/runtime.cjs
vendored
90
packages/runtime/dist/runtime.cjs
vendored
@ -1,10 +1,92 @@
|
||||
'use strict';
|
||||
|
||||
var require$$2 = require('@voerkai18n/utils');
|
||||
/**
|
||||
* 判断是否是JSON对象
|
||||
* @param {*} obj
|
||||
* @returns
|
||||
*/
|
||||
function isPlainObject$1(obj){
|
||||
if (typeof obj !== 'object' || obj === null) return false;
|
||||
var proto = Object.getPrototypeOf(obj);
|
||||
if (proto === null) return true;
|
||||
var baseProto = proto;
|
||||
|
||||
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
||||
while (Object.getPrototypeOf(baseProto) !== null) {
|
||||
baseProto = Object.getPrototypeOf(baseProto);
|
||||
}
|
||||
return proto === baseProto;
|
||||
}
|
||||
|
||||
var require$$2__default = /*#__PURE__*/_interopDefaultLegacy(require$$2);
|
||||
function isNumber$1(value){
|
||||
return !isNaN(parseInt(value))
|
||||
}
|
||||
|
||||
/**
|
||||
* 简单进行对象合并
|
||||
*
|
||||
* options={
|
||||
* array:0 , // 数组合并策略,0-替换,1-合并,2-去重合并
|
||||
* }
|
||||
*
|
||||
* @param {*} toObj
|
||||
* @param {*} formObj
|
||||
* @returns 合并后的对象
|
||||
*/
|
||||
function deepMerge$1(toObj,formObj,options={}){
|
||||
let results = Object.assign({},toObj);
|
||||
Object.entries(formObj).forEach(([key,value])=>{
|
||||
if(key in results){
|
||||
if(typeof value === "object" && value !== null){
|
||||
if(Array.isArray(value)){
|
||||
if(options.array === 0){
|
||||
results[key] = value;
|
||||
}else if(options.array === 1){
|
||||
results[key] = [...results[key],...value];
|
||||
}else if(options.array === 2){
|
||||
results[key] = [...new Set([...results[key],...value])];
|
||||
}
|
||||
}else {
|
||||
results[key] = deepMerge$1(results[key],value,options);
|
||||
}
|
||||
}else {
|
||||
results[key] = value;
|
||||
}
|
||||
}else {
|
||||
results[key] = value;
|
||||
}
|
||||
});
|
||||
return results
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取指定变量类型名称
|
||||
* getDataTypeName(1) == Number
|
||||
* getDataTypeName("") == String
|
||||
* getDataTypeName(null) == Null
|
||||
* getDataTypeName(undefined) == Undefined
|
||||
* getDataTypeName(new Date()) == Date
|
||||
* getDataTypeName(new Error()) == Error
|
||||
*
|
||||
* @param {*} v
|
||||
* @returns
|
||||
*/
|
||||
function getDataTypeName$1(v){
|
||||
if (v === null) return 'Null'
|
||||
if (v === undefined) return 'Undefined'
|
||||
if(typeof(v)==="function") return "Function"
|
||||
return v.constructor && v.constructor.name;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
var utils ={
|
||||
isPlainObject: isPlainObject$1,
|
||||
isNumber: isNumber$1,
|
||||
deepMerge: deepMerge$1,
|
||||
getDataTypeName: getDataTypeName$1
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
@ -218,9 +300,9 @@ var formatters$1 = {
|
||||
}
|
||||
};
|
||||
|
||||
const { getDataTypeName,isNumber,isPlainObject,deepMerge } = utils;
|
||||
const EventEmitter = eventemitter;
|
||||
const i18nScope = scope;
|
||||
const { getDataTypeName,isNumber,isPlainObject,deepMerge } = require$$2__default["default"];
|
||||
let inlineFormatters = formatters$1; // 内置格式化器
|
||||
|
||||
|
||||
|
90
packages/runtime/dist/runtime.mjs
vendored
90
packages/runtime/dist/runtime.mjs
vendored
@ -1,4 +1,90 @@
|
||||
import require$$2 from '@voerkai18n/utils';
|
||||
/**
|
||||
* 判断是否是JSON对象
|
||||
* @param {*} obj
|
||||
* @returns
|
||||
*/
|
||||
function isPlainObject$1(obj){
|
||||
if (typeof obj !== 'object' || obj === null) return false;
|
||||
var proto = Object.getPrototypeOf(obj);
|
||||
if (proto === null) return true;
|
||||
var baseProto = proto;
|
||||
|
||||
while (Object.getPrototypeOf(baseProto) !== null) {
|
||||
baseProto = Object.getPrototypeOf(baseProto);
|
||||
}
|
||||
return proto === baseProto;
|
||||
}
|
||||
|
||||
function isNumber$1(value){
|
||||
return !isNaN(parseInt(value))
|
||||
}
|
||||
|
||||
/**
|
||||
* 简单进行对象合并
|
||||
*
|
||||
* options={
|
||||
* array:0 , // 数组合并策略,0-替换,1-合并,2-去重合并
|
||||
* }
|
||||
*
|
||||
* @param {*} toObj
|
||||
* @param {*} formObj
|
||||
* @returns 合并后的对象
|
||||
*/
|
||||
function deepMerge$1(toObj,formObj,options={}){
|
||||
let results = Object.assign({},toObj);
|
||||
Object.entries(formObj).forEach(([key,value])=>{
|
||||
if(key in results){
|
||||
if(typeof value === "object" && value !== null){
|
||||
if(Array.isArray(value)){
|
||||
if(options.array === 0){
|
||||
results[key] = value;
|
||||
}else if(options.array === 1){
|
||||
results[key] = [...results[key],...value];
|
||||
}else if(options.array === 2){
|
||||
results[key] = [...new Set([...results[key],...value])];
|
||||
}
|
||||
}else {
|
||||
results[key] = deepMerge$1(results[key],value,options);
|
||||
}
|
||||
}else {
|
||||
results[key] = value;
|
||||
}
|
||||
}else {
|
||||
results[key] = value;
|
||||
}
|
||||
});
|
||||
return results
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取指定变量类型名称
|
||||
* getDataTypeName(1) == Number
|
||||
* getDataTypeName("") == String
|
||||
* getDataTypeName(null) == Null
|
||||
* getDataTypeName(undefined) == Undefined
|
||||
* getDataTypeName(new Date()) == Date
|
||||
* getDataTypeName(new Error()) == Error
|
||||
*
|
||||
* @param {*} v
|
||||
* @returns
|
||||
*/
|
||||
function getDataTypeName$1(v){
|
||||
if (v === null) return 'Null'
|
||||
if (v === undefined) return 'Undefined'
|
||||
if(typeof(v)==="function") return "Function"
|
||||
return v.constructor && v.constructor.name;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
var utils ={
|
||||
isPlainObject: isPlainObject$1,
|
||||
isNumber: isNumber$1,
|
||||
deepMerge: deepMerge$1,
|
||||
getDataTypeName: getDataTypeName$1
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
@ -212,9 +298,9 @@ var formatters$1 = {
|
||||
}
|
||||
};
|
||||
|
||||
const { getDataTypeName,isNumber,isPlainObject,deepMerge } = utils;
|
||||
const EventEmitter = eventemitter;
|
||||
const i18nScope = scope;
|
||||
const { getDataTypeName,isNumber,isPlainObject,deepMerge } = require$$2;
|
||||
let inlineFormatters = formatters$1; // 内置格式化器
|
||||
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
const { getDataTypeName,isNumber,isPlainObject,deepMerge } = require("./utils")
|
||||
const EventEmitter = require("./eventemitter")
|
||||
const i18nScope = require("./scope.js")
|
||||
const { getDataTypeName,isNumber,isPlainObject,deepMerge } = require("@voerkai18n/utils")
|
||||
let inlineFormatters = require("./formatters") // 内置格式化器
|
||||
|
||||
|
||||
|
@ -33,8 +33,5 @@
|
||||
"rollup": "^2.69.0",
|
||||
"rollup-plugin-clear": "^2.0.7",
|
||||
"rollup-plugin-terser": "^7.0.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@voerkai18n/utils": "workspace:^1.0.0"
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
import clear from 'rollup-plugin-clear'
|
||||
import commonjs from '@rollup/plugin-commonjs';
|
||||
import resolve from "@rollup/plugin-node-resolve";
|
||||
// import resolve from "@rollup/plugin-node-resolve";
|
||||
import { terser } from "rollup-plugin-terser";
|
||||
import { babel } from '@rollup/plugin-babel';
|
||||
|
||||
@ -22,7 +22,7 @@ export default [
|
||||
}
|
||||
],
|
||||
plugins: [
|
||||
resolve(),
|
||||
//resolve(),
|
||||
commonjs(),
|
||||
babel({
|
||||
babelHelpers:"runtime",
|
||||
@ -48,7 +48,7 @@ export default [
|
||||
}
|
||||
],
|
||||
plugins:[
|
||||
commonjs(),
|
||||
],
|
||||
commonjs()
|
||||
]
|
||||
}
|
||||
]
|
89
packages/runtime/utils.js
Normal file
89
packages/runtime/utils.js
Normal file
@ -0,0 +1,89 @@
|
||||
|
||||
/**
|
||||
* 判断是否是JSON对象
|
||||
* @param {*} obj
|
||||
* @returns
|
||||
*/
|
||||
function isPlainObject(obj){
|
||||
if (typeof obj !== 'object' || obj === null) return false;
|
||||
var proto = Object.getPrototypeOf(obj);
|
||||
if (proto === null) return true;
|
||||
var baseProto = proto;
|
||||
|
||||
while (Object.getPrototypeOf(baseProto) !== null) {
|
||||
baseProto = Object.getPrototypeOf(baseProto);
|
||||
}
|
||||
return proto === baseProto;
|
||||
}
|
||||
|
||||
function isNumber(value){
|
||||
return !isNaN(parseInt(value))
|
||||
}
|
||||
|
||||
/**
|
||||
* 简单进行对象合并
|
||||
*
|
||||
* options={
|
||||
* array:0 , // 数组合并策略,0-替换,1-合并,2-去重合并
|
||||
* }
|
||||
*
|
||||
* @param {*} toObj
|
||||
* @param {*} formObj
|
||||
* @returns 合并后的对象
|
||||
*/
|
||||
function deepMerge(toObj,formObj,options={}){
|
||||
let results = Object.assign({},toObj)
|
||||
Object.entries(formObj).forEach(([key,value])=>{
|
||||
if(key in results){
|
||||
if(typeof value === "object" && value !== null){
|
||||
if(Array.isArray(value)){
|
||||
if(options.array === 0){
|
||||
results[key] = value
|
||||
}else if(options.array === 1){
|
||||
results[key] = [...results[key],...value]
|
||||
}else if(options.array === 2){
|
||||
results[key] = [...new Set([...results[key],...value])]
|
||||
}
|
||||
}else{
|
||||
results[key] = deepMerge(results[key],value,options)
|
||||
}
|
||||
}else{
|
||||
results[key] = value
|
||||
}
|
||||
}else{
|
||||
results[key] = value
|
||||
}
|
||||
})
|
||||
return results
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取指定变量类型名称
|
||||
* getDataTypeName(1) == Number
|
||||
* getDataTypeName("") == String
|
||||
* getDataTypeName(null) == Null
|
||||
* getDataTypeName(undefined) == Undefined
|
||||
* getDataTypeName(new Date()) == Date
|
||||
* getDataTypeName(new Error()) == Error
|
||||
*
|
||||
* @param {*} v
|
||||
* @returns
|
||||
*/
|
||||
function getDataTypeName(v){
|
||||
if (v === null) return 'Null'
|
||||
if (v === undefined) return 'Undefined'
|
||||
if(typeof(v)==="function") return "Function"
|
||||
return v.constructor && v.constructor.name;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
module.exports ={
|
||||
isPlainObject,
|
||||
isNumber,
|
||||
deepMerge,
|
||||
getDataTypeName
|
||||
}
|
118
pnpm-lock.yaml
generated
118
pnpm-lock.yaml
generated
@ -89,8 +89,10 @@ importers:
|
||||
packages/autopublish:
|
||||
specifiers:
|
||||
commander: ^9.0.0
|
||||
semver: ^7.3.5
|
||||
dependencies:
|
||||
commander: registry.npmmirror.com/commander/9.0.0
|
||||
semver: 7.3.5
|
||||
|
||||
packages/babel:
|
||||
specifiers:
|
||||
@ -162,13 +164,10 @@ importers:
|
||||
'@rollup/plugin-babel': ^5.3.1
|
||||
'@rollup/plugin-commonjs': ^21.0.2
|
||||
'@rollup/plugin-node-resolve': ^13.1.3
|
||||
'@voerkai18n/utils': workspace:^1.0.0
|
||||
deepmerge: ^4.2.2
|
||||
rollup: ^2.69.0
|
||||
rollup-plugin-clear: ^2.0.7
|
||||
rollup-plugin-terser: ^7.0.2
|
||||
dependencies:
|
||||
'@voerkai18n/utils': link:../utils
|
||||
devDependencies:
|
||||
'@babel/cli': 7.17.6_@babel+core@7.17.5
|
||||
'@babel/core': 7.17.5
|
||||
@ -239,8 +238,8 @@ packages:
|
||||
slash: 2.0.0
|
||||
source-map: 0.5.7
|
||||
optionalDependencies:
|
||||
'@nicolo-ribaudo/chokidar-2': registry.npmmirror.com/@nicolo-ribaudo/chokidar-2/2.1.8-no-fsevents.3
|
||||
chokidar: registry.npmmirror.com/chokidar/3.5.3
|
||||
'@nicolo-ribaudo/chokidar-2': 2.1.8-no-fsevents.3
|
||||
chokidar: 3.5.3
|
||||
|
||||
/@babel/cli/7.17.6_@babel+core@7.17.8:
|
||||
resolution: {integrity: sha512-l4w608nsDNlxZhiJ5tE3DbNmr61fIKMZ6fTBo171VEFuFMIYuJ3mHRhTLEkKKyvx2Mizkkv/0a8OJOnZqkKYNA==}
|
||||
@ -2624,7 +2623,6 @@ packages:
|
||||
/@nicolo-ribaudo/chokidar-2/2.1.8-no-fsevents.3:
|
||||
resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==}
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@polka/url/1.0.0-next.21:
|
||||
@ -3777,6 +3775,13 @@ packages:
|
||||
engines: {node: '>=8'}
|
||||
optional: true
|
||||
|
||||
/bindings/1.5.0:
|
||||
resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
file-uri-to-path: 1.0.0
|
||||
optional: true
|
||||
|
||||
/brace-expansion/1.1.11:
|
||||
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
|
||||
dependencies:
|
||||
@ -3958,7 +3963,7 @@ packages:
|
||||
readdirp: 2.2.1
|
||||
upath: 1.2.0
|
||||
optionalDependencies:
|
||||
fsevents: registry.npmmirror.com/fsevents/1.2.13
|
||||
fsevents: 1.2.13
|
||||
|
||||
/chokidar/3.5.3:
|
||||
resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
|
||||
@ -3974,7 +3979,6 @@ packages:
|
||||
readdirp: 3.6.0
|
||||
optionalDependencies:
|
||||
fsevents: 2.3.2
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/ci-info/3.3.0:
|
||||
@ -4460,7 +4464,7 @@ packages:
|
||||
esutils: 2.0.3
|
||||
optionator: 0.8.3
|
||||
optionalDependencies:
|
||||
source-map: registry.npmmirror.com/source-map/0.6.1
|
||||
source-map: 0.6.1
|
||||
dev: true
|
||||
|
||||
/esprima/4.0.1:
|
||||
@ -4596,6 +4600,11 @@ packages:
|
||||
bser: 2.1.1
|
||||
dev: true
|
||||
|
||||
/file-uri-to-path/1.0.0:
|
||||
resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
/fill-range/4.0.0:
|
||||
resolution: {integrity: sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=}
|
||||
engines: {node: '>=0.10.0'}
|
||||
@ -4710,12 +4719,22 @@ packages:
|
||||
/fs.realpath/1.0.0:
|
||||
resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=}
|
||||
|
||||
/fsevents/1.2.13:
|
||||
resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==}
|
||||
engines: {node: '>= 4.0'}
|
||||
os: [darwin]
|
||||
deprecated: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
bindings: 1.5.0
|
||||
nan: 2.15.0
|
||||
optional: true
|
||||
|
||||
/fsevents/2.3.2:
|
||||
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
|
||||
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/function-bind/1.1.1:
|
||||
@ -5473,7 +5492,7 @@ packages:
|
||||
micromatch: 4.0.5
|
||||
walker: 1.0.8
|
||||
optionalDependencies:
|
||||
fsevents: registry.npmmirror.com/fsevents/2.3.2
|
||||
fsevents: 2.3.2
|
||||
dev: true
|
||||
|
||||
/jest-jasmine2/27.5.1:
|
||||
@ -5853,7 +5872,7 @@ packages:
|
||||
dependencies:
|
||||
universalify: 2.0.0
|
||||
optionalDependencies:
|
||||
graceful-fs: registry.npmmirror.com/graceful-fs/4.2.9
|
||||
graceful-fs: 4.2.9
|
||||
|
||||
/just-debounce/1.1.0:
|
||||
resolution: {integrity: sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==}
|
||||
@ -5990,7 +6009,6 @@ packages:
|
||||
engines: {node: '>=10'}
|
||||
dependencies:
|
||||
yallist: 4.0.0
|
||||
dev: true
|
||||
|
||||
/magic-string/0.25.9:
|
||||
resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
|
||||
@ -6124,6 +6142,11 @@ packages:
|
||||
resolution: {integrity: sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==}
|
||||
engines: {node: '>= 0.10'}
|
||||
|
||||
/nan/2.15.0:
|
||||
resolution: {integrity: sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==}
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
/nanoid/3.3.1:
|
||||
resolution: {integrity: sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==}
|
||||
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
|
||||
@ -6786,7 +6809,7 @@ packages:
|
||||
engines: {node: '>=10.0.0'}
|
||||
hasBin: true
|
||||
optionalDependencies:
|
||||
fsevents: registry.npmmirror.com/fsevents/2.3.2
|
||||
fsevents: 2.3.2
|
||||
dev: true
|
||||
|
||||
/rollup/2.70.1:
|
||||
@ -6794,7 +6817,7 @@ packages:
|
||||
engines: {node: '>=10.0.0'}
|
||||
hasBin: true
|
||||
optionalDependencies:
|
||||
fsevents: registry.npmmirror.com/fsevents/2.3.2
|
||||
fsevents: 2.3.2
|
||||
|
||||
/safe-buffer/5.1.2:
|
||||
resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
|
||||
@ -6839,7 +6862,6 @@ packages:
|
||||
hasBin: true
|
||||
dependencies:
|
||||
lru-cache: 6.0.0
|
||||
dev: true
|
||||
|
||||
/serialize-javascript/4.0.0:
|
||||
resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==}
|
||||
@ -7667,7 +7689,6 @@ packages:
|
||||
|
||||
/yallist/4.0.0:
|
||||
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
|
||||
dev: true
|
||||
|
||||
/yargs-parser/20.2.9:
|
||||
resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
|
||||
@ -7720,13 +7741,6 @@ packages:
|
||||
regenerator-runtime: registry.npmmirror.com/regenerator-runtime/0.13.9
|
||||
dev: true
|
||||
|
||||
registry.npmmirror.com/@nicolo-ribaudo/chokidar-2/2.1.8-no-fsevents.3:
|
||||
resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz}
|
||||
name: '@nicolo-ribaudo/chokidar-2'
|
||||
version: 2.1.8-no-fsevents.3
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
registry.npmmirror.com/ansi-escapes/4.3.2:
|
||||
resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz}
|
||||
name: ansi-escapes
|
||||
@ -7781,15 +7795,6 @@ packages:
|
||||
version: 1.5.1
|
||||
dev: false
|
||||
|
||||
registry.npmmirror.com/bindings/1.5.0:
|
||||
resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz}
|
||||
name: bindings
|
||||
version: 1.5.0
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
file-uri-to-path: registry.npmmirror.com/file-uri-to-path/1.0.0
|
||||
optional: true
|
||||
|
||||
registry.npmmirror.com/bl/4.1.0:
|
||||
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz}
|
||||
name: bl
|
||||
@ -7841,24 +7846,6 @@ packages:
|
||||
version: 0.7.0
|
||||
dev: false
|
||||
|
||||
registry.npmmirror.com/chokidar/3.5.3:
|
||||
resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz}
|
||||
name: chokidar
|
||||
version: 3.5.3
|
||||
engines: {node: '>= 8.10.0'}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
anymatch: 3.1.2
|
||||
braces: 3.0.2
|
||||
glob-parent: 5.1.2
|
||||
is-binary-path: 2.1.0
|
||||
is-glob: 4.0.3
|
||||
normalize-path: 3.0.0
|
||||
readdirp: 3.6.0
|
||||
optionalDependencies:
|
||||
fsevents: registry.npmmirror.com/fsevents/2.3.2
|
||||
optional: true
|
||||
|
||||
registry.npmmirror.com/cli-cursor/3.1.0:
|
||||
resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz}
|
||||
name: cli-cursor
|
||||
@ -8183,13 +8170,6 @@ packages:
|
||||
escape-string-regexp: registry.npmmirror.com/escape-string-regexp/1.0.5
|
||||
dev: false
|
||||
|
||||
registry.npmmirror.com/file-uri-to-path/1.0.0:
|
||||
resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz}
|
||||
name: file-uri-to-path
|
||||
version: 1.0.0
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
registry.npmmirror.com/fs-extra/10.0.1:
|
||||
resolution: {integrity: sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fs-extra/-/fs-extra-10.0.1.tgz}
|
||||
name: fs-extra
|
||||
@ -8207,19 +8187,6 @@ packages:
|
||||
version: 1.0.0
|
||||
dev: false
|
||||
|
||||
registry.npmmirror.com/fsevents/1.2.13:
|
||||
resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz}
|
||||
name: fsevents
|
||||
version: 1.2.13
|
||||
engines: {node: '>= 4.0'}
|
||||
os: [darwin]
|
||||
deprecated: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
bindings: registry.npmmirror.com/bindings/1.5.0
|
||||
nan: registry.npmmirror.com/nan/2.15.0
|
||||
optional: true
|
||||
|
||||
registry.npmmirror.com/fsevents/2.3.2:
|
||||
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz}
|
||||
name: fsevents
|
||||
@ -8253,6 +8220,7 @@ packages:
|
||||
name: graceful-fs
|
||||
version: 4.2.9
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
|
||||
registry.npmmirror.com/has-flag/4.0.0:
|
||||
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz}
|
||||
@ -8429,13 +8397,6 @@ packages:
|
||||
version: 0.0.8
|
||||
dev: false
|
||||
|
||||
registry.npmmirror.com/nan/2.15.0:
|
||||
resolution: {integrity: sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/nan/-/nan-2.15.0.tgz}
|
||||
name: nan
|
||||
version: 2.15.0
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
registry.npmmirror.com/once/1.4.0:
|
||||
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/once/-/once-1.4.0.tgz}
|
||||
name: once
|
||||
@ -8593,6 +8554,7 @@ packages:
|
||||
version: 0.6.1
|
||||
engines: {node: '>=0.10.0'}
|
||||
requiresBuild: true
|
||||
dev: false
|
||||
|
||||
registry.npmmirror.com/string-width/1.0.2:
|
||||
resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/string-width/-/string-width-1.0.2.tgz}
|
||||
|
Loading…
x
Reference in New Issue
Block a user