From bba6dd9baa8b7e9a933b06f3732b0f4603c46359 Mon Sep 17 00:00:00 2001 From: Michael Stramel Date: Sat, 8 Sep 2018 23:41:23 -0500 Subject: [PATCH 1/3] [Breaking] Upgrade to babel 7 --- README.md | 2 +- package.json | 15 ++++++++++----- src/index.js | 14 +++++++++++--- test/sanity.js | 29 +++++++++++++++-------------- 4 files changed, 37 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 102fd10..4228b59 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,7 @@ $ babel --plugins inline-react-svg script.js ```javascript -require('babel-core').transform('code', { +require('@babel/core').transform('code', { plugins: ['inline-react-svg'] }) // => { code, map, ast }; ``` diff --git a/package.json b/package.json index 2f561a8..849fba0 100644 --- a/package.json +++ b/package.json @@ -30,10 +30,11 @@ }, "homepage": "https://github.com/kesne/babel-plugin-inline-react-svg#readme", "devDependencies": { - "babel-cli": "^6.26.0", - "babel-core": "^6.26.3", - "babel-preset-airbnb": "^2.5.1", - "babel-preset-react": "^6.24.1", + "@babel/cli": "^7.0.0", + "@babel/core": "^7.0.0", + "@babel/node": "^7.0.0", + "@babel/preset-react": "^7.0.0", + "babel-preset-airbnb": "^3.0.1", "eslint": "^4.19.1", "eslint-config-airbnb": "^17.0.0", "eslint-plugin-import": "^2.13.0", @@ -41,8 +42,12 @@ "eslint-plugin-react": "^7.10.0", "react": "^15.3.1" }, + "peerDependencies": { + "@babel/core": "^7.0.0" + }, "dependencies": { - "babylon": "^6.18.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/parser": "^7.0.0", "lodash.isplainobject": "^4.0.6", "resolve": "^1.8.1", "svgo": "^0.7.2" diff --git a/src/index.js b/src/index.js index 4870724..58f65ab 100644 --- a/src/index.js +++ b/src/index.js @@ -1,6 +1,7 @@ import { extname, dirname } from 'path'; import { readFileSync } from 'fs'; -import { parse } from 'babylon'; +import { parse } from '@babel/parser'; +import { declare } from '@babel/helper-plugin-utils'; import resolve from 'resolve'; import optimize from './optimize'; @@ -10,7 +11,14 @@ import fileExistsWithCaseSync from './fileExistsWithCaseSync'; let ignoreRegex; -export default ({ template, traverse, types: t }) => { +export default declare(({ + assertVersion, + template, + traverse, + types: t, +}) => { + assertVersion(7); + const buildSvg = template(` var SVG_NAME = function SVG_NAME(props) { return SVG_CODE; }; `); @@ -125,4 +133,4 @@ export default ({ template, traverse, types: t }) => { }, }, }; -}; +}); diff --git a/test/sanity.js b/test/sanity.js index 59d79e5..17b9d77 100644 --- a/test/sanity.js +++ b/test/sanity.js @@ -1,9 +1,10 @@ -import { transformFile } from 'babel-core'; +import { transformFile } from '@babel/core'; import fs from 'fs'; import path from 'path'; +import inlineReactSvgPlugin from '../src'; function assertReactImport(result) { - const match = result.code.match(/import React from 'react'/g); + const match = result.code.match(/import React from ['"]react['"]/g); if (!match) { throw new Error('no React import found'); } @@ -20,9 +21,9 @@ function validateDefaultProps(result) { transformFile('test/fixtures/test-import.jsx', { babelrc: false, - presets: ['react'], + presets: ['@babel/preset-react'], plugins: [ - '../../src/index', + inlineReactSvgPlugin, ], }, (err, result) => { if (err) throw err; @@ -33,9 +34,9 @@ transformFile('test/fixtures/test-import.jsx', { transformFile('test/fixtures/test-multiple-svg.jsx', { babelrc: false, - presets: ['react'], + presets: ['@babel/preset-react'], plugins: [ - '../../src/index', + inlineReactSvgPlugin, ], }, (err, result) => { if (err) throw err; @@ -46,9 +47,9 @@ transformFile('test/fixtures/test-multiple-svg.jsx', { transformFile('test/fixtures/test-no-react.jsx', { babelrc: false, - presets: ['react'], + presets: ['@babel/preset-react'], plugins: [ - '../../src/index', + inlineReactSvgPlugin, ], }, (err, result) => { if (err) throw err; @@ -60,9 +61,9 @@ transformFile('test/fixtures/test-no-react.jsx', { if (fs.existsSync(path.resolve('./PACKAGE.JSON'))) { transformFile('test/fixtures/test-case-sensitive.jsx', { babelrc: false, - presets: ['react'], + presets: ['@babel/preset-react'], plugins: [ - ['../../src/index', { + [inlineReactSvgPlugin, { caseSensitive: true, }], ], @@ -81,7 +82,7 @@ transformFile('test/fixtures/test-no-svg-or-react.js', { babelrc: false, presets: [], plugins: [ - '../../src/index', + inlineReactSvgPlugin, ], }, (err, result) => { if (err) throw err; @@ -94,7 +95,7 @@ transformFile('test/fixtures/test-no-svg-or-react.js', { transformFile('test/fixtures/test-import.jsx', { presets: ['airbnb'], plugins: [ - '../../src/index', + inlineReactSvgPlugin, ], }, (err1, importResult) => { if (err1) throw err1; @@ -102,7 +103,7 @@ transformFile('test/fixtures/test-import.jsx', { transformFile('test/fixtures/test-require.jsx', { presets: ['airbnb'], plugins: [ - '../../src/index', + inlineReactSvgPlugin, ], }, (err2, requireResult) => { if (err2) throw err2; @@ -115,7 +116,7 @@ transformFile('test/fixtures/test-import.jsx', { transformFile('test/fixtures/test-dynamic-require.jsx', { presets: ['airbnb'], plugins: [ - '../../src/index', + inlineReactSvgPlugin, ], }, (err, result) => { if (err) throw err; From 143e8b1624dc37d7b60278c16aaed9ea52543c3c Mon Sep 17 00:00:00 2001 From: Michael Stramel Date: Sun, 9 Sep 2018 14:45:36 -0500 Subject: [PATCH 2/3] [Breaking] drop support of node < 6, per babel 7 --- .travis.yml | 6 ------ test/sanity.js | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 272a673..5ab70bc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,15 +5,9 @@ node_js: - "10" - "9" - "8" - - "7" - "6" - - "5" - - "4" before_install: - - 'case "${TRAVIS_NODE_VERSION}" in 0.*) export NPM_CONFIG_STRICT_SSL=false ;; esac' - 'nvm install-latest-npm' -install: - - 'if [ "${TRAVIS_NODE_VERSION}" = "0.6" ] || [ "${TRAVIS_NODE_VERSION}" = "0.9" ]; then nvm install --latest-npm 0.8 && npm install && nvm use "${TRAVIS_NODE_VERSION}"; else npm install; fi;' script: - 'if [ -n "${PRETEST-}" ]; then npm run pretest ; fi' - 'if [ -n "${POSTTEST-}" ]; then npm run posttest ; fi' diff --git a/test/sanity.js b/test/sanity.js index 17b9d77..be54d84 100644 --- a/test/sanity.js +++ b/test/sanity.js @@ -108,7 +108,7 @@ transformFile('test/fixtures/test-import.jsx', { }, (err2, requireResult) => { if (err2) throw err2; if (importResult.code !== requireResult.code) { - throw new Error('Test failed: Import and require tests don\'t match'); + throw new Error("Test failed: Import and require tests don't match"); } }); }); From 83cae6fd43f1c297516bc12043c4edb78d7e4dfb Mon Sep 17 00:00:00 2001 From: Michael Stramel Date: Mon, 1 Oct 2018 15:31:38 -0500 Subject: [PATCH 3/3] Switch to single quotes with curly tick debugging diff revert revert preset revert --- test/sanity.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/sanity.js b/test/sanity.js index be54d84..d290a24 100644 --- a/test/sanity.js +++ b/test/sanity.js @@ -71,7 +71,7 @@ if (fs.existsSync(path.resolve('./PACKAGE.JSON'))) { if (err && err.message.indexOf('match case') !== -1) { console.log('test/fixtures/test-case-sensitive.jsx', 'Test passed: Expected case sensitive error was thrown'); } else { - throw new Error("Test failed: Expected case sensitive error wasn't thrown"); + throw new Error('Test failed: Expected case sensitive error wasn‘t thrown'); } }); } else { @@ -108,7 +108,7 @@ transformFile('test/fixtures/test-import.jsx', { }, (err2, requireResult) => { if (err2) throw err2; if (importResult.code !== requireResult.code) { - throw new Error("Test failed: Import and require tests don't match"); + throw new Error('Test failed: Import and require tests don‘t match'); } }); });