# @syyfe/syy-mp-service

> 商业云小程序脚手架主程序服务

Latest version **3.8.0** (published 2025-08-19) · ISC license · 0 weekly downloads

## Install

```sh
npm install @syyfe/syy-mp-service
pnpm add @syyfe/syy-mp-service
yarn add @syyfe/syy-mp-service
bun add @syyfe/syy-mp-service
```

## Health

**Score 35/100 (D)** — status: maintenance-mode.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.8.0 |
| Published | 2025-08-19 |
| First published | 2022-03-03 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 34 |
| Unpacked size | 156.2 KB |
| Known vulnerabilities | 0 (+6 in 2 direct dependencies) |
| Install scripts | no |
| Author | henry.zhou |
| Maintainers | henry.zhou |

## Links

- npm: https://www.npmjs.com/package/@syyfe/syy-mp-service
- npm.io page: https://npm.io/package/@syyfe/syy-mp-service

## Dependencies (34)

- [i](https://npm.io/package/i.md) ^0.3.7
- [del](https://npm.io/package/del.md) ^5.1.0
- [npm](https://npm.io/package/npm.md) ^8.10.0
- [gulp](https://npm.io/package/gulp.md) ^4.0.2
- [less](https://npm.io/package/less.md) 3.13.1
- [path](https://npm.io/package/path.md) ^0.12.7
- [fetch](https://npm.io/package/fetch.md) ^1.1.0
- [dotenv](https://npm.io/package/dotenv.md) ^16.0.0
- [events](https://npm.io/package/events.md) ^3.3.0
- [esbuild](https://npm.io/package/esbuild.md) ^0.14.36
- [gulp-if](https://npm.io/package/gulp-if.md) ^3.0.0
- [postcss](https://npm.io/package/postcss.md) 8.4.14
- [hash-sum](https://npm.io/package/hash-sum.md) ^2.0.0
- [lazypipe](https://npm.io/package/lazypipe.md) ^1.0.2
- [@hapi/joi](https://npm.io/package/@hapi/joi.md) ^15.0.0
- [deepmerge](https://npm.io/package/deepmerge.md) ^4.2.2
- [gulp-less](https://npm.io/package/gulp-less.md) ^4.0.1
- [gulp-rename](https://npm.io/package/gulp-rename.md) ^2.0.0
- [gulp-terser](https://npm.io/package/gulp-terser.md) ^2.1.0
- [gulp-esbuild](https://npm.io/package/gulp-esbuild.md) ^0.10.2
- [gulp-install](https://npm.io/package/gulp-install.md) ^1.1.0
- [gulp-replace](https://npm.io/package/gulp-replace.md) ^1.1.3
- [dotenv-expand](https://npm.io/package/dotenv-expand.md) ^5.1.0
- [gulp-replaces](https://npm.io/package/gulp-replaces.md) ^0.1.5
- [pretty-hrtime](https://npm.io/package/pretty-hrtime.md) ^1.0.3
- [miniprogram-ci](https://npm.io/package/miniprogram-ci.md) ^1.8.18
- [@types/hash-sum](https://npm.io/package/@types/hash-sum.md) ^1.0.0
- [gulp-sourcemaps](https://npm.io/package/gulp-sourcemaps.md) ^3.0.0
- [stream-combiner](https://npm.io/package/stream-combiner.md) ^0.2.2
- [write-json-file](https://npm.io/package/write-json-file.md) ^4.3.0
- [require-from-string](https://npm.io/package/require-from-string.md) ^2.0.2
- [@syyfe/syy-utils-node](https://npm.io/package/@syyfe/syy-utils-node.md) ^0.0.5
- [@syyfe/syy-mp-image-server](https://npm.io/package/@syyfe/syy-mp-image-server.md) ^3.5.0
- [@syyfe/gulp-replace-attribute](https://npm.io/package/@syyfe/gulp-replace-attribute.md) 1.0.1

## Recent versions

- 3.8.0 (latest) — 2025-08-19
- 3.7.2 — 2024-04-12
- 3.7.0 — 2023-05-17
- 3.6.0 — 2023-04-24
- 3.5.0 — 2023-04-12
- 3.4.3 — 2023-03-31
- 3.4.2 — 2023-03-06
- 3.4.1 — 2023-01-12
- 3.4.0 — 2023-01-12
- 3.3.0 — 2022-11-16
- 3.1.13 — 2022-07-21
- 3.1.12 — 2022-07-21
- 3.1.11 — 2022-07-16
- 3.1.10 — 2022-07-11
- 3.1.9 — 2022-07-07
- … 20 more at https://npm.io/package/@syyfe/syy-mp-service/versions

## README

# 商业云小程序脚手架

## 安装

```bash
npm i @syyfe/syy-mp-service -D
```

## IOptions 接口

`./src/config/appConfig` 实现了该接口并同时也实现 `IAppConfig`

`syy-mp-cli` 也同样实现该接口，命令调用传递相关的参数

```typescript
export interface IOptions {
    /** 当前执行路径，默认当前bash 路径 */
    rootPath: string;

    /** 是否开启缓存 默认 true*/
    cache: boolean;

    /** 当前执行用户 */
    mode: string;

    /** 是否上传代码 默认 false*/
    upload: boolean;

    /** 上传代码备注说明 */
    desc: string;
}
```

## AppConfig 系统配置属性

```typescript
export interface IAppConfig {
    /** 源码所在目录 */
    srcDir: string;

    /** 编译后输出目录 */
    outputDir: string;

    /** tsconfig.json 配置 */
    tsConfig: string;
}
```

## UserConfig 用户配置

```typescript
export interface IUserConfig {
    appConfig: IAppConfig;

    /**
     * 当前用户配置对象 syy.config.ts
     * @type {*}
     * @memberof UserConfig
     */
    context: any;

    /** 上传图片OSS */
    isUseOSS?: boolean;

    /** SyyImage 图片服务对象，用来开启代理和上传OSS使用 */
    imageOperator: any;

    /** 项目根目录下的package.json */
    srcPackageJsonPath?: string;

    /** 输出目录下的package.json */
    packageJsonPath?: string;

    /** 项目根目录下的project.config.json */
    srcProjectConfigJson?: string;

    /** 输出目录下的project.config.json */
    projectConfigJson?: string;

    /**
     * 加载用户配置 (根目录下的 syy.config.js 文件)，在 env 环境变量加载后执行
     * @param rootPath
     */
    initUserOptions(rootPath: string): any;
    /**
     * 初始化图片服务
     */
    initImageService(): Promise<void>;

    /**
     * OSS 图片重写方法
     * @param url 当前文件url
     */
    ossRewriter(url: string): string;
}
```

## 插件相关配置

```typescript
export interface IPlugin {
    /** 插件名称 */
    name: string;
    /**
     * 插件实例方法
     * @param {Service} ctx 上下文 当前service 对象
     * @memberof IPlugin
     */
    apply(ctx: Service): void;
}
```

插件需添加 `name`属性 和 实现 `apply` 方法 ， 方法里可以实现相应的插件初始、逻辑等操作

### ctx.on 钩子

-   beforeCompile: 插件初始化之后，编译前
-   done: 编译完成后

### 插件 Demo

```javascript
import { Service, IPlugin } from "@syyfe/syy-mp-service";
import { Log } from "@syyfe/syy-utils-node";
import { name } from "../package.json";
const fsx = require("fs-extra");
const writeJsonFile = require("write-json-file");

export default class SyyMpPluginLive implements IPlugin {
    name: string = name;
    options: any;

    constructor(options?: any) {
        this.options = options;
    }

    getArgs(): boolean {
        const args = require("minimist")(process.argv.slice(2), {
            boolean: ["live"]
        });
        return args["live"];
    }

    apply(ctx: Service): void {
        const isLive = this.getArgs();
        if (isLive) {
            ctx.on("done", async () => {
                const appJsonPath = ctx.appConfig.outputDir + "/app.json";
                const app = fsx.readJSONSync(appJsonPath);

                Log.info(`当前正在构建 "直播版" 小程序`);
                app.plugins = {
                    "live-player-plugin": {
                        version: "1.3.0",
                        provider: "wx2b03c6e691cd7370"
                    }
                };
                writeJsonFile.sync(appJsonPath, app, { detectIndent: true });
            });
        }
    }
}
```

---
_Source: https://npm.io/package/@syyfe/syy-mp-service · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
