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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@cloud-compiler/sandbox

v1.0.12

Published

The description of this project

Downloads

49

Readme

Cloud Compiler 云编译系统

它是由nodejs(typescript)编写,主要解决在线编译的问题。可以通过增加loader对不同语言的项目进行编译。同时可以通过增加插件来进行后续的上传整理工作。它是一套符合前端开发者使用的云编译工具。

程序基于NELTS架构实现,有着稳定的性能。感兴趣的小伙伴可以前往链接查看。

前提

它依赖 pm2 进程守护,请优先安装:

$ npm i -g pm2
$ pm2 install pm2-intercom

快速安装

您不必为安装烦恼,NILPPM提供最便捷的安装模式和升级模式,请跟着我们的步骤操作即可完成安装。

$ git clone [email protected]:cloud-compiler/repository.git
$ cd repository
$ rm -rf .git
$ npm ci

依赖安装完毕请修改配置文件 compile.config.js。具体配置参数说明见手动安装文档。

手动安装

手动安装过程页非常方便,请按照以下步骤进行。

第一步

确定您存放私有包的目录,比如我们存放在/usr/local/repo路径上。那么:

$ cd /usr/local/repo

第二步

创建一个package.json来描述这个仓库程序。

$ npm init

比如我们创建了如下的信息

{
  "name": "repo",
  "version": "1.0.0",
  "description": "",
  "main": "compile.config.js",
  "author": "",
  "license": "ISC"
}

第三步

安装我们的程序包,通过NPM直接安装

$ npm i @cloud-compiler/sandbox

第四步

package.json中写入命令

{
  // ...
  "scripts": {
    "start": "cc start -p 9047 && pm2 logs",
    "restart": "cc restart",
    "stop": "cc stop"
  },
  // ...
}

这里的start命令参数:

  • -m, --max <count> 启动时候子进程个数。
  • -p, --port <port> 启动服务的端口。
  • -l, --level <level> 日志级别

它是基于PM2守护进程的,所以能够使用PM2的所有命令。关于日志级别,请参考 这里

第五步

写入配置参数

在当前目录下新建一个compile.config.js文件,写入如下的配置

const Compiler = require('@cloud-compiler/sandbox');
module.exports = {
  html5: {
    loader: Compiler.HTML5Compiler
  }
}

compile.config.js文件的结构如下:

interface PluginLoader<T extends CompileDataType> {
  [name: string]: {
    loader: CustomCompiler<T> | string,
    plugins: (string | Compose.Middleware<CustomCompiler<T>>)[],
  }
}
  • loader 用来处理语言是如何编译的。
  • plugins 用来对编译后的产生的dest目录进行自定义处理。它可以是一个字符串(当作模块包处理,将使用require获取对象),也可以是一个插件对象数组。你可以简单的认为插件对象是一个中间件形式的。

loader编写:

我们可以参考 html5.ts 模块来编写。

插件编写:

import { CustomCompiler } from '@cloud-compiler/sandbox';
export default async (ctx: CustomCompiler, next: Function) => {
  // ctx.dest 就是编译后的文件夹
  await next();
}

第六步

通过以下命令启动

$ npm run start # 启动
$ npm run restart # 重启
$ npm run stop # 停止

更新

更新方式变的非常简单

$ npm update # 更新程序
$ npm run restart # 重启服务

调用

假设我们所启动的服务在 http://cc.example.com 上。我们需要编译H5项目。

注册任务

  • 路由 http://cc.example.com/task/${task_id}
  • 方法 PUT
  • BODY参数 如下:
{
  "type": "html5",
  "repo": {
    "url": "资源包URL地址,gitlab和github都由公开的资源包地址。",
    "headers": {
      "Private-Token": "私有key的值"
    }
  },
  "configs": {
    "installCommander": "cpm ci", // 安装依赖命令
    "buildCommander": "npm run build", // 编译项目命令
    "buildDistDictionary": "dist", // 项目编译后存放的文件夹名
    "dynamicArgumentsName": ".deploy.json", // 动态注入参数将生成一个文件,这里就是指这个文件的命令。
    "dynamicArgumentsData": { // 动态注入的参数,它将会将此数据生成一个响应的文件。
      "login_url": "http://xxxx.xxx.cn",
      "sign": "xxxx",
      // ...
    }
  }
}

请求将返回该任务的详细信息。其中有个socketPort字段,你可以直接使用socket.io-client链接这个端口来实时获取编译信息。

启动编译

  • 路由 http://cc.example.com/task/${task_id}
  • 方法 POST
  • BODY参数

停止编译

  • 路由 http://cc.example.com/task/${task_id}
  • 方法 DELETE

获取健康状态

  • 路由 http://cc.example.com
  • 方法 GET

你可以实时看到由多少任务在执行。

License

MIT

Copyright (c) 2019-present, yunjie (Evio) shen