npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@serverless-devs/s-core

v0.0.28

Published

Serverless Devs Tool Core Component

Downloads

7

Readme

s-core使用文档

s-core是Serverless-Devs-Tool的一个官方组件,通过该组件您可以轻松处理一些有趣的事情:

  • 状态存储、读取
  • 组件加载、调用
  • 参数转换等
  • 帮助文档
  • 日志输出
  • 打包压缩
  • 获取密钥信息

整体使用方法

1: 导入依赖,并且做好extends即可:

const { Component } = require('@serverless-devs/s-core')
class MyComponent extends Component {
}

状态存储、读取

状态的存储和读取,实际上是在项目中经常用到的,通过这个功能,我们可以存储简单的状态。

首先进行部分初始化:

await this.init()

然后进行可以读取状态和存储状态:

读取状态:

const state = this.state

存储状态:

this.state = {}
this.save()

组件加载、调用

例如,我在做某个Component的时候,需要导入fc组件,则:

const fc = await this.load('fc', 'Component', 'alibaba');

其中load有三个参数,分别是:

  • componentName: 组件名
  • componentAlias:设置的别名
  • provider:组件的提供商

参数转换等

参数转换方法是比较简单的,您只需要传入对应参数即可,例如:

this.args(inputs.Args)

此时,我在控制台输入:

s deploy c-1 c-2 c-3 -a b --cc d

这一部分的解析结果是:

{ Commands: [ 'c-1', 'c-2', 'c-3' ], Parameters: { a: 'b', cc: 'd' } }

额外参数

其实在this.args()方法中是有三个参数的,即:

  • argsStr: 这部分是String类型,是参数
  • boolList: 这部分是Array类型,是告诉解析时有那些参数是true/false类型
  • moreList: 这部分是Array类型,是告诉解析时有那些参数是带有空格的
  • argsList: 这部分是Array类型,是告诉解析时只解析某些参数

例如,当我boolList设置成了['a', 'b'],那么当我传入的数据为-a 1 -b 2 -c 3

系统为我解析的结果是:

{
  Commands: [ '1', '2' ],
  Parameters: {
    a: true,
    b: true,
    c: '3'
  }
}

再例如,当我们的moreList设置为['start-time']之后,当我传入-a 1 2 3 --start-time 4 5 6

系统为我解析的结果是:

{
  Commands: [ '2', '3' ],
  Parameters: {
    a: '1',
    start-time: '4 5 6'
  }
}

例如,当我解析时,是想解析['--cmd', '-c'], 则可以传入argsList为:['--cmd', '-c']

当我们执行:s deploy aaaa -a --cmd 'ls -a && la -a'

结果为:

{ Commands: [ 'test' ], Parameters: { cmd: 'ls -a && la -a' } }

帮助文档

直接将s启动器的inputs和help传入即可,例如:

this.help(inputs, {
    "description": "这是帮助文档",
    "commands": [{
          "name": "指令1",
          "desc": "指令1描述",
        },{
          "name": "指令2",
          "desc": "指令2描述",
        }],
        "args": [{
          "name": "参数1",
          "desc": "参数1描述",
        },{
          "name": "参数2",
          "desc": "参数2描述",
    }],
})

当用户执行s deploy -h/--help的时候:


    这是帮助文档


  Commands: 
      指令1: 指令1描述
      指令2: 指令2描述

  Args: 
      参数1: 参数1描述
      参数2: 参数2描述

日志输出

系统默认提供多种格式日志输出,基本使用方法:

首先导入:

const { Log } = require('@serverless-devs/s-core')

然后创建对象:

const log = new Log()

接下来就可以使用日志能力了:

log.log(`Waiting for service ${serviceName} ${beforeDeployLog}...`)

或者增加一定的设置:

log.log(`Waiting for service ${serviceName} ${beforeDeployLog}...`, {output: true})

log

该种格式会输出灰色字符串。

如果执行指令的时候,没有加--verbose,系统不会输出该类型数据,只有加--verbose才会输出;如果组件开发者想默认输出该类型内容,可以设置参数output: true

如果系统设置的output-colordisable,则不会输出颜色,只有output-colorenable,才可以输出颜色;

log方法参数有:

  • message: 日志信息
  • option: 设置,object
    • style: 输出类型,默认为0,表示直接输出,取值为1时,会在输出前面默认添加[LOG]
    • number:前面添加的空格个数,Number类型
    • output: 取值false(默认)不输出日志,只有在加--verbose时输出日志,取值true默认输出日志

warn

该种格式会输出黄色字符串。

如果系统设置的output-colordisable,则不会输出颜色,只有output-colorenable,才可以输出颜色;

warn方法参数有:

  • message: 日志信息
  • option: 设置,object
    • style: 输出类型,默认为0,表示直接输出,取值为1时,会在输出前面默认添加[WARN]
    • number:前面添加的空格个数,Number类型

error

该种格式会输出红色字符串。

error方法参数有:

  • message: 日志信息
  • option: 设置,object
    • style: 输出类型,默认为0,表示直接输出,取值为1时,会在输出前面默认添加[ERROR]
    • number:前面添加的空格个数,Number类型

info

该种格式会输出蓝色字符串。

如果系统设置的output-colordisable,则不会输出颜色,只有output-colorenable,才可以输出颜色;

info方法参数有:

  • message: 日志信息
  • option: 设置,object
    • style: 输出类型,默认为0,表示直接输出,取值为1时,会在输出前面默认添加[INFO]
    • number:前面添加的空格个数,Number类型

success

该种格式会输出绿色字符串。

如果系统设置的output-colordisable,则不会输出颜色,只有output-colorenable,才可以输出颜色;

success方法参数有:

  • message: 日志信息
  • option: 设置,object
    • style: 输出类型,默认为0,表示直接输出,取值为1时,会在输出前面默认添加[SUCCESS]

    • number:前面添加的空格个数,Number类型

打包压缩

可以通过zip()方法进行打包,其中该方法参数有:

  • codeUri: 打包的路径
  • exclude: 不包括的文件(list)
  • include: 额外包括的文件(list)
  • outputFileName :打包后的名字
  • outputFilePath :输出的路径

获取密钥信息

通过await this.credentials(inputs)可获取密钥信息。