From f0547b05367f55480f247ec7eb1e65dd8c37765f Mon Sep 17 00:00:00 2001 From: yuche Date: Fri, 14 Sep 2018 15:48:16 +0800 Subject: [PATCH] =?UTF-8?q?refactor(transformer):=20=E4=BD=BF=E7=94=A8=20r?= =?UTF-8?q?equire=20=E5=BC=95=E5=85=A5=20babel=20=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/taro-transformer-wx/package-lock.json | 13 ++++++++++++- packages/taro-transformer-wx/package.json | 1 + packages/taro-transformer-wx/src/index.ts | 8 ++++---- packages/taro-transformer-wx/src/jsx.ts | 16 ++++++++++++++-- 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/packages/taro-transformer-wx/package-lock.json b/packages/taro-transformer-wx/package-lock.json index 833f7eb9cc46..1141307dbfe2 100644 --- a/packages/taro-transformer-wx/package-lock.json +++ b/packages/taro-transformer-wx/package-lock.json @@ -1,6 +1,6 @@ { "name": "@tarojs/transformer-wx", - "version": "1.0.0-beta.24", + "version": "1.0.0-beta.26", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -22,6 +22,12 @@ "js-tokens": "^3.0.0" } }, + "@tarojs/taro": { + "version": "1.0.0-beta.26", + "resolved": "https://registry.npmjs.org/@tarojs/taro/-/taro-1.0.0-beta.26.tgz", + "integrity": "sha512-qBR8uRRlZ5PRtHBqIGyzn4kAcs/C4qz0QwFRVwMKKVrJbUB9DmNPMFYzrimnXVjfVBUc55ki2bPATYyp0P3Yag==", + "dev": true + }, "@types/babel-core": { "version": "6.25.5", "resolved": "https://registry.npmjs.org/@types/babel-core/-/babel-core-6.25.5.tgz", @@ -4809,6 +4815,11 @@ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, + "prettier": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.14.2.tgz", + "integrity": "sha512-McHPg0n1pIke+A/4VcaS2en+pTNjy4xF+Uuq86u/5dyDO59/TtFZtQ708QIRkEZ3qwKz3GVkVa6mpxK/CpB8Rg==" + }, "pretty-format": { "version": "23.2.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.2.0.tgz", diff --git a/packages/taro-transformer-wx/package.json b/packages/taro-transformer-wx/package.json index 669eb2427c00..14aa490ef36d 100644 --- a/packages/taro-transformer-wx/package.json +++ b/packages/taro-transformer-wx/package.json @@ -55,6 +55,7 @@ "babel-types": "^6.26.0", "html": "^1.0.0", "lodash": "^4.17.5", + "prettier": "^1.14.2", "typescript": "^3.0.1" }, "devDependencies": { diff --git a/packages/taro-transformer-wx/src/index.ts b/packages/taro-transformer-wx/src/index.ts index 0c5322d8071c..79c26709352c 100644 --- a/packages/taro-transformer-wx/src/index.ts +++ b/packages/taro-transformer-wx/src/index.ts @@ -177,13 +177,13 @@ export default function transform (options: Options): TransformResult { ] as any[] }, plugins: [ - 'transform-flow-strip-types', + require('babel-plugin-transform-flow-strip-types'), [require('babel-plugin-danger-remove-unused-import'), { ignore: ['@tarojs/taro', 'react', 'nervjs'] }], - 'transform-es2015-template-literals', - ['transform-define', { + require('babel-plugin-transform-es2015-template-literals'), + [require('babel-plugin-transform-define').default, { 'process.env.TARO_ENV': 'weapp' }] - ].concat((process.env.NODE_ENV === 'test') ? [] : 'remove-dead-code') + ].concat((process.env.NODE_ENV === 'test') ? [] : require('babel-plugin-remove-dead-code').default) }).ast as t.File if (options.isNormal) { return { ast } as any diff --git a/packages/taro-transformer-wx/src/jsx.ts b/packages/taro-transformer-wx/src/jsx.ts index fb681e920394..69390f5f2ab9 100644 --- a/packages/taro-transformer-wx/src/jsx.ts +++ b/packages/taro-transformer-wx/src/jsx.ts @@ -1,4 +1,5 @@ import generate from 'babel-generator' +import * as prettier from 'prettier' import { NodePath } from 'babel-traverse' import * as t from 'babel-types' import { kebabCase } from 'lodash' @@ -117,7 +118,9 @@ function parseJSXChildren ( return str + parseJSXElement(child.expression) } return str + `{${ - generate(child) + generate(child, { + quotes: 'single' + }) .code .replace(/(this\.props\.)|(this\.state\.)/g, '') .replace(/(props\.)|(state\.)/g, '') @@ -157,7 +160,16 @@ export function parseJSXElement (element: t.JSXElement): string { } else if (t.isJSXExpressionContainer(attrValue)) { const isBindEvent = (name.startsWith('bind') && name !== 'bind') || (name.startsWith('catch') && name !== 'catch') - let { code } = generate(attrValue.expression) + let { code } = generate(attrValue.expression, { + quotes: 'single', + concise: true + }) + code = prettier.format(code, { + singleQuote: true, + parser: 'babylon', + semi: false, + trailingComma: 'none' + }).slice(0, -1) code = code .replace(/(this\.props\.)|(this\.state\.)/g, '') .replace(/this\./g, '')