diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 89767bb0..00000000 --- a/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -**/*/__tests__ diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 4320ecae..00000000 --- a/.eslintrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "eslint-config-airbnb/base", - "rules": { - "no-console": [0] - } -} diff --git a/.projectile b/.projectile new file mode 100644 index 00000000..13cb2636 --- /dev/null +++ b/.projectile @@ -0,0 +1,16 @@ +;; projectile configure file +;; - means ignore this pattern, must has a leading "/", using the regexp rule. +;; + means add this subdir, it will block the root dir. +-/GTAGS$ +-/GPATH$ +-/GRTAGS$ +-/.*.svn +-/.*.git +-/icons +-/.*images/ +-/.*imgs/ +-/.*image/ +-/libs/encoding +-/.*.dll$ +-/node_modules +-/coverage \ No newline at end of file diff --git a/README.org b/README.org new file mode 100644 index 00000000..43b8af92 --- /dev/null +++ b/README.org @@ -0,0 +1,5 @@ +* TEST +istanbul -> macha -> "./test/index-test.js" -> babel + plugin("./src/index.js") -> debugcase +* DEBUG +test/index-test.js" -> babel + plugin("./src/index.js") -> debugcase + diff --git a/debug/case/testUseInJsx_index.jsx b/debug/case/testUseInJsx_index.jsx new file mode 100644 index 00000000..243d4c6b --- /dev/null +++ b/debug/case/testUseInJsx_index.jsx @@ -0,0 +1,24 @@ +import { Button } from 'element-ui'; + +console.log(Button); + +const Bt2 = Button + +const LeftBar = { + data() { + return { + firstName: 'Wfghjfghjghjalter11', + lastName: 'ghjkhbnhWhitesdfghjkdfghjkl;', + alias: 'jkhkhhlkhHeisenberg' + }; + }, + render() { + console.log(Button); + let Bt = Button; + return (
+
{this.firstName}
+ +
); + } +}; +export default LeftBar; diff --git a/debug/debug.js b/debug/debug.js new file mode 100644 index 00000000..731bb882 --- /dev/null +++ b/debug/debug.js @@ -0,0 +1,28 @@ +import { transformFileSync } from 'babel-core' +import { join } from 'path' +import { writeFileSync } from 'fs' +import plugin from '../src/index' + +let originFile = join(__dirname, 'input.jsx') +let outputFile = join(__dirname, 'output.js') + +let outputText = transformFileSync(originFile, { + "presets": [ + ["env", { + "targets": { + "browsers": ["last 2 versions", "safari >= 7", "ie >= 10"] + } + }] + ], + "plugins": [ + ["transform-vue-jsx"], + [plugin, [ + { + "libraryName": "element-ui", + "styleLibraryName": "theme-default" + } + ]] + ] +}).code + +writeFileSync(outputFile, outputText) diff --git a/debug/input.jsx b/debug/input.jsx new file mode 100644 index 00000000..f6a7dda0 --- /dev/null +++ b/debug/input.jsx @@ -0,0 +1,24 @@ +import { Button as MyBu } from 'element-ui'; + +console.log(MyBu); + +const Bt2 = MyBu + +const LeftBar = { + data() { + return { + firstName: 'Wfghjfghjghjalter11', + lastName: 'ghjkhbnhWhitesdfghjkdfghjkl;', + alias: 'jkhkhhlkhHeisenberg' + }; + }, + render() { + console.log(MyBu); + let Bt = MyBu; + return (
+
{this.firstName}
+ ClickMe +
); + } +}; +export default LeftBar; diff --git a/debug/output.js b/debug/output.js new file mode 100644 index 00000000..37ab5b1f --- /dev/null +++ b/debug/output.js @@ -0,0 +1,57 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _myBu = require('antd/lib/my-bu'); + +var _myBu2 = _interopRequireDefault(_myBu); + +var _button = require('element-ui/lib/theme-default/button.css'); + +var _button2 = _interopRequireDefault(_button); + +var _base = require('element-ui/lib/theme-default/base.css'); + +var _base2 = _interopRequireDefault(_base); + +var _button3 = require('element-ui/lib/button'); + +var _button4 = _interopRequireDefault(_button3); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +console.log(_button4.default); + +var Bt2 = _myBu2.default; + +var LeftBar = { + data: function data() { + return { + firstName: 'Wfghjfghjghjalter11', + lastName: 'ghjkhbnhWhitesdfghjkdfghjkl;', + alias: 'jkhkhhlkhHeisenberg' + }; + }, + render: function render() { + var h = arguments[0]; + + console.log(_button4.default); + var Bt = _myBu2.default; + return h( + 'div', + null, + [h( + 'div', + null, + [' ', this.firstName, ' '] + ), h( + _myBu2.default, + null, + ['ClickMe'] + )] + ); + } +}; +exports.default = LeftBar; \ No newline at end of file diff --git a/package.json b/package.json index 8a21cad3..f7f38aec 100644 --- a/package.json +++ b/package.json @@ -1,62 +1,62 @@ { - "name": "babel-plugin-component", - "version": "0.10.1", - "description": "Modular build plugin for babel.", - "main": "lib/index.js", - "scripts": { - "build": "rm -rf lib && babel src --out-dir lib --ignore __tests__", - "test": "babel-node node_modules/.bin/babel-istanbul cover node_modules/.bin/_mocha --no-timeouts", - "debug": "mocha --require babel-core/register --require babel-polyfill --no-timeouts", - "lint": "eslint --ext .js src", - "coveralls": "cat ./coverage/lcov.info | coveralls", - "prepublish": "npm run build" - }, - "pre-commit": [ - "lint" - ], - "keywords": [ - "babel-plugin" - ], - "author": [ - "chencheng ", - "qingwei-li " - ], - "license": "MIT", - "devDependencies": { - "babel-cli": "^6.3.13", - "babel-core": "^6.7.4", - "babel-istanbul": "^0.7.0", - "babel-plugin-add-module-exports": "^0.1.2", - "babel-preset-es2015": "^6.6.0", - "babel-preset-react": "^6.5.0", - "babel-preset-stage-0": "^6.3.13", - "coveralls": "^2.11.6", - "eslint": "^2.7.0", - "eslint-config-airbnb": "^6.2.0", - "expect": "^1.13.4", - "mocha": "^2.3.4", - "pre-commit": "~1.1.2" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/qingwei-li/babel-plugin-component.git" - }, - "homepage": "https://github.com/qingwei-li/babel-plugin-component#readme", - "bugs": { - "url": "https://github.com/qingwei-li/babel-plugin-component/issues" - }, - "babel": { - "presets": [ - "es2015", - "stage-0" + "name": "babel-plugin-import-vue", + "version": "0.0.1", + "description": "Modular build plugin for babel. compatible with element and so on", + "main": "lib/index.js", + "scripts": { + "build": "rimraf lib && babel src --out-dir lib --ignore __tests__", + "debug": "node --inspect-brk --require ./node_modules/babel-core/register.js ./debug/debug.js", + "testalls": "babel-node node_modules/babel-istanbul/lib/cli.js cover node_modules/mocha/bin/_mocha --no-timeouts", + "debugalls": "mocha --require babel-core/register --require babel-polyfill --no-timeouts", + "coveralls": "cat ./coverage/lcov.info | coveralls" + }, + "keywords": [ + "babel-plugin", + "vue", + "element", + "babel-plugin-import" ], - "plugins": [ - "add-module-exports" + "author": [ + "chencheng ", + "qingwei-li ", + "zhongshu ", + "zhongshu " + ], + "license": "MIT", + "devDependencies": { + "babel-cli": "^6.26.0", + "babel-core": "^6.26.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-istanbul": "^0.7.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.5.0", + "babel-polyfill": "^6.26.0", + "babel-preset-env": "^1.6.0", + "coveralls": "^2.13.3", + "expect": "^1.20.2", + "mocha": "^2.5.3", + "rimraf": "^2.6.2" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/qingwei-li/babel-plugin-component.git" + }, + "homepage": "https://github.com/qingwei-li/babel-plugin-component#readme", + "bugs": { + "url": "https://github.com/qingwei-li/babel-plugin-component/issues" + }, + "babel": { + "presets": [ + ["env", { + "targets": { + "node": "current" + } + }] + ] + }, + "files": [ + "lib", + "package.json", + "README.md" ] - }, - "files": [ - "lib", - "package.json", - "README.md" - ] } diff --git a/src/core.js b/src/core.js index 4b2ff108..386df447 100644 --- a/src/core.js +++ b/src/core.js @@ -27,7 +27,7 @@ export default function (defaultLibraryName) { if (Array.isArray(opts)) { options = opts.find(option => moduleArr[methodName] === option.libraryName || - libraryObjs[methodName] === option.libraryName + libraryObjs[methodName] === option.libraryName ); // eslint-disable-line } options = options || opts; @@ -71,16 +71,16 @@ export default function (defaultLibraryName) { if (!cachePath[libraryName]) { const themeName = styleLibraryName.replace(/^~/, ''); cachePath[libraryName] = styleLibraryName.indexOf('~') === 0 - ? resolve(process.cwd(), themeName) - : `${libraryName}/${libDir}/${themeName}`; + ? resolve(process.cwd(), themeName) + : `${libraryName}/${libDir}/${themeName}`; } if (libraryObjs[methodName]) { /* istanbul ingore next */ if (cache[libraryName] === 2) { throw Error('[babel-plugin-component] If you are using both' + - 'on-demand and importing all, make sure to invoke the' + - ' importing all first.'); + 'on-demand and importing all, make sure to invoke the' + + ' importing all first.'); } path = `${cachePath[libraryName]}${_root || '/index'}.css`; cache[libraryName] = 1; @@ -128,7 +128,9 @@ export default function (defaultLibraryName) { function buildDeclaratorHandler(node, prop, path, opts) { const { file } = path.hub; - if (!types.isIdentifier(node[prop])) return; + + if (!types.isIdentifier(node[prop]) && !types.isJSXIdentifier(node[prop])) return + if (specified[node[prop].name]) { node[prop] = importMethod(node[prop].name, file, opts); // eslint-disable-line } @@ -230,6 +232,16 @@ export default function (defaultLibraryName) { buildDeclaratorHandler(node, 'init', path, opts); }, + JSXOpeningElement(path, { opts }) { + const { node } = path + buildDeclaratorHandler(node, 'name', path, opts) + }, + + JSXClosingElement(path, { opts }) { + const { node } = path + buildDeclaratorHandler(node, 'name', path, opts) + }, + LogicalExpression(path, { opts }) { const { node } = path; buildExpressionHandler(node, ['left', 'right'], path, opts); diff --git a/src/index.js b/src/index.js index 0912b5b2..e409dbbe 100644 --- a/src/index.js +++ b/src/index.js @@ -1 +1 @@ -export default require('./core')('antd'); +export default require('./core').default('antd') diff --git a/test/index-test.js b/test/test.js similarity index 100% rename from test/index-test.js rename to test/test.js diff --git a/test/fixtures/array/actual.js b/test/testcase/array/actual.js similarity index 100% rename from test/fixtures/array/actual.js rename to test/testcase/array/actual.js diff --git a/test/fixtures/array/expected.js b/test/testcase/array/expected.js similarity index 100% rename from test/fixtures/array/expected.js rename to test/testcase/array/expected.js diff --git a/test/fixtures/as-arguments/actual.js b/test/testcase/as-arguments/actual.js similarity index 100% rename from test/fixtures/as-arguments/actual.js rename to test/testcase/as-arguments/actual.js diff --git a/test/fixtures/as-arguments/expected.js b/test/testcase/as-arguments/expected.js similarity index 100% rename from test/fixtures/as-arguments/expected.js rename to test/testcase/as-arguments/expected.js diff --git a/test/fixtures/assignment-expression/actual.js b/test/testcase/assignment-expression/actual.js similarity index 100% rename from test/fixtures/assignment-expression/actual.js rename to test/testcase/assignment-expression/actual.js diff --git a/test/fixtures/assignment-expression/expected.js b/test/testcase/assignment-expression/expected.js similarity index 100% rename from test/fixtures/assignment-expression/expected.js rename to test/testcase/assignment-expression/expected.js diff --git a/test/fixtures/camel-to-dash-option/actual.js b/test/testcase/camel-to-dash-option/actual.js similarity index 100% rename from test/fixtures/camel-to-dash-option/actual.js rename to test/testcase/camel-to-dash-option/actual.js diff --git a/test/fixtures/camel-to-dash-option/expected.js b/test/testcase/camel-to-dash-option/expected.js similarity index 100% rename from test/fixtures/camel-to-dash-option/expected.js rename to test/testcase/camel-to-dash-option/expected.js diff --git a/test/fixtures/conditions/actual.js b/test/testcase/conditions/actual.js similarity index 100% rename from test/fixtures/conditions/actual.js rename to test/testcase/conditions/actual.js diff --git a/test/fixtures/conditions/expected.js b/test/testcase/conditions/expected.js similarity index 100% rename from test/fixtures/conditions/expected.js rename to test/testcase/conditions/expected.js diff --git a/test/fixtures/custom-css-filename/actual.js b/test/testcase/custom-css-filename/actual.js similarity index 100% rename from test/fixtures/custom-css-filename/actual.js rename to test/testcase/custom-css-filename/actual.js diff --git a/test/fixtures/custom-css-filename/expected.js b/test/testcase/custom-css-filename/expected.js similarity index 100% rename from test/fixtures/custom-css-filename/expected.js rename to test/testcase/custom-css-filename/expected.js diff --git a/test/fixtures/execute-direct/actual.js b/test/testcase/execute-direct/actual.js similarity index 100% rename from test/fixtures/execute-direct/actual.js rename to test/testcase/execute-direct/actual.js diff --git a/test/fixtures/execute-direct/expected.js b/test/testcase/execute-direct/expected.js similarity index 100% rename from test/fixtures/execute-direct/expected.js rename to test/testcase/execute-direct/expected.js diff --git a/test/fixtures/execute-member/actual.js b/test/testcase/execute-member/actual.js similarity index 100% rename from test/fixtures/execute-member/actual.js rename to test/testcase/execute-member/actual.js diff --git a/test/fixtures/execute-member/expected.js b/test/testcase/execute-member/expected.js similarity index 100% rename from test/fixtures/execute-member/expected.js rename to test/testcase/execute-member/expected.js diff --git a/test/fixtures/import-all-css/actual.js b/test/testcase/import-all-css/actual.js similarity index 100% rename from test/fixtures/import-all-css/actual.js rename to test/testcase/import-all-css/actual.js diff --git a/test/fixtures/import-all-css/expected.js b/test/testcase/import-all-css/expected.js similarity index 100% rename from test/fixtures/import-all-css/expected.js rename to test/testcase/import-all-css/expected.js diff --git a/test/fixtures/import-css/actual.js b/test/testcase/import-css/actual.js similarity index 100% rename from test/fixtures/import-css/actual.js rename to test/testcase/import-css/actual.js diff --git a/test/fixtures/import-css/expected.js b/test/testcase/import-css/expected.js similarity index 100% rename from test/fixtures/import-css/expected.js rename to test/testcase/import-css/expected.js diff --git a/test/fixtures/import-module/actual.js b/test/testcase/import-module/actual.js similarity index 100% rename from test/fixtures/import-module/actual.js rename to test/testcase/import-module/actual.js diff --git a/test/fixtures/import-module/expected.js b/test/testcase/import-module/expected.js similarity index 100% rename from test/fixtures/import-module/expected.js rename to test/testcase/import-module/expected.js diff --git a/test/fixtures/import-theme-all-compo/actual.js b/test/testcase/import-theme-all-compo/actual.js similarity index 100% rename from test/fixtures/import-theme-all-compo/actual.js rename to test/testcase/import-theme-all-compo/actual.js diff --git a/test/fixtures/import-theme-all-compo/expected.js b/test/testcase/import-theme-all-compo/expected.js similarity index 100% rename from test/fixtures/import-theme-all-compo/expected.js rename to test/testcase/import-theme-all-compo/expected.js diff --git a/test/fixtures/import-theme-custom-path/actual.js b/test/testcase/import-theme-custom-path/actual.js similarity index 100% rename from test/fixtures/import-theme-custom-path/actual.js rename to test/testcase/import-theme-custom-path/actual.js diff --git a/test/fixtures/import-theme-custom-path/expected.js b/test/testcase/import-theme-custom-path/expected.js similarity index 100% rename from test/fixtures/import-theme-custom-path/expected.js rename to test/testcase/import-theme-custom-path/expected.js diff --git a/test/fixtures/import-theme-custom/actual.js b/test/testcase/import-theme-custom/actual.js similarity index 100% rename from test/fixtures/import-theme-custom/actual.js rename to test/testcase/import-theme-custom/actual.js diff --git a/test/fixtures/import-theme-custom/expected.js b/test/testcase/import-theme-custom/expected.js similarity index 100% rename from test/fixtures/import-theme-custom/expected.js rename to test/testcase/import-theme-custom/expected.js diff --git a/test/fixtures/import-theme/actual.js b/test/testcase/import-theme/actual.js similarity index 100% rename from test/fixtures/import-theme/actual.js rename to test/testcase/import-theme/actual.js diff --git a/test/fixtures/import-theme/expected.js b/test/testcase/import-theme/expected.js similarity index 100% rename from test/fixtures/import-theme/expected.js rename to test/testcase/import-theme/expected.js diff --git a/test/fixtures/independent-theme-package-custom/actual.js b/test/testcase/independent-theme-package-custom/actual.js similarity index 100% rename from test/fixtures/independent-theme-package-custom/actual.js rename to test/testcase/independent-theme-package-custom/actual.js diff --git a/test/fixtures/independent-theme-package-custom/expected.js b/test/testcase/independent-theme-package-custom/expected.js similarity index 100% rename from test/fixtures/independent-theme-package-custom/expected.js rename to test/testcase/independent-theme-package-custom/expected.js diff --git a/test/fixtures/independent-theme-package-mixin/actual.js b/test/testcase/independent-theme-package-mixin/actual.js similarity index 100% rename from test/fixtures/independent-theme-package-mixin/actual.js rename to test/testcase/independent-theme-package-mixin/actual.js diff --git a/test/fixtures/independent-theme-package-mixin/expected.js b/test/testcase/independent-theme-package-mixin/expected.js similarity index 100% rename from test/fixtures/independent-theme-package-mixin/expected.js rename to test/testcase/independent-theme-package-mixin/expected.js diff --git a/test/fixtures/independent-theme-package/actual.js b/test/testcase/independent-theme-package/actual.js similarity index 100% rename from test/fixtures/independent-theme-package/actual.js rename to test/testcase/independent-theme-package/actual.js diff --git a/test/fixtures/independent-theme-package/expected.js b/test/testcase/independent-theme-package/expected.js similarity index 100% rename from test/fixtures/independent-theme-package/expected.js rename to test/testcase/independent-theme-package/expected.js diff --git a/test/fixtures/multiple-module/actual.js b/test/testcase/multiple-module/actual.js similarity index 100% rename from test/fixtures/multiple-module/actual.js rename to test/testcase/multiple-module/actual.js diff --git a/test/fixtures/multiple-module/expected.js b/test/testcase/multiple-module/expected.js similarity index 100% rename from test/fixtures/multiple-module/expected.js rename to test/testcase/multiple-module/expected.js diff --git a/test/fixtures/multiple-words/actual.js b/test/testcase/multiple-words/actual.js similarity index 100% rename from test/fixtures/multiple-words/actual.js rename to test/testcase/multiple-words/actual.js diff --git a/test/fixtures/multiple-words/expected.js b/test/testcase/multiple-words/expected.js similarity index 100% rename from test/fixtures/multiple-words/expected.js rename to test/testcase/multiple-words/expected.js diff --git a/test/fixtures/property/actual.js b/test/testcase/property/actual.js similarity index 100% rename from test/fixtures/property/actual.js rename to test/testcase/property/actual.js diff --git a/test/fixtures/property/expected.js b/test/testcase/property/expected.js similarity index 100% rename from test/fixtures/property/expected.js rename to test/testcase/property/expected.js diff --git a/test/fixtures/react-element/actual.js b/test/testcase/react-element/actual.js similarity index 100% rename from test/fixtures/react-element/actual.js rename to test/testcase/react-element/actual.js diff --git a/test/fixtures/react-element/expected.js b/test/testcase/react-element/expected.js similarity index 100% rename from test/fixtures/react-element/expected.js rename to test/testcase/react-element/expected.js diff --git a/test/fixtures/specifier-alias/actual.js b/test/testcase/specifier-alias/actual.js similarity index 100% rename from test/fixtures/specifier-alias/actual.js rename to test/testcase/specifier-alias/actual.js diff --git a/test/fixtures/specifier-alias/expected.js b/test/testcase/specifier-alias/expected.js similarity index 100% rename from test/fixtures/specifier-alias/expected.js rename to test/testcase/specifier-alias/expected.js diff --git a/test/fixtures/variable-declarator/actual.js b/test/testcase/variable-declarator/actual.js similarity index 100% rename from test/fixtures/variable-declarator/actual.js rename to test/testcase/variable-declarator/actual.js diff --git a/test/fixtures/variable-declarator/expected.js b/test/testcase/variable-declarator/expected.js similarity index 100% rename from test/fixtures/variable-declarator/expected.js rename to test/testcase/variable-declarator/expected.js