From 6e2e7838df5beeede55559fd5980a18436f104e7 Mon Sep 17 00:00:00 2001 From: boiawang Date: Tue, 30 Jul 2019 20:02:13 +0800 Subject: [PATCH 1/2] feat: add options dont remove className --- .../src/__tests__/index.js | 22 ++++++++++++++++--- .../src/index.js | 19 ++++++++++------ 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/packages/babel-plugin-transform-jsx-stylesheet/src/__tests__/index.js b/packages/babel-plugin-transform-jsx-stylesheet/src/__tests__/index.js index 30aefa6b7d..713b5ffa8c 100644 --- a/packages/babel-plugin-transform-jsx-stylesheet/src/__tests__/index.js +++ b/packages/babel-plugin-transform-jsx-stylesheet/src/__tests__/index.js @@ -66,9 +66,11 @@ const getStyleFunctionTemplete = `function _getStyle(classNameExpression) { return style; }`; -function getTransfromCode(code) { +function getTransfromCode(code, opts) { return transform(code, { - plugins: [jSXStylePlugin, syntaxJSX] + plugins: [ + [jSXStylePlugin, opts], + syntaxJSX] }).code; } @@ -273,6 +275,20 @@ import appStyleSheet from './app.css'; var _styleSheet = appStyleSheet; render(
);`); }); + + it('dont remove className', () => { + expect(getTransfromCode(` +import { createElement, render } from 'rax'; +import './app.css'; + +render(
); +`, { retainClassName: true })).toBe(` +import { createElement, render } from 'rax'; +import appStyleSheet from './app.css'; + +var _styleSheet = appStyleSheet; +render(
);`); + }); }); describe('test development env', () => { @@ -299,4 +315,4 @@ render(
);`); afterEach(() => { process.env.NODE_ENV = lastEnv; }); -}); \ No newline at end of file +}); diff --git a/packages/babel-plugin-transform-jsx-stylesheet/src/index.js b/packages/babel-plugin-transform-jsx-stylesheet/src/index.js index 524d4c78d3..13748ee3d2 100644 --- a/packages/babel-plugin-transform-jsx-stylesheet/src/index.js +++ b/packages/babel-plugin-transform-jsx-stylesheet/src/index.js @@ -147,7 +147,9 @@ function ${GET_STYLE_FUNC_NAME}(classNameExpression) { } } }, - JSXOpeningElement({ container }, { file }) { + JSXOpeningElement({ container }, { file, opts }) { + const { retainClassName = false } = opts; + const cssFileCount = file.get('cssFileCount') || 0; if (cssFileCount < 1) { return; @@ -177,12 +179,15 @@ function ${GET_STYLE_FUNC_NAME}(classNameExpression) { if (hasClassName) { - // development env: change className to __class - if (process.env.NODE_ENV === 'development' && classNameAttribute.name) { - classNameAttribute.name.name = '__class'; - } else { - // Remove origin className - attributes.splice(attributes.indexOf(classNameAttribute), 1); + // Dont remove className + if (!retainClassName) { + // development env: change className to __class + if (process.env.NODE_ENV === 'development' && classNameAttribute.name) { + classNameAttribute.name.name = '__class'; + } else { + // Remove origin className + attributes.splice(attributes.indexOf(classNameAttribute), 1); + } } if ( From a78d3c81d457d39c2928be4fd9e7586e1eec5555 Mon Sep 17 00:00:00 2001 From: boiawang Date: Tue, 30 Jul 2019 20:06:04 +0800 Subject: [PATCH 2/2] chore: code lint --- .../src/__tests__/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/babel-plugin-transform-jsx-stylesheet/src/__tests__/index.js b/packages/babel-plugin-transform-jsx-stylesheet/src/__tests__/index.js index 713b5ffa8c..6e4c8a6beb 100644 --- a/packages/babel-plugin-transform-jsx-stylesheet/src/__tests__/index.js +++ b/packages/babel-plugin-transform-jsx-stylesheet/src/__tests__/index.js @@ -70,7 +70,8 @@ function getTransfromCode(code, opts) { return transform(code, { plugins: [ [jSXStylePlugin, opts], - syntaxJSX] + syntaxJSX + ] }).code; }