# weex-transformer

> Weex DSL transformer

Latest version **0.4.6** (published 2018-02-07) · MIT license · 0 weekly downloads

## Install

```sh
npm install weex-transformer
pnpm add weex-transformer
yarn add weex-transformer
bun add weex-transformer
```

Provides the command `transformer`.

## 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.4.6 |
| Published | 2018-02-07 |
| First published | 2016-04-08 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 9 |
| Unpacked size | 78.5 KB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 7 |
| Author | songsiqi |
| Maintainers | hanks, songsiqi |
| Keywords | weex |

## Links

- npm: https://www.npmjs.com/package/weex-transformer
- Repository: https://github.com/weexteam/weex-transformer
- Homepage: https://github.com/weexteam/weex-transformer#readme
- Issues: https://github.com/weexteam/weex-transformer/issues
- npm.io page: https://npm.io/package/weex-transformer

## Dependencies (9)

- [md5](https://npm.io/package/md5.md) ~2.1.0
- [chalk](https://npm.io/package/chalk.md) ~1.1.1
- [parse5](https://npm.io/package/parse5.md) ~2.1.0
- [printf](https://npm.io/package/printf.md) ~0.2.3
- [fs-extra](https://npm.io/package/fs-extra.md) ~0.26.7
- [commander](https://npm.io/package/commander.md) ~2.9.0
- [weex-styler](https://npm.io/package/weex-styler.md) ~0.2.1
- [weex-scripter](https://npm.io/package/weex-scripter.md) ~0.1.5
- [weex-templater](https://npm.io/package/weex-templater.md) ~0.3.5

## Recent versions

- 0.4.6 (latest) — 2018-02-07
- 0.4.5 — 2017-07-28
- 0.4.3 — 2017-02-07
- 0.4.2 — 2016-12-16
- 0.3.1 — 2016-04-26
- 0.3.0 — 2016-04-22
- 0.2.1 — 2016-04-19
- 0.2.0 — 2016-04-19
- 0.1.8 — 2016-04-08
- 0.1.7 — 2016-04-08

## README

# Weex DSL Transformer

[![NPM version][npm-image]][npm-url]
[![Build status][circle-image]][circle-url]
[![Downloads][downloads-image]][downloads-url]

[npm-image]: https://img.shields.io/npm/v/weex-transformer.svg?style=flat-square
[npm-url]: https://npmjs.org/package/weex-transformer
[circle-image]: https://circleci.com/gh/alibaba/weex_toolchain.svg?style=svg
[circle-url]: https://circleci.com/gh/alibaba/weex_toolchain/tree/master
[downloads-image]: https://img.shields.io/npm/dm/weex-transformer.svg?style=flat-square
[downloads-url]: https://npmjs.org/package/weex-transformer

`<template>` + `<style>` + `<script>` + `<element>`

## Install

```bash
npm install weex-transformer
```

## Usage

### CLI tool

```
  Usage: transformer [options] <file...>

  Options:

    -h, --help               output usage information
    -V, --version            output the version number
    -g, --logLevel [value]   specify log output level - `NOTE`, `WARNING`, `ERROR`, `OFF` (default: `NOTE`, equivalent to `ALL`)
    -e, --isEntry [value]    whether is an entry module which has `bootstrap` (default: true)
    -l, --oldFormat [value]  whether to transform to old format (default: false)
    -o, --output [path]      the output file dirname
```

### API

#### `transform(name, code, path, elements, config)`

```javascript
var transformer = require('weex-transformer')
var output = transformer.transform('foo', '/* code here */', '.', {})
```

##### params

- `name`: string, current bundle name
- `code`: string, source code
- `path`: string *optional*, useful when find custom component in a certain path
- `elements`: object *optional*, existed custom component map
- `config`: object *optional*
    * `logLevel`: specify log output level - `NOTE` (default, equivalent to `ALL`), `WARNING`, `ERROR`, `OFF`, aranging from low to high
    * `isEntry`: whether is an entry module which has `bootstrap` (default: true)
    * `oldFormat`: whether to transform to old format (default: false)

##### returns

- an object with keys
    * `result`: string, all custom components `define()` and final `bootstrap()`
    * `logs`: array, corresponding warning & error logs

#### `transformOld(...)`

same params and different output format for old style: `register(name, options)` and `render(name, data)`

## transforming content

- `template`: JavaScript Object by `parse5`
- `style`: JSON Object by `css`
- `script`: JavaScript AST with `template`, `deps`, `style` by `esprima`
- `element`: string code map for deeply parsing

## workflow

1. get template, style, script, elements
2. parse and validate style by `styler`
3. parse and validate template by `templater` and get deps
4. parse script by `scripter`
5. join template, style and script to build a module
6. collect element code map
7. output `define()` string code, deps, element code map and logs
8. find deps code by name from element code map first and from file system for second
9. join all deps code together recursively
10. find all required 3rd party javascript and bundle them
11. append `bootstrap()` string code and bundle at last

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