# epmp-scripts

> development and build services of epmp project

Latest version **2.0.8** (published 2022-02-18) · MIT license · 0 weekly downloads

## Install

```sh
npm install epmp-scripts
pnpm add epmp-scripts
yarn add epmp-scripts
bun add epmp-scripts
```

Provides the commands `us`, `epmp-scripts`.

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.0.8 |
| Published | 2022-02-18 |
| First published | 2020-09-28 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >= 8.9.0 |
| Dependencies | 52 |
| Unpacked size | 78.2 KB |
| Known vulnerabilities | 0 (+16 in 7 direct dependencies) |
| Install scripts | no |
| Author | chief |
| Maintainers | zhaoyuchief, luckyliuyz |
| Keywords | server, build, webpack, tool, epmp, yonyou, fe |

## Links

- npm: https://www.npmjs.com/package/epmp-scripts
- Repository: https://github.com/bip-epmp/epmp-web
- Homepage: https://github.com/bip-epmp/epmp-web/tree/master/packages/epmp-scripts#readme
- Issues: https://github.com/bip-epmp/epmp-web/issues
- npm.io page: https://npm.io/package/epmp-scripts

## Dependencies (52)

- [ip](https://npm.io/package/ip.md) 1.1.5
- [url](https://npm.io/package/url.md) ^0.11.0
- [glob](https://npm.io/package/glob.md) 7.1.7
- [less](https://npm.io/package/less.md) 3.12.2
- [util](https://npm.io/package/util.md) ^0.12.4
- [chalk](https://npm.io/package/chalk.md) 4.1.2
- [assert](https://npm.io/package/assert.md) ^2.0.0
- [buffer](https://npm.io/package/buffer.md) ^6.0.3
- [cssnano](https://npm.io/package/cssnano.md) 5.0.7
- [express](https://npm.io/package/express.md) 4.17.1
- [webpack](https://npm.io/package/webpack.md) 5.65.0
- [fs-extra](https://npm.io/package/fs-extra.md) 10.0.0
- [get-port](https://npm.io/package/get-port.md) 5.1.1
- [minimist](https://npm.io/package/minimist.md) 1.2.5
- [ts-loader](https://npm.io/package/ts-loader.md) ^8.1.0
- [css-loader](https://npm.io/package/css-loader.md) 5.2.7
- [typescript](https://npm.io/package/typescript.md) 4.5.5
- [url-loader](https://npm.io/package/url-loader.md) 4.1.0
- [@babel/core](https://npm.io/package/@babel/core.md) 7.15.0
- [file-loader](https://npm.io/package/file-loader.md) 6.2.0
- [less-loader](https://npm.io/package/less-loader.md) 7.0.1
- [autoprefixer](https://npm.io/package/autoprefixer.md) 10.3.1
- [babel-loader](https://npm.io/package/babel-loader.md) 8.2.2
- [style-loader](https://npm.io/package/style-loader.md) 3.2.1
- [thread-loader](https://npm.io/package/thread-loader.md) 3.0.4
- [vm-browserify](https://npm.io/package/vm-browserify.md) ^1.1.2
- [webpack-merge](https://npm.io/package/webpack-merge.md) 5.8.0
- [postcss-loader](https://npm.io/package/postcss-loader.md) 6.1.1
- [browserify-zlib](https://npm.io/package/browserify-zlib.md) ^0.2.0
- [path-browserify](https://npm.io/package/path-browserify.md) ^1.0.1
- [@babel/preset-env](https://npm.io/package/@babel/preset-env.md) 7.15.0
- [crypto-browserify](https://npm.io/package/crypto-browserify.md) ^3.12.0
- [stream-browserify](https://npm.io/package/stream-browserify.md) ^3.0.0
- [@babel/preset-react](https://npm.io/package/@babel/preset-react.md) 7.14.5
- [html-webpack-plugin](https://npm.io/package/html-webpack-plugin.md) 5.3.2
- [clean-webpack-plugin](https://npm.io/package/clean-webpack-plugin.md) 3.0.0
- [http-proxy-middleware](https://npm.io/package/http-proxy-middleware.md) 2.0.1
- [terser-webpack-plugin](https://npm.io/package/terser-webpack-plugin.md) 4.2.0
- [postcss-flexbugs-fixes](https://npm.io/package/postcss-flexbugs-fixes.md) 5.0.2
- [webpack-dev-middleware](https://npm.io/package/webpack-dev-middleware.md) 5.0.0
- [webpack-hot-middleware](https://npm.io/package/webpack-hot-middleware.md) 2.25.0
- [mini-css-extract-plugin](https://npm.io/package/mini-css-extract-plugin.md) 1.6.2
- [webpack-open-browser-plugin](https://npm.io/package/webpack-open-browser-plugin.md) ^1.0.7
- [speed-measure-webpack-plugin](https://npm.io/package/speed-measure-webpack-plugin.md) 1.5.0
- [@babel/plugin-transform-runtime](https://npm.io/package/@babel/plugin-transform-runtime.md) 7.15.0
- [@babel/plugin-proposal-decorators](https://npm.io/package/@babel/plugin-proposal-decorators.md) 7.14.5
- [optimize-css-assets-webpack-plugin](https://npm.io/package/optimize-css-assets-webpack-plugin.md) 6.0.1
- [@babel/plugin-syntax-dynamic-import](https://npm.io/package/@babel/plugin-syntax-dynamic-import.md) 7.8.3
- [babel-plugin-dynamic-import-webpack](https://npm.io/package/babel-plugin-dynamic-import-webpack.md) 1.1.0
- [@babel/plugin-proposal-private-methods](https://npm.io/package/@babel/plugin-proposal-private-methods.md) ^7.16.11
- [@babel/plugin-proposal-class-properties](https://npm.io/package/@babel/plugin-proposal-class-properties.md) 7.14.5
- [@babel/plugin-proposal-private-property-in-object](https://npm.io/package/@babel/plugin-proposal-private-property-in-object.md) ^7.16.7

## Alternatives

- [raw-loader](https://npm.io/package/raw-loader.md) — 4.3M weekly downloads
- [plop](https://npm.io/package/plop.md) — 1.4M weekly downloads
- [webpack-deadcode-plugin](https://npm.io/package/webpack-deadcode-plugin.md) — 80.3K weekly downloads
- [@storybook/preact-vite](https://npm.io/package/@storybook/preact-vite.md) — 54.2K weekly downloads
- [vite-plugin-transform](https://npm.io/package/vite-plugin-transform.md) — 2.4K weekly downloads

## Recent versions

- 2.0.8 (latest) — 2022-02-18
- 2.0.7 — 2022-02-14
- 2.0.6 — 2022-02-14
- 2.0.5 — 2022-02-14
- 2.0.4 — 2022-02-14
- 2.0.3 — 2022-02-11
- 2.0.2 — 2022-02-10
- 2.0.1 — 2022-02-10
- 2.0.0 — 2022-02-10
- 1.1.7 — 2021-12-07
- 1.1.6 — 2021-07-17
- 1.1.5 — 2021-07-17
- 1.1.4 — 2021-07-17
- 1.1.3 — 2021-07-16
- 1.1.2 — 2021-07-15
- … 37 more at https://npm.io/package/epmp-scripts/versions

## README

# epmp-scripts

[![npm version](https://img.shields.io/npm/v/epmp-scripts.svg)](https://www.npmjs.com/package/epmp-scripts)
[![NPM downloads](http://img.shields.io/npm/dt/epmp-scripts.svg?style=flat)](https://npmjs.org/package/epmp-scripts)

---

[![NPM](https://nodei.co/npm/epmp-scripts.png)](https://nodei.co/npm/epmp-scripts/)

---

## 介绍

集成了最新的技术栈包括`babel7,autoprefixer,less,postcss,webpack4`、高度封装、简化配置、无多余依赖、具有服务启动、开发调试、代理访问、数据模拟、构建资源、自动刷新功能。快速开发EPMP微服务工程底层配套工具支撑



## 安装


工具可以依赖EPMP项目工程通过`scripts`运行

## 使用

1. 通过`npm scripts`启动

```bash

# 开发启动
$ npm start

# 开发构建
$ npm run build
```
内置已经集成epmp-scripts的启动

## 启动方式对比优劣

全局启动和项目内脚本启动区别：

| 启动方式 | 优点                                                                         | 缺点                                                                   |
| -------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| 全局启动 | 无需根据项目一次次安装重复依赖npm包节省磁盘空间速度                          | 不受项目内工具版本控制，会导致每个开发者环境不统一，出现未知版本错误等 |
| 脚本启动 | 无需管理全局环境变量、不污染全局变量、随时根据项目内版本更新、可控每一次版本 | 多次项目使用需要反复安装、占用磁盘空间大                               |


## 项目配置文件说明

EPMP微服务前端工程核心配置文件只有一个`epmp.config.js`下面对配置文件说明：

```js
module.exports = () => {
    return {
        // 启动所有模块，默认这个配置，速度慢的时候使用另外的配置
        // bootList: true,

        // 启动这两个模块，不启动调试，关闭构建
        bootList: [
            "demo-app-org",
            //"demo-app-staff"
        ],
        // 代理的配置
        proxy: [
            {
                enable: true,
                headers: {
                    // 与下方url一致
                    "Referer": "http://iuap-meger-demo.test.app.yyuap.com"
                },
                //要代理访问的对方路由
                router: [
                    '/iuap'
                ],
                // pathRewrite: {
                //     '^/api/old-path': '/api/new-path', // rewrite path
                //     '^/api/remove/path': '/path' // remove base path
                // },
                url: 'http://iuap-meger-demo.test.app.yyuap.com'
            }
        ],
        // 静态托管服务
        static: 'src/epmp-common/src/static',
        // 是否展开静态引用资源
        resExtra: true,
        // 构建资源是否产出SourceMap
        openSourceMap: true,
        // 全局环境变量
        globalEnv: {
            GROBAL_HTTP_CTX: JSON.stringify("/iuap_demo"),
        },
        // 别名配置
        alias: {
            //'epmp-apps': path.resolve(__dirname, 'src/epmp-apps/')
        },
        // 构建排除指定包
        externals: {
            //'tinper-bee': 'TinperBee'
        },
        // 调试服务需要运行的插件
        devPlugins: [],
        // 构建服务需要运行的插件
        buildPlugins: []
    }
}
```

## 功能配置节点说明

| 配置项         | 说明                                                                                          | 默认值    | 可选值                                                                                                                                                                                                                                                                                                                                       | 备注                                                                                                                                                                                                                             |
| -------------- | --------------------------------------------------------------------------------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| bootList       | 启动、构建入口配置，true表示所有模块全部启用，数组参数按需模块使用                            | true      | `true`,`['app-name','app-demo']`                                                                                                                                                                                                                                                                                                             | 一般默认开启所有模块的调试和构建，低配置机器或者只需要开发一块模块的话可以选择性的去配置单独启动                                                                                                                                 |
| proxy          | 开发调试阶段的代理服务配置                                                                    | []        | `enable:true` 是否有效代理,false表示关闭. `headers:{}` 设置代理请求的消息头. `router:['/iuap','wbalone']`. `url:'proxy.example.com'`. 本地请求代理对方服务器地址. `pathRewrite:{}`URL重写服务.  `opts:{}` 如内置配置无法满足需求，需要单独设置原生配置 [http-proxy-middleware](https://www.npmjs.com/package/http-proxy-middleware#options). | 数组节点可以配置多条代理服务，通过`enable`来控制启用哪个，针对一些服务器校验头信息例如：`Referer`等就需要设置，其他常规的设置工具已经内置，代理路由`router`表示设置的几个路由访问后会代理到对方服务器上，`url`就是对方服务器地址 |
| globalEnv      | 程序内公共变量                                                                                | null      | 同webpack4 { key : value }                                                                                                                                                                                                                                                                                                                   | 接收K、V格式如：{GROBAL_HTTP_CTX: JSON.stringify("/iuap_demo")}                                                                                                                                                                  |
| alias          | 别名                                                                                          | null      | 同webpack4 {key : value}                                                                                                                                                                                                                                                                                                                     | 接收K、V格式如：{'epmp-apps': path.resolve(__dirname, 'src/epmp-apps/')}                                                                                                                                                         |
| externals      | 排除指定的包用外部变量代理提升打包性能                                                        | null      | 同webpack4 { key : value }                                                                                                                                                                                                                                                                                                                   | 接收K、V格式如：{'tinper-bee': 'TinperBee'}                                                                                                                                                                                      |
| loader         | 内置加载器无法处理需要单独去设置处理                                                          | []        | 同webpack4 loader                                                                                                                                                                                                                                                                                                                            |
| devPlugins     | 开发环境加载的插件                                                                            | []        | 同webpack4 plugin                                                                                                                                                                                                                                                                                                                            | 开发阶段使用的插件                                                                                                                                                                                                               |
| buildPlugins   | 生产环境加载的插件                                                                            | []        | 同webpack4 plugin                                                                                                                                                                                                                                                                                                                            | 生产阶段使用的插件                                                                                                                                                                                                               |
| openSourceMap  | 构建资源生产环境的时候产出sourceMap                                                           | true      | true,false                                                                                                                                                                                                                                                                                                                                   | -                                                                                                                                                                                                                                |
| css            | css loader的options                                                                           | undefined | -                                                                                                                                                                                                                                                                                                                                            | 具体参考https://www.npmjs.com/package/css-loader                                                                                                                                                                                 |
| less           | less loader的options                                                                          | undefined | -                                                                                                                                                                                                                                                                                                                                            | 具体参考https://www.npmjs.com/package/less-loader                                                                                                                                                                                |
| resExtra       | 是否展开静态引用资源，用于打包处理字体、图片等资源产出，或者不使用展开资源会打包到css方便管理 | true      | true,false                                                                                                                                                                                                                                                                                                                                   | -                                                                                                                                                                                                                                |
| static         | 静态托管服务，不按需打包                                                                      | undefined | -                                                                                                                                                                                                                                                                                                                                            | 脚手架内的任意文件夹即可，如：static : 'epmp-common/src/static'                                                                                                                                                                  |
| babelPresets   | `babel`使用的 presets                                                                         | undefined | -                                                                                                                                                                                                                                                                                                                                            | 如：require.resolve('@babel/preset-react')                                                                                                                                                                                       |
| babelPlugins   | `babel`的插件                                                                                 | undefined | 如：require.resolve("babel-plugin-import-bee")                                                                                                                                                                                                                                                                                               |
| scanRoot       | 自定义文件夹作为扫描微应用入口，原则上是按照./自定义目录/*/src/app.js扫描                     | undefined | -                                                                                                                                                                                                                                                                                                                                            |
| distRoot       | 输出自定义文件夹                                                                              | undefined | -                                                                                                                                                                                                                                                                                                                                            |
| host           | 自定义IP、域名启动                                                                            | undefined | 支持IPV4、IPV6、域名                                                                                                                                                                                                                                                                                                                         |
| postcssPlugins | `PostCss` Plugin                                                                              | undefined | -                                                                                                                                                                                                                                                                                                                                            |

## 自动开启浏览器

通过配置npm启动命令：

```js
  "scripts": {
    "start": "epmp-scripts start --homepage=demo-app-org",
    "build": "epmp-scripts build"
  }
```

## 版本

- `0.1.1` 初始版

---
_Source: https://npm.io/package/epmp-scripts · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
