spee.ch/utils/createModuleAliases.js

63 lines
2.4 KiB
JavaScript
Raw Normal View History

2018-08-01 01:01:16 +02:00
const { statSync, existsSync, readdirSync } = require('fs');
const { join, resolve } = require('path');
const DEFAULT_ROOT = 'client/build';
const CUSTOM_ROOT = 'client_custom/build';
const CUSTOM_SCSS_ROOT = 'client_custom/scss';
2018-08-01 01:01:16 +02:00
const getFolders = path => {
if (existsSync(path)) {
return readdirSync(path).filter(file => statSync(join(path, file)).isDirectory());
}
return [];
};
const addAliasesForCustomComponentFolder = (name, aliasObject) => {
// creates an alias for each component in the folder that is passed to this function
2018-08-01 01:01:16 +02:00
const folderPath = resolve(`${CUSTOM_ROOT}/${name}`);
const components = getFolders(folderPath);
for (let i = 0; i < components.length; i++) {
let folderName = components[i];
let aliasName = `@${name}/${folderName}`;
aliasObject[aliasName] = resolve(`${CUSTOM_ROOT}/${name}/${folderName}/index.js`);
}
return aliasObject;
};
const addAlliasesForSCSS = (aliasObject) => { // scss
// creates an alias for every folder found in the custom scss folder
const customScssRoot = resolve(`${CUSTOM_SCSS_ROOT}`);
const customFolders = getFolders(customScssRoot);
for (let i = 0; i < customFolders.length; i++) {
let folderName = customFolders[i];
aliasObject[folderName] = resolve(`${CUSTOM_SCSS_ROOT}/${folderName}`);
2018-08-01 01:01:16 +02:00
}
return aliasObject;
};
module.exports = () => {
let moduleAliases = {};
// aliases for configs
moduleAliases['@config'] = resolve(`config`);
moduleAliases['@devConfig'] = resolve(`devConfig`);
2018-08-01 01:01:16 +02:00
// create specific aliases for locally defined components in the following folders
moduleAliases = addAliasesForCustomComponentFolder('containers', moduleAliases);
moduleAliases = addAliasesForCustomComponentFolder('components', moduleAliases);
moduleAliases = addAliasesForCustomComponentFolder('pages', moduleAliases);
2018-08-01 01:01:16 +02:00
// default component aliases
2018-08-01 01:01:16 +02:00
moduleAliases['@containers'] = resolve(`${DEFAULT_ROOT}/containers`);
moduleAliases['@components'] = resolve(`${DEFAULT_ROOT}/components`);
moduleAliases['@pages'] = resolve(`${DEFAULT_ROOT}/pages`);
moduleAliases['@actions'] = resolve(`${DEFAULT_ROOT}/actions`);
moduleAliases['@reducers'] = resolve(`${DEFAULT_ROOT}/reducers`);
moduleAliases['@sagas'] = resolve(`${DEFAULT_ROOT}/sagas`);
moduleAliases['@app'] = resolve(`${DEFAULT_ROOT}/app.js`);
// scss aliases
moduleAliases = addAlliasesForSCSS(moduleAliases);
2018-08-01 01:01:16 +02:00
// return finished aliases
return moduleAliases;
};