babel-plugin-transform-react-jsx-to-rn-stylesheet 3.5.0-canary.1 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
1
  import { transform } from '@babel/core'
2
2
  import syntaxJSX from 'babel-plugin-syntax-jsx'
3
+
3
4
  import jSXStylePlugin from '../src/index'
4
5
 
5
6
  const mergeStylesFunctionTemplate = `function _mergeStyles() {
@@ -50,6 +51,10 @@ const getStyleFunctionTemplete = `function _getStyle(classNameExpression) {
50
51
  return style;
51
52
  }`
52
53
 
54
+ const mergeEleStylesFunctionTemplate = `function _mergeEleStyles() {
55
+ return [].concat.apply([], arguments).reduce((pre, cur) => Object.assign(pre, cur), {});
56
+ }`
57
+
53
58
  describe('jsx style plugin', () => {
54
59
  function getTransfromCode (source, debug = false, options = {}) {
55
60
  const { enableCSSModule, enableMultipleClassName = false } = options
@@ -116,11 +121,14 @@ class App extends Component {
116
121
  }
117
122
  }`)).toBe(`import { createElement, Component } from 'rax';
118
123
  import appCssStyleSheet from "./app.css";
124
+
125
+ ${mergeEleStylesFunctionTemplate}
126
+
119
127
  var _styleSheet = appCssStyleSheet;
120
128
 
121
129
  class App extends Component {
122
130
  render() {
123
- return <div style={[_styleSheet["header1"], _styleSheet["header2"]]} />;
131
+ return <div style={_mergeEleStyles(_styleSheet["header1"], _styleSheet["header2"])} />;
124
132
  }
125
133
 
126
134
  }`)
@@ -179,13 +187,15 @@ class App extends Component {
179
187
  import app1CssStyleSheet from "./app1.css";
180
188
  import app2CssStyleSheet from "./app2.css";
181
189
 
190
+ ${mergeEleStylesFunctionTemplate}
191
+
182
192
  ${mergeStylesFunctionTemplate}
183
193
 
184
194
  var _styleSheet = _mergeStyles(app1CssStyleSheet, app2CssStyleSheet);
185
195
 
186
196
  class App extends Component {
187
197
  render() {
188
- return <div style={[_styleSheet["header1"], _styleSheet["header2"]]} />;
198
+ return <div style={_mergeEleStyles(_styleSheet["header1"], _styleSheet["header2"])} />;
189
199
  }
190
200
 
191
201
  }`)
@@ -204,13 +214,15 @@ class App extends Component {
204
214
  import appCssStyleSheet from "./app.css";
205
215
  import appCssStyleSheet1 from "../app.css";
206
216
 
217
+ ${mergeEleStylesFunctionTemplate}
218
+
207
219
  ${mergeStylesFunctionTemplate}
208
220
 
209
221
  var _styleSheet = _mergeStyles(appCssStyleSheet, appCssStyleSheet1);
210
222
 
211
223
  class App extends Component {
212
224
  render() {
213
- return <div style={[_styleSheet["header1"], _styleSheet["header2"]]} />;
225
+ return <div style={_mergeEleStyles(_styleSheet["header1"], _styleSheet["header2"])} />;
214
226
  }
215
227
 
216
228
  }`)
@@ -229,13 +241,15 @@ class App extends Component {
229
241
  import appCssStyleSheet from "./app.css";
230
242
  import style from "./style.css";
231
243
 
244
+ ${mergeEleStylesFunctionTemplate}
245
+
232
246
  ${mergeStylesFunctionTemplate}
233
247
 
234
248
  var _styleSheet = _mergeStyles(appCssStyleSheet, style);
235
249
 
236
250
  class App extends Component {
237
251
  render() {
238
- return <div style={[_styleSheet["header2"], style.header1]} />;
252
+ return <div style={_mergeEleStyles(_styleSheet["header2"], style.header1)} />;
239
253
  }
240
254
 
241
255
  }`)
@@ -254,13 +268,16 @@ class App extends Component {
254
268
  }
255
269
  }`)).toBe(`import { createElement, Component } from 'rax';
256
270
  import appCssStyleSheet from "./app.css";
271
+
272
+ ${mergeEleStylesFunctionTemplate}
273
+
257
274
  var _styleSheet = appCssStyleSheet;
258
275
 
259
276
  class App extends Component {
260
277
  render() {
261
- return <div style={[_styleSheet["header"], {
278
+ return <div style={_mergeEleStyles(_styleSheet["header"], {
262
279
  height: 100
263
- }]} />;
280
+ })} />;
264
281
  }\n
265
282
  }`)
266
283
  })
@@ -279,13 +296,15 @@ class App extends Component {
279
296
  import appCssStyleSheet from "./app.css";
280
297
  import style from "./style.css";
281
298
 
299
+ ${mergeEleStylesFunctionTemplate}
300
+
282
301
  ${mergeStylesFunctionTemplate}
283
302
 
284
303
  var _styleSheet = _mergeStyles(appCssStyleSheet, style);
285
304
 
286
305
  class App extends Component {
287
306
  render() {
288
- return <div style={[_styleSheet["header2"], style.header1, style.header3]} />;
307
+ return <div style={_mergeEleStyles(_styleSheet["header2"], style.header1, style.header3)} />;
289
308
  }\n
290
309
  }`)
291
310
  })
@@ -407,11 +426,14 @@ import './app.less';
407
426
  render(<div className="header" style={{width: 100, height: 100}} />);
408
427
  `)).toBe(`import { createElement, render } from 'rax';
409
428
  import appLessStyleSheet from "./app.less";
429
+
430
+ ${mergeEleStylesFunctionTemplate}
431
+
410
432
  var _styleSheet = appLessStyleSheet;
411
- render(<div style={[_styleSheet["header"], {
433
+ render(<div style={_mergeEleStyles(_styleSheet["header"], {
412
434
  width: 100,
413
435
  height: 100
414
- }]} />);`)
436
+ })} />);`)
415
437
  })
416
438
  it('transform styleAttribute inline string', () => {
417
439
  expect(getTransfromCode(`
@@ -436,15 +458,18 @@ import './app.less';
436
458
  render(<div className="header" style="width:100px;height:100px;background-color:rgba(0, 0, 0, 0.5);border: 1px solid;" />);
437
459
  `)).toBe(`import { createElement, render } from 'rax';
438
460
  import appLessStyleSheet from "./app.less";
461
+
462
+ ${mergeEleStylesFunctionTemplate}
463
+
439
464
  var _styleSheet = appLessStyleSheet;
440
- render(<div style={[_styleSheet["header"], {
465
+ render(<div style={_mergeEleStyles(_styleSheet["header"], {
441
466
  "width": 100,
442
467
  "height": 100,
443
468
  "backgroundColor": "rgba(0, 0, 0, 0.5)",
444
469
  "borderWidth": 1,
445
470
  "borderStyle": "solid",
446
471
  "borderColor": "black"
447
- }]} />);`)
472
+ })} />);`)
448
473
  })
449
474
 
450
475
  it('ignore merge stylesheet when css module enable', () => {
@@ -460,11 +485,14 @@ class App extends Component {
460
485
  }`, false, { enableCSSModule: true })).toBe(`import { createElement, Component } from 'rax';
461
486
  import appScssStyleSheet from "./app.scss";
462
487
  import styleSheet from './app.module.scss';
488
+
489
+ ${mergeEleStylesFunctionTemplate}
490
+
463
491
  var _styleSheet = appScssStyleSheet;
464
492
 
465
493
  class App extends Component {
466
494
  render() {
467
- return <div style={[_styleSheet["header"], styleSheet.red]} />;
495
+ return <div style={_mergeEleStyles(_styleSheet["header"], styleSheet.red)} />;
468
496
  }\n
469
497
  }`)
470
498
  })
@@ -571,6 +599,30 @@ class App extends Component {
571
599
  }`)
572
600
  })
573
601
 
602
+ it('Processing module style through call expression When css module enable', () => {
603
+ expect(getTransfromCode(`
604
+ import { createElement, Component } from 'rax';
605
+ import styleSheet from './app.module.scss';
606
+
607
+ class App extends Component {
608
+ render() {
609
+ const a = Object.assign({}, styleSheet.red);
610
+ const b = Object.assign({}, a);
611
+ return <div className={a}><span className={b} /><span className={Object.assign({}, b)} /></div>;
612
+ }
613
+ }`, false, { enableCSSModule: true })).toBe(`import { createElement, Component } from 'rax';
614
+ import styleSheet from './app.module.scss';
615
+ var _styleSheet = {};
616
+
617
+ class App extends Component {
618
+ render() {
619
+ const a = Object.assign({}, styleSheet.red);
620
+ const b = Object.assign({}, a);
621
+ return <div style={a}><span style={b} /><span style={Object.assign({}, b)} /></div>;
622
+ }\n
623
+ }`)
624
+ })
625
+
574
626
  it('merge stylesheet when css module disable', () => {
575
627
  expect(getTransfromCode(`
576
628
  import { createElement, Component } from 'rax';
@@ -585,13 +637,15 @@ class App extends Component {
585
637
  import appScssStyleSheet from "./app.scss";
586
638
  import styleSheet from "./app.module.scss";
587
639
 
640
+ ${mergeEleStylesFunctionTemplate}
641
+
588
642
  ${mergeStylesFunctionTemplate}
589
643
 
590
644
  var _styleSheet = _mergeStyles(appScssStyleSheet, styleSheet);
591
645
 
592
646
  class App extends Component {
593
647
  render() {
594
- return <div style={[_styleSheet["header"], styleSheet.red]} />;
648
+ return <div style={_mergeEleStyles(_styleSheet["header"], styleSheet.red)} />;
595
649
  }\n
596
650
  }`)
597
651
  })
@@ -649,15 +703,18 @@ class App extends Component {
649
703
  }
650
704
  }`, false, { enableMultipleClassName: true })).toBe(`import { createElement, Component } from 'rax';
651
705
  import appCssStyleSheet from "./app.css";
706
+
707
+ ${mergeEleStylesFunctionTemplate}
708
+
652
709
  var _styleSheet = appCssStyleSheet;
653
710
 
654
711
  class App extends Component {
655
712
  render() {
656
- return <div style={[_styleSheet["container"], {
713
+ return <div style={_mergeEleStyles(_styleSheet["container"], {
657
714
  color: "red"
658
- }]} headerStyle={[_styleSheet["header"], {
715
+ })} headerStyle={_mergeEleStyles(_styleSheet["header"], {
659
716
  color: "green"
660
- }]} />;
717
+ })} />;
661
718
  }
662
719
 
663
720
  }`)
package/dist/index.js CHANGED
@@ -1,34 +1,59 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
5
28
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const path_1 = __importDefault(require("path"));
7
29
  const camelize_1 = __importDefault(require("camelize"));
30
+ const path = __importStar(require("path"));
8
31
  const taro_css_to_react_native_1 = require("taro-css-to-react-native");
9
32
  const STYLE_SHEET_NAME = '_styleSheet';
10
33
  const GET_STYLE_FUNC_NAME = '_getStyle';
11
34
  const MERGE_STYLES_FUNC_NAME = '_mergeStyles';
35
+ const MERGE_ELE_STYLES_FUNC_NAME = '_mergeEleStyles';
12
36
  const GET_CLS_NAME_FUNC_NAME = '_getClassName';
13
37
  const NAME_SUFFIX = 'styleSheet';
14
38
  const RN_CSS_EXT = ['.css', '.scss', '.sass', '.less', '.styl', '.stylus'];
15
39
  const isStyle = value => {
16
- const ext = path_1.default.extname(value);
40
+ const ext = path.extname(value);
17
41
  return RN_CSS_EXT.indexOf(ext) > -1;
18
42
  };
19
- const isModuleSource = value => value.indexOf('.module.') > -1;
43
+ // 样式文件带有 .module./.linaria. 若开启 css module 则走 css module 逻辑
44
+ const isModuleSource = value => value.indexOf('.module.') > -1 || value.indexOf('.linaria.') > -1;
20
45
  const string2Object = str => {
21
46
  const entries = str.replace(/;+$/g, '')
22
47
  .split(';')
23
48
  .map(l => {
24
49
  var _a;
25
- const arr = l.split(':');
50
+ const arr = l.split(':').map(it => it.trim());
26
51
  arr[1] = (_a = arr[1]) === null || _a === void 0 ? void 0 : _a.replace(/px/g, 'PX');
27
52
  return arr;
28
53
  });
29
54
  // css 转换报错时,使用原来的值
30
55
  try {
31
- const cssObject = taro_css_to_react_native_1.transformCSS(entries);
56
+ const cssObject = (0, taro_css_to_react_native_1.transformCSS)(entries);
32
57
  return cssObject;
33
58
  }
34
59
  catch (_a) {
@@ -93,6 +118,12 @@ function ${GET_CLS_NAME_FUNC_NAME}() {
93
118
  return className.join(' ').trim();
94
119
  }
95
120
  `;
121
+ // like: `[[styles.header, styles.header1], styles.header2]`
122
+ const getMergeEleStyleFunction = `
123
+ function ${MERGE_ELE_STYLES_FUNC_NAME}() {
124
+ return [].concat.apply([], arguments).reduce((pre, cur) => Object.assign(pre, cur), {})
125
+ }
126
+ `;
96
127
  const getStyleFunction = `
97
128
  function ${GET_STYLE_FUNC_NAME}(classNameExpression) {
98
129
  var className = ${GET_CLS_NAME_FUNC_NAME}(classNameExpression);
@@ -104,10 +135,9 @@ function ${GET_STYLE_FUNC_NAME}(classNameExpression) {
104
135
  `;
105
136
  function default_1(babel) {
106
137
  const { types: t, template } = babel;
107
- const getClassNameFunctionTemplate = template(getClassNameFunction);
108
- const getStyleFunctionTemplete = template(getStyleFunction);
109
- const getClassNameFunctionStmt = getClassNameFunctionTemplate();
110
- const getStyleFunctionStmt = getStyleFunctionTemplete();
138
+ const getClassNameFunctionStmt = template(getClassNameFunction)();
139
+ const getStyleFunctionStmt = template(getStyleFunction)();
140
+ const getMergeEleStyleFunctionStmt = template(getMergeEleStyleFunction)();
111
141
  function getMap(str) {
112
142
  return str.split(/\s+/).map((className) => {
113
143
  // return template(`${STYLE_SHEET_NAME}["${className}"]`)().expression
@@ -165,6 +195,16 @@ function default_1(babel) {
165
195
  }
166
196
  }
167
197
  }
198
+ // 函数调用
199
+ // some call expression args references like Object.assign or @babel/runtime/helpers/extends
200
+ if (t.isCallExpression(expression)) {
201
+ const { arguments: args } = expression;
202
+ for (const arg of args) {
203
+ if (isCSSMemberOrBindings(arg, cssModuleStylesheets, astPath)) {
204
+ return true;
205
+ }
206
+ }
207
+ }
168
208
  }
169
209
  function isJSXCSSModuleExpression(value, cssModuleStylesheets, astPath) {
170
210
  if (t.isJSXExpressionContainer(value)) {
@@ -254,20 +294,24 @@ function default_1(babel) {
254
294
  const node = astPath.node;
255
295
  const injectGetStyle = file.get('injectGetStyle');
256
296
  // 从最后一个import 开始插入表达式,后续插入的表达式追加在后面
257
- const lastImportIndex = findLastImportIndex(node.body);
297
+ let lastImportIndex = findLastImportIndex(node.body);
258
298
  if (injectGetStyle) {
259
299
  // @ts-ignore
260
- node.body.splice(lastImportIndex + 1, 0, getClassNameFunctionStmt);
300
+ node.body.splice(++lastImportIndex, 0, getClassNameFunctionStmt);
261
301
  // @ts-ignore
262
- node.body.splice(lastImportIndex + 2, 0, getStyleFunctionStmt);
302
+ node.body.splice(++lastImportIndex, 0, getStyleFunctionStmt);
303
+ }
304
+ if (file.get('hasMultiStyle')) {
305
+ // @ts-ignore
306
+ node.body.splice(++lastImportIndex, 0, getMergeEleStyleFunctionStmt);
263
307
  }
264
308
  existStyleImport = false;
265
309
  }
266
310
  },
267
311
  JSXOpeningElement(astPath, state) {
268
312
  const { node } = astPath;
269
- const { file, opts } = state;
270
- const { enableMultipleClassName } = opts;
313
+ const { file, opts = {} } = state;
314
+ const { enableMultipleClassName = false } = opts;
271
315
  const { styleMatchRule, classNameMathRule } = getMatchRule(enableMultipleClassName);
272
316
  const cssModuleStylesheets = file.get('cssModuleStylesheets') || [];
273
317
  const styleNameMapping = {};
@@ -313,7 +357,11 @@ function default_1(babel) {
313
357
  if (arrayExpression.length === 0) {
314
358
  return;
315
359
  }
360
+ if (arrayExpression.length > 1) {
361
+ file.set('hasMultiStyle', true);
362
+ }
316
363
  if (hasStyleAttribute && styleAttribute.value) {
364
+ file.set('hasMultiStyle', true);
317
365
  let expression;
318
366
  // 支持 行内 style 转成oject:style="width:100;height:100;" => style={{width:'100',height:'100'}}
319
367
  if (t.isStringLiteral(styleAttribute.value)) {
@@ -324,9 +372,11 @@ function default_1(babel) {
324
372
  expression = styleAttribute.value.expression;
325
373
  }
326
374
  const expressionType = expression.type;
375
+ let _arrayExpression;
376
+ // 非rn场景,style不支持数组,因此需要将数组转换为对象
327
377
  // style={[styles.a, styles.b]} ArrayExpression
328
378
  if (expressionType === 'ArrayExpression') {
329
- expression.elements = arrayExpression.concat(expression.elements);
379
+ _arrayExpression = arrayExpression.concat(expression.elements);
330
380
  // style={styles.a} MemberExpression
331
381
  // style={{ height: 100 }} ObjectExpression
332
382
  // style={{ ...custom }} ObjectExpression
@@ -336,11 +386,14 @@ function default_1(babel) {
336
386
  // style={custom || other} LogicalExpression
337
387
  }
338
388
  else {
339
- styleAttribute.value = t.jSXExpressionContainer(t.arrayExpression(arrayExpression.concat(expression)));
389
+ _arrayExpression = arrayExpression.concat(expression);
340
390
  }
391
+ styleAttribute.value = t.jSXExpressionContainer(t.callExpression(t.identifier(MERGE_ELE_STYLES_FUNC_NAME), _arrayExpression));
341
392
  }
342
393
  else {
343
- const expression = arrayExpression.length === 1 ? arrayExpression[0] : t.arrayExpression(arrayExpression);
394
+ const expression = arrayExpression.length > 1
395
+ ? t.callExpression(t.identifier(MERGE_ELE_STYLES_FUNC_NAME), arrayExpression)
396
+ : arrayExpression[0];
344
397
  attributes.push(t.jSXAttribute(t.jSXIdentifier(key === DEFAULT_STYLE_KEY ? key : (key + 'Style')), t.jSXExpressionContainer(expression)));
345
398
  }
346
399
  }
@@ -363,7 +416,7 @@ function importDeclaration(astPath, state, t) {
363
416
  const node = astPath.node;
364
417
  const sourceValue = node.source.value;
365
418
  const specifiers = node.specifiers;
366
- const ext = path_1.default.extname(sourceValue);
419
+ const ext = path.extname(sourceValue);
367
420
  const styleSheetIdentifiers = file.get('styleSheetIdentifiers') || [];
368
421
  const cssModuleStylesheets = file.get('cssModuleStylesheets') || [];
369
422
  const enableCSSModule = (_a = state.opts) === null || _a === void 0 ? void 0 : _a.enableCSSModule;
@@ -375,14 +428,14 @@ function importDeclaration(astPath, state, t) {
375
428
  if (specifiers.length > 0) {
376
429
  styleSheetName = specifiers[0].local.name;
377
430
  }
378
- if (isModuleSource(sourceValue) && enableCSSModule) {
431
+ if (enableCSSModule && isModuleSource(sourceValue)) {
379
432
  if (styleSheetName) {
380
433
  cssModuleStylesheets.push(styleSheetName);
381
434
  }
382
435
  }
383
436
  else {
384
- const cssFileName = path_1.default.basename(sourceValue);
385
- const cssFileBaseName = path_1.default.basename(cssFileName, ext);
437
+ const cssFileName = path.basename(sourceValue);
438
+ const cssFileBaseName = path.basename(cssFileName, ext);
386
439
  // 引入样式对应的变量名
387
440
  const styleSheetSource = sourceValue;
388
441
  let styleSheetIdentifierName;
@@ -390,7 +443,7 @@ function importDeclaration(astPath, state, t) {
390
443
  styleSheetIdentifierName = styleSheetName;
391
444
  }
392
445
  else {
393
- styleSheetName = camelize_1.default(`${cssFileBaseName}${ext}_${NAME_SUFFIX}`);
446
+ styleSheetName = (0, camelize_1.default)(`${cssFileBaseName}${ext}_${NAME_SUFFIX}`);
394
447
  const repeatName = styleSheetIdentifiers.find(identifier => identifier.name === styleSheetName);
395
448
  styleSheetIdentifierName = repeatName ? styleSheetName + '1' : styleSheetName; // fix repeat name
396
449
  // styleSheetIdentifierName = camelize(`${cssFileBaseName}${ext}_${NAME_SUFFIX}`)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "babel-plugin-transform-react-jsx-to-rn-stylesheet",
3
- "version": "3.5.0-canary.1",
3
+ "version": "3.5.0",
4
4
  "description": "Transform stylesheet selector to style in JSX Elements.",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -8,12 +8,6 @@
8
8
  "type": "git",
9
9
  "url": "git+https://github.com/NervJS/taro.git"
10
10
  },
11
- "scripts": {
12
- "test": "jest",
13
- "test:ci": "jest --silent --coverage false",
14
- "dev": "tsc -w",
15
- "build": "tsc"
16
- },
17
11
  "bugs": {
18
12
  "url": "https://github.com/NervJS/taro/issues"
19
13
  },
@@ -24,10 +18,12 @@
24
18
  },
25
19
  "dependencies": {
26
20
  "camelize": "^1.0.0",
27
- "taro-css-to-react-native": "3.5.0-canary.1"
21
+ "taro-css-to-react-native": "3.5.0"
28
22
  },
29
- "devDependencies": {
30
- "@types/babel__core": "^7.1.14"
31
- },
32
- "gitHead": "c61624d2f763e6d31e67d6cf9c564efc8b0d0887"
33
- }
23
+ "scripts": {
24
+ "test": "jest",
25
+ "test:ci": "jest --silent --coverage false",
26
+ "dev": "tsc -w",
27
+ "build": "tsc"
28
+ }
29
+ }
package/src/index.ts CHANGED
@@ -1,12 +1,15 @@
1
- import path from 'path'
1
+ import { PluginObj, template as Template, types as Types } from 'babel__core'
2
2
  import camelize from 'camelize'
3
+ import * as path from 'path'
3
4
  import { transformCSS } from 'taro-css-to-react-native'
4
- import { types as Types, template as Template, PluginObj } from 'babel__core'
5
+
5
6
  import { ConvertPluginPass as PluginPass } from './types'
6
7
 
7
8
  const STYLE_SHEET_NAME = '_styleSheet'
8
9
  const GET_STYLE_FUNC_NAME = '_getStyle'
9
10
  const MERGE_STYLES_FUNC_NAME = '_mergeStyles'
11
+ const MERGE_ELE_STYLES_FUNC_NAME = '_mergeEleStyles'
12
+
10
13
  const GET_CLS_NAME_FUNC_NAME = '_getClassName'
11
14
  const NAME_SUFFIX = 'styleSheet'
12
15
  const RN_CSS_EXT = ['.css', '.scss', '.sass', '.less', '.styl', '.stylus']
@@ -16,13 +19,14 @@ const isStyle = value => {
16
19
  return RN_CSS_EXT.indexOf(ext) > -1
17
20
  }
18
21
 
19
- const isModuleSource = value => value.indexOf('.module.') > -1
22
+ // 样式文件带有 .module./.linaria. 若开启 css module 则走 css module 逻辑
23
+ const isModuleSource = value => value.indexOf('.module.') > -1 || value.indexOf('.linaria.') > -1
20
24
 
21
25
  const string2Object = str => {
22
26
  const entries = str.replace(/;+$/g, '')
23
27
  .split(';')
24
28
  .map(l => {
25
- const arr = l.split(':')
29
+ const arr = l.split(':').map(it => it.trim())
26
30
  arr[1] = arr[1]?.replace(/px/g, 'PX')
27
31
  return arr
28
32
  })
@@ -96,6 +100,12 @@ function ${GET_CLS_NAME_FUNC_NAME}() {
96
100
  return className.join(' ').trim();
97
101
  }
98
102
  `
103
+ // like: `[[styles.header, styles.header1], styles.header2]`
104
+ const getMergeEleStyleFunction = `
105
+ function ${MERGE_ELE_STYLES_FUNC_NAME}() {
106
+ return [].concat.apply([], arguments).reduce((pre, cur) => Object.assign(pre, cur), {})
107
+ }
108
+ `
99
109
  const getStyleFunction = `
100
110
  function ${GET_STYLE_FUNC_NAME}(classNameExpression) {
101
111
  var className = ${GET_CLS_NAME_FUNC_NAME}(classNameExpression);
@@ -112,10 +122,11 @@ export default function (babel: {
112
122
  }): PluginObj {
113
123
  const { types: t, template } = babel
114
124
 
115
- const getClassNameFunctionTemplate = template(getClassNameFunction)
116
- const getStyleFunctionTemplete = template(getStyleFunction)
117
- const getClassNameFunctionStmt = getClassNameFunctionTemplate()
118
- const getStyleFunctionStmt = getStyleFunctionTemplete()
125
+ const getClassNameFunctionStmt = template(getClassNameFunction)()
126
+
127
+ const getStyleFunctionStmt = template(getStyleFunction)()
128
+
129
+ const getMergeEleStyleFunctionStmt = template(getMergeEleStyleFunction)()
119
130
 
120
131
  function getMap (str) {
121
132
  return str.split(/\s+/).map((className) => {
@@ -178,6 +189,17 @@ export default function (babel: {
178
189
  }
179
190
  }
180
191
  }
192
+
193
+ // 函数调用
194
+ // some call expression args references like Object.assign or @babel/runtime/helpers/extends
195
+ if (t.isCallExpression(expression)) {
196
+ const { arguments: args } = expression
197
+ for (const arg of args) {
198
+ if (isCSSMemberOrBindings(arg, cssModuleStylesheets, astPath)) {
199
+ return true
200
+ }
201
+ }
202
+ }
181
203
  }
182
204
 
183
205
  function isJSXCSSModuleExpression (value, cssModuleStylesheets, astPath) {
@@ -272,21 +294,24 @@ export default function (babel: {
272
294
  const node = astPath.node
273
295
  const injectGetStyle = file.get('injectGetStyle')
274
296
  // 从最后一个import 开始插入表达式,后续插入的表达式追加在后面
275
- const lastImportIndex = findLastImportIndex(node.body)
276
-
297
+ let lastImportIndex = findLastImportIndex(node.body)
277
298
  if (injectGetStyle) {
278
299
  // @ts-ignore
279
- node.body.splice(lastImportIndex + 1, 0, getClassNameFunctionStmt)
300
+ node.body.splice(++lastImportIndex, 0, getClassNameFunctionStmt)
280
301
  // @ts-ignore
281
- node.body.splice(lastImportIndex + 2, 0, getStyleFunctionStmt)
302
+ node.body.splice(++lastImportIndex, 0, getStyleFunctionStmt)
303
+ }
304
+ if (file.get('hasMultiStyle')) {
305
+ // @ts-ignore
306
+ node.body.splice(++lastImportIndex, 0, getMergeEleStyleFunctionStmt)
282
307
  }
283
308
  existStyleImport = false
284
309
  }
285
310
  },
286
311
  JSXOpeningElement (astPath, state: PluginPass) {
287
312
  const { node } = astPath
288
- const { file, opts } = state
289
- const { enableMultipleClassName } = opts
313
+ const { file, opts = {} } = state
314
+ const { enableMultipleClassName = false } = opts
290
315
  const { styleMatchRule, classNameMathRule } = getMatchRule(enableMultipleClassName)
291
316
  const cssModuleStylesheets = file.get('cssModuleStylesheets') || []
292
317
 
@@ -338,7 +363,12 @@ export default function (babel: {
338
363
  return
339
364
  }
340
365
 
366
+ if (arrayExpression.length > 1) {
367
+ file.set('hasMultiStyle', true)
368
+ }
369
+
341
370
  if (hasStyleAttribute && styleAttribute.value) {
371
+ file.set('hasMultiStyle', true)
342
372
  let expression
343
373
  // 支持 行内 style 转成oject:style="width:100;height:100;" => style={{width:'100',height:'100'}}
344
374
  if (t.isStringLiteral(styleAttribute.value)) {
@@ -349,9 +379,11 @@ export default function (babel: {
349
379
  }
350
380
  const expressionType = expression.type
351
381
 
382
+ let _arrayExpression
383
+ // 非rn场景,style不支持数组,因此需要将数组转换为对象
352
384
  // style={[styles.a, styles.b]} ArrayExpression
353
385
  if (expressionType === 'ArrayExpression') {
354
- expression.elements = arrayExpression.concat(expression.elements)
386
+ _arrayExpression = arrayExpression.concat(expression.elements)
355
387
  // style={styles.a} MemberExpression
356
388
  // style={{ height: 100 }} ObjectExpression
357
389
  // style={{ ...custom }} ObjectExpression
@@ -360,10 +392,13 @@ export default function (babel: {
360
392
  // style={this.props.useCustom ? custom : null} ConditionalExpression
361
393
  // style={custom || other} LogicalExpression
362
394
  } else {
363
- styleAttribute.value = t.jSXExpressionContainer(t.arrayExpression(arrayExpression.concat(expression)))
395
+ _arrayExpression = arrayExpression.concat(expression)
364
396
  }
397
+ styleAttribute.value = t.jSXExpressionContainer(t.callExpression(t.identifier(MERGE_ELE_STYLES_FUNC_NAME), _arrayExpression))
365
398
  } else {
366
- const expression = arrayExpression.length === 1 ? arrayExpression[0] : t.arrayExpression(arrayExpression)
399
+ const expression = arrayExpression.length > 1
400
+ ? t.callExpression(t.identifier(MERGE_ELE_STYLES_FUNC_NAME), arrayExpression)
401
+ : arrayExpression[0]
367
402
  attributes.push(t.jSXAttribute(t.jSXIdentifier(key === DEFAULT_STYLE_KEY ? key : (key + 'Style')), t.jSXExpressionContainer(expression)))
368
403
  }
369
404
  } else if (hasStyleAttribute) {
@@ -398,7 +433,7 @@ function importDeclaration (astPath, state, t) {
398
433
  styleSheetName = specifiers[0].local.name
399
434
  }
400
435
 
401
- if (isModuleSource(sourceValue) && enableCSSModule) {
436
+ if (enableCSSModule && isModuleSource(sourceValue)) {
402
437
  if (styleSheetName) {
403
438
  cssModuleStylesheets.push(styleSheetName)
404
439
  }
package/src/types.ts CHANGED
@@ -6,7 +6,8 @@ export interface PluginOptions {
6
6
  enableMultipleClassName?: boolean
7
7
  }
8
8
 
9
+ // @ts-ignore
9
10
  export interface ConvertPluginPass extends PluginPass {
10
11
  file: any
11
- opts: PluginOptions | undefined
12
+ opts?: PluginOptions
12
13
  }
package/tsconfig.json CHANGED
@@ -1,31 +1,15 @@
1
1
  {
2
+ "extends": "../../tsconfig.root.json",
2
3
  "compilerOptions": {
3
4
  "target": "ES2017",
4
- "module": "CommonJS",
5
- "removeComments": false,
6
- "preserveConstEnums": false,
7
- "moduleResolution": "node",
8
- "experimentalDecorators": true,
9
- "noImplicitAny": false,
10
- "allowSyntheticDefaultImports": true,
11
- "esModuleInterop": true,
5
+ "module": "commonjs",
12
6
  "outDir": "dist",
13
- "noUnusedLocals": true,
14
- "noUnusedParameters": true,
15
- "strictNullChecks": false,
16
- "resolveJsonModule": true,
17
7
  "sourceMap": true,
8
+ "esModuleInterop": true,
18
9
  "rootDir": "./src",
19
10
  "types": ["node"]
20
11
  },
21
- "exclude": [
22
- "__tests__",
23
- "node_modules",
24
- "dist",
25
- "tests",
26
- "jest",
27
- "**/*.test.ts",
28
- "**/*.spec.ts"
29
- ],
30
- "compileOnSave": false
12
+ "include": [
13
+ "./src"
14
+ ]
31
15
  }