UNPKG

@eeacms/volto-anchors

Version:

@eeacms/volto-anchors: Volto add-on

66 lines (57 loc) 1.85 kB
const fs = require('fs'); const path = require('path'); const projectRootPath = fs.realpathSync(__dirname + '/../../../'); let voltoPath = path.join(projectRootPath, 'node_modules/@plone/volto'); let configFile; if (fs.existsSync(`${projectRootPath}/tsconfig.json`)) configFile = `${projectRootPath}/tsconfig.json`; else if (fs.existsSync(`${projectRootPath}/jsconfig.json`)) configFile = `${projectRootPath}/jsconfig.json`; if (configFile) { const jsConfig = require(configFile).compilerOptions; const pathsConfig = jsConfig.paths; if (pathsConfig['@plone/volto']) voltoPath = `./${jsConfig.baseUrl}/${pathsConfig['@plone/volto'][0]}`; } const { AddonRegistry } = require('@plone/registry/addon-registry'); const { registry } = AddonRegistry.init(projectRootPath); // Extends ESlint configuration for adding the aliases to `src` directories in Volto addons const addonAliases = Object.keys(registry.packages).map((o) => [ o, registry.packages[o].modulePath, ]); const addonExtenders = registry.getEslintExtenders().map((m) => require(m)); const defaultConfig = { extends: `${voltoPath}/.eslintrc`, settings: { 'import/resolver': { alias: { map: [ ['@plone/volto', '@plone/volto/src'], ['@plone/volto-slate', '@plone/volto-slate/src'], ...addonAliases, ['@package', `${__dirname}/src`], ['@root', `${__dirname}/src`], ['~', `${__dirname}/src`], ], extensions: ['.js', '.jsx', '.json'], }, 'babel-plugin-root-import': { rootPathSuffix: 'src', }, }, }, rules: { 'react/jsx-no-target-blank': [ 'error', { allowReferrer: true, }, ], } }; const config = addonExtenders.reduce( (acc, extender) => extender.modify(acc), defaultConfig, ); module.exports = config;