# gt-workflow

> a workflow for jin10 front end

Latest version **0.2.9** (published 2021-01-04) · ISC license · 0 weekly downloads

## Install

```sh
npm install gt-workflow
pnpm add gt-workflow
yarn add gt-workflow
bun add gt-workflow
```

Provides the commands `workflow`, `workflow-run`, `workflow-config`, `workflow-create`.

## Health

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

Positive: no vulnerabilities.

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

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.9 |
| Published | 2021-01-04 |
| First published | 2017-07-21 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 28 |
| Unpacked size | 33 KB |
| Known vulnerabilities | 0 (+8 in 4 direct dependencies) |
| Install scripts | no |
| Author | joenillam@gmail.com |
| Maintainers | jin10 |

## Links

- npm: https://www.npmjs.com/package/gt-workflow
- npm.io page: https://npm.io/package/gt-workflow

## Dependencies (28)

- [del](https://npm.io/package/del.md) 3.0.0
- [opn](https://npm.io/package/opn.md) 5.1.0
- [gulp](https://npm.io/package/gulp.md) 4.0.0
- [chalk](https://npm.io/package/chalk.md) 2.1.0
- [slush](https://npm.io/package/slush.md) 1.1.1
- [moment](https://npm.io/package/moment.md) 2.18.1
- [express](https://npm.io/package/express.md) 4.15.4
- [webpack](https://npm.io/package/webpack.md) 2.6.1
- [commander](https://npm.io/package/commander.md) 2.11.0
- [babel-core](https://npm.io/package/babel-core.md) 6.26.0
- [css-loader](https://npm.io/package/css-loader.md) 0.28.7
- [url-loader](https://npm.io/package/url-loader.md) 0.5.9
- [cross-spawn](https://npm.io/package/cross-spawn.md) 7.0.3
- [file-loader](https://npm.io/package/file-loader.md) 0.11.2
- [html-loader](https://npm.io/package/html-loader.md) 1.0.0
- [babel-loader](https://npm.io/package/babel-loader.md) 7.1.2
- [style-loader](https://npm.io/package/style-loader.md) 0.18.2
- [webpack-merge](https://npm.io/package/webpack-merge.md) 4.1.0
- [babel-preset-env](https://npm.io/package/babel-preset-env.md) 1.6.0
- [html-webpack-plugin](https://npm.io/package/html-webpack-plugin.md) 2.29.0
- [image-webpack-loader](https://npm.io/package/image-webpack-loader.md) 7.0.1
- [webpack-dev-middleware](https://npm.io/package/webpack-dev-middleware.md) 1.12.0
- [webpack-hot-middleware](https://npm.io/package/webpack-hot-middleware.md) 2.18.0
- [validate-npm-package-name](https://npm.io/package/validate-npm-package-name.md) 3.0.0
- [extract-text-webpack-plugin](https://npm.io/package/extract-text-webpack-plugin.md) 2.1.2
- [connect-history-api-fallback](https://npm.io/package/connect-history-api-fallback.md) 1.3.0
- [babel-plugin-transform-runtime](https://npm.io/package/babel-plugin-transform-runtime.md) 6.23.0
- [babel-plugin-transform-object-rest-spread](https://npm.io/package/babel-plugin-transform-object-rest-spread.md) 6.26.0

## Recent versions

- 0.2.9 (latest) — 2021-01-04
- 0.2.8 — 2020-12-31
- 0.2.7 — 2020-07-08
- 0.2.5 — 2020-07-08
- 0.2.4 — 2020-07-07
- 0.2.3 — 2020-06-23
- 0.2.2 — 2020-04-17
- 0.2.1 — 2020-04-09
- 0.2.0 — 2020-04-09
- 0.1.9 — 2020-04-09
- 0.1.8 — 2020-04-09
- 0.1.7 — 2020-04-08
- 0.1.6 — 2020-03-31
- 0.1.5 — 2019-08-05
- 0.1.4 — 2019-08-05
- … 13 more at https://npm.io/package/gt-workflow/versions

## README

## 使用说明

使用本工具需要全局安装`npm install gt-workflow -g`。   
工具有三个命令：
- `workflow create`：用来快速创建预定义的项目模板
- `workflow run`：运行gulp任务，内置dev和build两个任务
- `workflow config`：操作工具的配置

### create
使用例子：`workflow create vue-demo vue`   
首先查找`basedir`下的`generators`目录和`node_modules`目录下是否有`slush-workflow-vue`的node包，找到之后启动`slush`，如果没有找到则自动安装到`node_modules`下然后再启动`slush`。

### run
使用例子：`workflow run dev`   
从当前目录逐层往上寻找`workflow.json`或者`workflow.js`配置文件，找到之后将进程目录切换为该目录，然后按顺序加载配置中`use`声明的插件列表，最后启动gulp执行指定任务。  
内置任务：
- `dev` 启动开发服务
- `build` 打包文件

### config
使用例子：`workflow config pm yarn`   
设置工具的一些可选配置，目前的设置项有：
- `basedir` 基础模块的存放目录
- `pm` 模块包管理工具（npm|cnpm|yarn）

## 项目的配置文件说明
``` javascript
{
  "use": [ // 插件
    "vue",
    ["proxy", { // 传入插件参数
      "^/api": "//api.xxx.com"
    }],
    "@/plugins/zip", // 公共目录里的plugins/common插件
    "./plugins/oss" // 本地目录的插件
  ],
  "entry": "./src/index.js", // 和webpack的entry一样
  "output": { // 和webpack的output类似
    "path": "./dist",
    "filename": "js/[name].js"
  },
  "hash": true, // 默认true，打包时是否hash
  "minimize": true, // 默认true，打包时是否压缩代码
  "template": false, // 默认false，是否启用htmlWebpackPlugin
  "commonChunk": true, // 默认false，打包时是否抽出公共模块
  "extractCSS": true, // 默认true，打包时是否抽出css
  "server": { // 默认true，开发环境的服务器配置
    "port": 8080,
    "open": false,
    "publicPath": "/" // 开发服务器的资源路径
  },
  "babel": {} // 合并到默认的babel-loader的options,
  "transpileDependencies": [], // Array<String|RegExp> 需要被babel处理的依赖
  "minifyImages": { // false关闭，true开启，以下是默认配置：
    "jpgProgressive": true,
    "quality": 70,
    "pngQuality": [0.65, 0.90],
    "pngSpeed": 4,
    "optipngEnabled": false,
    "gifInterlaced": false,
    "exclude": [/raw\//],
    "loaderRawOptions": null // 如果要原生配置，请参考https://github.com/tcoopman/image-webpack-loader
  }
}
```
额外说明：
- output   
值可以是字符串，比如：`output: './dist'`效果和下面一样：
``` javascript
{
  path: './dist',
  filename: 'js/[name].js'
}
```
- template   
值为true相当于：
``` javascript
{
    filename: 'index.html',
    template: './src/index.html'
  }
```
值为字符串相当于指定了`filename`和`template`中的文件名，如果是对象格式，配置项和html-webpack-plugin一样。   
另外，支持生成多个模板，传入一个数组即可，当传入数组时每一项元素必须是对象。

- commonChunk   
如果设置为true，默认会配置三个公共模块：`common`（引用两次以上的）、`vendor`（node_modules里的模块）、`manifest`（webpack运行时）。   
当值是数组时，每一项元素必须是对象，对象将被当做`webpack.optimize.CommonsChunkPlugin`的参数。

- extractCSS   
值可是字符串，用来作为抽出的样式文件的文件名。

- server
值可以是true，和下面的配置效果一样：
``` javascript
{
  port: 8080,
  open: false, // 是否自动打开浏览器
  historyFallback: true // 开启后404返回index.html
}
```

## 插件扩展
每个插件模块需要导出一个函数或者一个拥有`install`方法的对象。
``` javascript
module.exports = function (workflow, options) {
  const gulp = workflow.gulp

  gulp.task('task-name', function () {
    // do something
  })

  console.log(workflow.env)
  console.log(workflow.task)
  console.log(workflow.cwd)
  // ...

  // 添加webpack配置
  workflow.setCompilerOptions({
    module: {
      rules: [
        // ...
      ]
    }
  })

  // webpack compiler初始化完成
  workflow.on('compilerReady', compiler => {
    // do something
  })

  // 添加中间件
  if (workflow.server) {
    workflow.server.use(middleware)
  }
}
````

## generator
参考[slush文档](https://github.com/slushjs/slush)

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