# fe-builder-cli

> a builder cli

Latest version **1.0.3** (published 2019-07-22) · ISC license · 0 weekly downloads

## Install

```sh
npm install fe-builder-cli
pnpm add fe-builder-cli
yarn add fe-builder-cli
bun add fe-builder-cli
```

Provides the command `fe-builder`.

## 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 | 1.0.3 |
| Published | 2019-07-22 |
| First published | 2019-07-04 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 51 |
| Unpacked size | 260.6 KB |
| Known vulnerabilities | 0 (+6 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 0 |
| Author | dybj |
| Maintainers | ericyang89 |
| Keywords | builder, cli |

## Links

- npm: https://www.npmjs.com/package/fe-builder-cli
- Repository: https://github.com/ericyang89/fe-builder-cli
- Homepage: https://github.com/ericyang89/fe-builder-cli#readme
- Issues: https://github.com/ericyang89/fe-builder-cli/issues
- npm.io page: https://npm.io/package/fe-builder-cli

## Dependencies (51)

- [execa](https://npm.io/package/execa.md) ^1.0.0
- [yargs](https://npm.io/package/yargs.md) ^13.2.2
- [tslint](https://npm.io/package/tslint.md) ^5.16.0
- [find-up](https://npm.io/package/find-up.md) ^3.0.0
- [webpack](https://npm.io/package/webpack.md) ^4.28.3
- [prettier](https://npm.io/package/prettier.md) ^1.17.0
- [cross-env](https://npm.io/package/cross-env.md) ^5.2.0
- [happypack](https://npm.io/package/happypack.md) ^5.0.0
- [invariant](https://npm.io/package/invariant.md) ^2.2.4
- [typescript](https://npm.io/package/typescript.md) ^3.2.2
- [url-loader](https://npm.io/package/url-loader.md) ^1.1.2
- [@babel/core](https://npm.io/package/@babel/core.md) ^7.0.0
- [file-loader](https://npm.io/package/file-loader.md) ^3.0.1
- [@types/execa](https://npm.io/package/@types/execa.md) ^0.9.0
- [babel-loader](https://npm.io/package/babel-loader.md) ^8.0.5
- [tslint-react](https://npm.io/package/tslint-react.md) ^4.0.0
- [@babel/polyfill](https://npm.io/package/@babel/polyfill.md) ^7.0.0
- [@babel/register](https://npm.io/package/@babel/register.md) ^7.0.0
- [@types/invariant](https://npm.io/package/@types/invariant.md) ^2.2.29
- [react-hot-loader](https://npm.io/package/react-hot-loader.md) ^4.7.1
- [@babel/preset-env](https://npm.io/package/@babel/preset-env.md) ^7.0.0
- [webpack-dev-server](https://npm.io/package/webpack-dev-server.md) ^3.1.14
- [@babel/preset-react](https://npm.io/package/@babel/preset-react.md) ^7.0.0
- [html-webpack-plugin](https://npm.io/package/html-webpack-plugin.md) ^4.0.0-beta.5
- [@babel/preset-stage-1](https://npm.io/package/@babel/preset-stage-1.md) ^7.0.0
- [increase-memory-limit](https://npm.io/package/increase-memory-limit.md) ^1.0.6
- [tslint-config-prettier](https://npm.io/package/tslint-config-prettier.md) ^1.18.0
- [tslint-config-standard](https://npm.io/package/tslint-config-standard.md) ^8.0.1
- [mini-css-extract-plugin](https://npm.io/package/mini-css-extract-plugin.md) ^0.5.0
- [uglifyjs-webpack-plugin](https://npm.io/package/uglifyjs-webpack-plugin.md) ^2.1.1
- [@babel/preset-typescript](https://npm.io/package/@babel/preset-typescript.md) ^7.1.0
- [fork-ts-checker-webpack-plugin](https://npm.io/package/fork-ts-checker-webpack-plugin.md) ^0.5.2
- [script-ext-html-webpack-plugin](https://npm.io/package/script-ext-html-webpack-plugin.md) ^2.1.3
- [typings-for-css-modules-loader](https://npm.io/package/typings-for-css-modules-loader.md) ^1.7.0
- [@babel/plugin-syntax-import-meta](https://npm.io/package/@babel/plugin-syntax-import-meta.md) ^7.0.0
- [@babel/plugin-proposal-decorators](https://npm.io/package/@babel/plugin-proposal-decorators.md) ^7.0.0
- [optimize-css-assets-webpack-plugin](https://npm.io/package/optimize-css-assets-webpack-plugin.md) ^5.0.1
- [@babel/plugin-proposal-json-strings](https://npm.io/package/@babel/plugin-proposal-json-strings.md) ^7.0.0
- [@babel/plugin-syntax-dynamic-import](https://npm.io/package/@babel/plugin-syntax-dynamic-import.md) ^7.0.0
- [@babel/plugin-proposal-function-bind](https://npm.io/package/@babel/plugin-proposal-function-bind.md) ^7.0.0
- [@babel/plugin-proposal-function-sent](https://npm.io/package/@babel/plugin-proposal-function-sent.md) ^7.0.0
- [@babel/plugin-proposal-do-expressions](https://npm.io/package/@babel/plugin-proposal-do-expressions.md) ^7.0.0
- [@babel/plugin-proposal-class-properties](https://npm.io/package/@babel/plugin-proposal-class-properties.md) ^7.0.0
- [@babel/plugin-proposal-numeric-separator](https://npm.io/package/@babel/plugin-proposal-numeric-separator.md) ^7.0.0
- [@babel/plugin-proposal-optional-chaining](https://npm.io/package/@babel/plugin-proposal-optional-chaining.md) ^7.0.0
- [@babel/plugin-proposal-pipeline-operator](https://npm.io/package/@babel/plugin-proposal-pipeline-operator.md) ^7.0.0
- [@babel/plugin-proposal-throw-expressions](https://npm.io/package/@babel/plugin-proposal-throw-expressions.md) ^7.0.0
- [@babel/plugin-proposal-export-default-from](https://npm.io/package/@babel/plugin-proposal-export-default-from.md) ^7.0.0
- [@babel/plugin-proposal-export-namespace-from](https://npm.io/package/@babel/plugin-proposal-export-namespace-from.md) ^7.0.0
- [@babel/plugin-proposal-nullish-coalescing-operator](https://npm.io/package/@babel/plugin-proposal-nullish-coalescing-operator.md) ^7.0.0
- [@babel/plugin-proposal-logical-assignment-operators](https://npm.io/package/@babel/plugin-proposal-logical-assignment-operators.md) ^7.0.0

## Alternatives

- [@salesforce/cli](https://npm.io/package/@salesforce/cli.md) — 389.7K weekly downloads
- [@mintlify/cli](https://npm.io/package/@mintlify/cli.md) — 208.9K weekly downloads
- [@grafana/e2e-selectors](https://npm.io/package/@grafana/e2e-selectors.md) — 128.7K weekly downloads
- [mintlify](https://npm.io/package/mintlify.md) — 112.0K weekly downloads
- [@intlayer/cli](https://npm.io/package/@intlayer/cli.md) — 22.8K weekly downloads

## Recent versions

- 1.0.3 (latest) — 2019-07-22
- 1.0.2 — 2019-07-05
- 1.0.1 — 2019-07-05
- 1.0.0 — 2019-07-04

## README

# fe-builder

前端构建命令行工具。将构建部分单独抽取成一个项目，简化新项目的配置。支持 0 配置；100% 可扩展。减小维护成本。
集成ci

## 特点

+ 简化新项目配置
+ 支持 0 配置
+ 100% 可扩展webpack的配置
+ 默认支持 typescript
+ 默认支持 dllPlugin 打包性能优化
+ 支持 happypack，并行 loader
+ webpack 升级后，只需要升级 fe-builder

## 约定||规范

+ 默认入口路径 `/src/index.(j|s)x？`
+ 默认生成目录 `/build`
+ html 模板路径 `/src/index.html`
+ dll 默认配置:
  + dll 入口路径`/src/vendors.js`
  + dll 生成文件 `resource/dll.vendor.js` 
  + dll 生成配置文件 `resource/vendor-manifest.json` 
  + 需要手动在 html 模板中加入 dll 生成文件的 引入

## 安装

``` shell
 yarn add fe-builder-cli
```

## 使用

### 环境变量

```typescript

export enum NODE_ENV{
  'development'='development',
  'production'='production',
}
export enum API_ENV{
  'develop'='develop',
  'staging'='staging',
  'testing'='testing',
  'production'='production',
}

```

### 命令

``` shell

 # 初始化 会给出3个默认的配置文件
 # fe-builder.config.js -- fe-builder 构建配置文件
 # babel.config.js      -- 默认 babel 配置文件
 # tsconfig.json        -- 默认 ts 配置文件
 # 如果文件已存在则不会覆盖；只会给予提示
 fe-builder init

 fe-builder dev # 开发
 fe-builder pro # 打包部署
 fe-builder dll # dll 打包
 fe-builder formatAll # 通过 prettier 格式化话 /src 目录的文件

 fe-builder --help # 帮助

```

### 推荐 package.json 的 scripts 配置

```json
  "scripts": {
    "init": "fe-builder init",
    "start": " cross-env NODE_ENV=development API_ENV=develop fe-builder dev",
    "build:develop": " cross-env NODE_ENV=production API_ENV=develop fe-builder pro",
    "build:testing": " cross-env NODE_ENV=production API_ENV=testing fe-builder pro",
    "build:staging": " cross-env NODE_ENV=production API_ENV=staging fe-builder pro",
    "build:master": " cross-env NODE_ENV=production API_ENV=production fe-builder pro",
    "build:production": "npm run build:master",
    "build": "npm run build:production"
  }
```


### API & 默认值

```typescript
type Config={
  port:number,

  // 本地开发域名
  devUri:string,

  // 静态资源域名
  staticBaseUri:string|EnvObj ,

  // 网站域名
  baseUri:string|EnvObj ,
  useCssModal?:boolean,
  usePostCss?:boolean,
  useDll?:boolean,
  keepCssInJs?: boolean;
  OutputFilename?: string;
  webpackConfig?:(arg1:webpack.Configuration,arg2:any)=>webpack.Configuration,

  // 参考 webpack-dev-server 的 proxy
  proxy:any,
}

const defaultConfig:Config={
  port:3000,
  devUri:'127.0.0.1',
  staticBaseUri:'/',
  baseUri:'/',
  useCssModal:false,
  usePostCss:false,
  useDll:false,
  webpackConfig:null,
  proxy:{},
};

```

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