diff --git a/.babelrc b/.babelrc index 70e631e..558e7e2 100644 --- a/.babelrc +++ b/.babelrc @@ -1,5 +1,4 @@ { - "presets": ["es2015"], - "plugins": ["./index"], + "presets": ["@babel/preset-env"], "ignore": ["node_modules"] } diff --git a/index.js b/index.js index 90c6964..ed797e7 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,7 @@ var esutils = require('esutils') var groupProps = require('./lib/group-props') var mustUseProp = require('./lib/must-use-prop') +var addDefault = require('@babel/helper-module-imports').addDefault module.exports = function (babel) { var t = babel.types @@ -113,7 +114,7 @@ module.exports = function (babel) { var attribs = path.node.attributes if (attribs.length) { - attribs = buildOpeningElementAttributes(attribs, file) + attribs = buildOpeningElementAttributes(attribs, path) args.push(attribs) } return t.callExpression(t.identifier('h'), args) @@ -144,7 +145,7 @@ module.exports = function (babel) { * all prior attributes to an array for later processing. */ - function buildOpeningElementAttributes (attribs, file) { + function buildOpeningElementAttributes (attribs, path) { var _props = [] var objs = [] @@ -176,7 +177,7 @@ module.exports = function (babel) { attribs = objs[0] } else if (objs.length) { // add prop merging helper - var helper = file.addImport('babel-helper-vue-jsx-merge-props', 'default', '_mergeJSXProps') + var helper = addDefault(path, 'babel-helper-vue-jsx-merge-props', { nameHint: '_mergeJSXProps' }) // spread it attribs = t.callExpression( helper, diff --git a/package.json b/package.json index f9f6bcf..eb4e77f 100644 --- a/package.json +++ b/package.json @@ -11,9 +11,9 @@ ], "scripts": { "lint": "eslint index.js", - "test": "npm run lint && mocha --compilers js:babel-register", + "test": "npm run lint && mocha --require @babel/register", "dev": "cd example && webpack --watch", - "build": "webpack -p index.js dist/babel-plugin-transform-vue-jsx.min.js --target=web --output-library=babel-plugin-transform-vue-jsx --output-library-target=umd --module-bind 'js=babel-loader'", + "build": "webpack -d", "prepublish": "npm run build" }, "repository": { @@ -38,18 +38,18 @@ "babel-helper-vue-jsx-merge-props": "^2.0.0" }, "devDependencies": { - "babel-cli": "^6.26.0", - "babel-core": "^6.26.0", + "@babel/core": "^7.0.0-beta.40", + "@babel/helper-module-imports": "^7.0.0-beta.40", + "@babel/preset-env": "^7.0.0-beta.40", + "@babel/register": "^7.0.0-beta.40", "babel-helper-vue-jsx-merge-props": "^2.0.3", - "babel-loader": "^7.1.2", + "babel-loader": "8.0.0-beta.0", "babel-plugin-syntax-jsx": "^6.18.0", - "babel-preset-es2015": "^6.24.1", - "babel-register": "^6.26.0", "chai": "^4.1.2", "eslint": "^4.16.0", "eslint-plugin-vue-libs": "^2.1.0", "mocha": "^5.0.0", "vue": "^2.5.13", - "webpack": "^3.10.0" + "webpack": "^3.11.0" } } diff --git a/test/.babelrc b/test/.babelrc new file mode 100644 index 0000000..2f37c11 --- /dev/null +++ b/test/.babelrc @@ -0,0 +1,5 @@ +{ + "presets": ["@babel/preset-env"], + "plugins": ["../index"], + "ignore": ["node_modules"] +} diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..0246e1e --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,23 @@ +var path = require('path') + +module.exports = { + target: 'web', + entry: path.join(__dirname, 'index.js'), + output: { + path: path.join(__dirname, 'dist'), + filename: 'babel-plugin-transform-vue-jsx.min.js', + library: 'babel-plugin-transform-vue-jsx', + libraryTarget: 'umd' + }, + module: { + rules: [ + { + test: /\/jsx?$/, + exclude: /node_modules/, + use: { + loader: 'babel-loader' + } + } + ] + } +}