From f0046ef1d785b761e53f898b45025b5fafa9c71e Mon Sep 17 00:00:00 2001 From: Mikhail Bashkirov Date: Wed, 8 May 2019 08:01:59 +0200 Subject: [PATCH] chore(wallaby.js): prevent double imports --- wallaby.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/wallaby.js b/wallaby.js index dc279e6e9..bf8f99476 100644 --- a/wallaby.js +++ b/wallaby.js @@ -3,6 +3,23 @@ const wallabyWebpack = require('wallaby-webpack'); // eslint-disable-line import // filter packages, e.g. 'core' / '{radio,radio-button}' / '{form,input*}' const packagePattern = '*'; +const replaceAll = (str, oldValue, newValue) => { + return str.split(oldValue).join(newValue); +}; + +const countOccurences = (str, subbstr) => { + return str.split(subbstr).length - 1; +}; + +const makeLionImportsRelative = file => { + // example: + // file.path: 'packages/package-name/src/my-element.js' + // old imports: '@lion/package-name' + // new imports: '../../package-name' + const nestLevel = countOccurences(file.path, '/') - 1; // 3 - 1 = 2 + return replaceAll(file.content, '@lion/', '../'.repeat(nestLevel)); // '@lion/' => '../../' +}; + module.exports = () => ({ files: [ { pattern: `packages/${packagePattern}/*.js`, load: false }, @@ -18,6 +35,9 @@ module.exports = () => ({ env: { kind: 'chrome', }, + preprocessors: { + '**/*.js': makeLionImportsRelative, + }, postprocessor: wallabyWebpack(), setup: () => { // required to trigger test loading