Skip to content

Commit

Permalink
revert: revert async config loading as Babel cannot support it proper…
Browse files Browse the repository at this point in the history
…ly yet
  • Loading branch information
Viktor Vincze committed Jun 8, 2020
1 parent 6d47e9c commit cefd74d
Show file tree
Hide file tree
Showing 34 changed files with 242 additions and 280 deletions.
8 changes: 4 additions & 4 deletions src/bin/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@ yargs

// Register commands
try {
loadCommands().then(() => {
// Initialize yargs
yargs.argv
})
loadCommands()
} catch (e) {
console.error('FATAL: Could not register.', e)
process.exit(1)
}

// Initialize yargs
yargs.argv
7 changes: 3 additions & 4 deletions src/configs/babel/root/plugins.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import path from 'path'

import _mhyConfig from '@/configs/mhy'
import mhyConfig from '@/configs/mhy'

export default async (defaults = []) => {
const mhyConfig = await _mhyConfig
export default (defaults = []) => {
const r = [
...defaults,
require.resolve('babel-plugin-macros'),
Expand All @@ -29,7 +28,7 @@ export default async (defaults = []) => {
// Node process will use `module-resolve`
if (!process.argv.some(v => !!v.match(/(webpack|storybook|nodeProcessSetup)/))) {
const isBabel = process.argv.some(v => v.includes('babel'))
const alias = Object.entries(mhyConfig.defaultAliases).reduce(function(acc, [key, entry]) {
const alias = Object.entries(mhyConfig.defaultAliases).reduce(function (acc, [key, entry]) {
// Leave alone every path which is outside cwd
const e = path.resolve(entry)
if (!e.includes(process.cwd())) {
Expand Down
4 changes: 2 additions & 2 deletions src/configs/babel/write.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import FileTypes from '@/utils/fileTypes'
import { writeFile } from '@/utils'
import babelConfig from '@/configs/babel'

const writeConfig = async (dir = __dirname, format = FileTypes.JSON_NO_EXT, overwrite) => {
return writeFile(dir, '.babelrc', await babelConfig, format, overwrite)
const writeConfig = (dir = __dirname, format = FileTypes.JSON_NO_EXT, overwrite) => {
return writeFile(dir, '.babelrc', babelConfig, format, overwrite)
}

export default writeConfig
4 changes: 2 additions & 2 deletions src/configs/eslint/write.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import FileTypes from '@/utils/fileTypes'
import { writeFile } from '@/utils'
import eslintConfig from '@/configs/eslint'

const writeConfig = async (dir = process.cwd(), format = FileTypes.JSON_NO_EXT, overwrite) => {
return writeFile(dir, '.eslintrc', await eslintConfig, format, overwrite)
const writeConfig = (dir = process.cwd(), format = FileTypes.JSON_NO_EXT, overwrite) => {
return writeFile(dir, '.eslintrc', eslintConfig, format, overwrite)
}

export default writeConfig
2 changes: 1 addition & 1 deletion src/configs/gitignore/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import mhyConfig from '@/configs/mhy'
import { loadConfig } from '@/utils'

const gitignore = loadConfig('gitignore', async () => ['/dist', '/build', ...(await mhyConfig).defaultIgnoreList])
const gitignore = loadConfig('gitignore', ['/dist', '/build', ...mhyConfig.defaultIgnoreList])

export default gitignore
4 changes: 2 additions & 2 deletions src/configs/gitignore/write.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import FileTypes from '@/utils/fileTypes'
import { writeFile } from '@/utils'
import gitignore from '@/configs/gitignore'

const writeConfig = async (dir = process.cwd(), format = FileTypes.RAW, overwrite) => {
return writeFile(dir, '.gitignore', (await gitignore).join('\n'), format, overwrite)
const writeConfig = (dir = process.cwd(), format = FileTypes.RAW, overwrite) => {
return writeFile(dir, '.gitignore', gitignore.join('\n'), format, overwrite)
}

export default writeConfig
57 changes: 27 additions & 30 deletions src/configs/jest/index.js
Original file line number Diff line number Diff line change
@@ -1,37 +1,34 @@
import path from 'path'

import { loadConfig } from '@/utils'
import _mhyConfig from '@/configs/mhy'
import mhyConfig from '@/configs/mhy'

const jestConfig = loadConfig('jest', async () => {
const mhyConfig = await _mhyConfig
return {
setupFilesAfterEnv: [path.resolve(__dirname, './setup.js')],
rootDir: process.cwd(),
roots: [path.resolve(process.cwd(), mhyConfig.srcFolder)],
watchPathIgnorePatterns: ['__.*__'],
moduleFileExtensions: ['js', 'jsx', 'json', 'ts', 'tsx'],
modulePaths: [
path.resolve(process.cwd(), mhyConfig.srcFolder),
path.resolve(process.cwd(), 'node_modules'),
path.resolve(__dirname, '../../../node_modules')
],
transform: {
'^.+\\.[jt]sx?$': require.resolve('./preprocess')
},
transformIgnorePatterns: [],
bail: true,
testRegex: '\\.?(test|tests|spec|integration)\\.[jt]sx?$',
collectCoverage: false,
verbose: true,
moduleNameMapper: {
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': 'identity-obj-proxy',
'\\.(s?css|less)$': 'identity-obj-proxy',
'\\.(svgx?)$': path.resolve(__dirname, 'mocks/react-null.js')
},
collectCoverageFrom: ['**/*.js'],
watchPlugins: process.env.MHY_ENV === 'ui' ? [path.resolve(__dirname, 'mhyWatchPlugin')] : []
}
const jestConfig = loadConfig('jest', {
setupFilesAfterEnv: [path.resolve(__dirname, './setup.js')],
rootDir: process.cwd(),
roots: [path.resolve(process.cwd(), mhyConfig.srcFolder)],
watchPathIgnorePatterns: ['__.*__'],
moduleFileExtensions: ['js', 'jsx', 'json', 'ts', 'tsx'],
modulePaths: [
path.resolve(process.cwd(), mhyConfig.srcFolder),
path.resolve(process.cwd(), 'node_modules'),
path.resolve(__dirname, '../../../node_modules')
],
transform: {
'^.+\\.[jt]sx?$': require.resolve('./preprocess')
},
transformIgnorePatterns: [],
bail: true,
testRegex: '\\.?(test|tests|spec|integration)\\.[jt]sx?$',
collectCoverage: false,
verbose: true,
moduleNameMapper: {
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': 'identity-obj-proxy',
'\\.(s?css|less)$': 'identity-obj-proxy',
'\\.(svgx?)$': path.resolve(__dirname, 'mocks/react-null.js')
},
collectCoverageFrom: ['**/*.js'],
watchPlugins: process.env.MHY_ENV === 'ui' ? [path.resolve(__dirname, 'mhyWatchPlugin')] : []
})

export default jestConfig
4 changes: 2 additions & 2 deletions src/configs/jest/write.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import FileTypes from '@/utils/fileTypes'
import { writeFile } from '@/utils'
import jestConfig from '@/configs/jest'

const writeConfig = async (dir = process.cwd(), format = FileTypes.JS, overwrite) => {
return writeFile(dir, 'jest.config', await jestConfig, format, overwrite)
const writeConfig = (dir = process.cwd(), format = FileTypes.JS, overwrite) => {
return writeFile(dir, 'jest.config', jestConfig, format, overwrite)
}

export default writeConfig
6 changes: 3 additions & 3 deletions src/configs/npmignore/index.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import mhyConfig from '@/configs/mhy'
import { loadConfig } from '@/utils'

const npmignore = loadConfig('npmignore', async () => ([
const npmignore = loadConfig('npmignore', [
'.circleci',
'/docker',
'/src',
'/build',
'/docs',
'book.json',
...(await mhyConfig).defaultIgnoreList
]))
...mhyConfig.defaultIgnoreList
])

export default npmignore
4 changes: 2 additions & 2 deletions src/configs/npmignore/write.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import FileTypes from '@/utils/fileTypes'
import { writeFile } from '@/utils'
import npmignore from '@/configs/npmignore'

const writeConfig = async (dir = process.cwd(), format = FileTypes.RAW, overwrite) => {
return writeFile(dir, '.npmignore', (await npmignore).join('\n'), format, overwrite)
const writeConfig = (dir = process.cwd(), format = FileTypes.RAW, overwrite) => {
return writeFile(dir, '.npmignore', npmignore.join('\n'), format, overwrite)
}

export default writeConfig
4 changes: 2 additions & 2 deletions src/configs/prettier/write.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import FileTypes from '@/utils/fileTypes'
import { writeFile } from '@/utils'
import prettierConfig from '@/configs/prettier/index'

const writeConfig = async (dir = process.cwd(), format = FileTypes.JSON_NO_EXT, overwrite) => {
const writeConfig = (dir = process.cwd(), format = FileTypes.JSON_NO_EXT, overwrite) => {
let filename
switch (format) {
case FileTypes.JS:
Expand All @@ -13,7 +13,7 @@ const writeConfig = async (dir = process.cwd(), format = FileTypes.JSON_NO_EXT,
default:
filename = '.prettierrc'
}
return writeFile(dir, filename, await prettierConfig, format, overwrite)
return writeFile(dir, filename, prettierConfig, format, overwrite)
}

export default writeConfig
5 changes: 2 additions & 3 deletions src/configs/storybook/.storybook/webpack.config.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import _mhyWP from '@/configs/webpack'
import mhyWP from '@/configs/webpack'

export default async ({ config }) => {
const mhyWP = await _mhyWP
export default ({ config }) => {
mhyWP.resolve.modules = [...config.resolve.modules, ...mhyWP.resolve.modules]
mhyWP.resolve.alias = {
...mhyWP.resolve.alias,
Expand Down
34 changes: 16 additions & 18 deletions src/configs/storybook/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,27 @@ import fs from 'fs'
import { loadConfig } from '@/utils'
import mhyConfig from '@/configs/mhy'

const setSrcFolder = async () => {
const setSrcFolder = () => {
const data = fs
.readFileSync(path.resolve(__dirname, '_config.js'), 'utf8')
.replace(/'src'/g, JSON.stringify(path.resolve(process.cwd(), (await mhyConfig).srcFolder)))
.replace(/'src'/g, JSON.stringify(path.resolve(process.cwd(), mhyConfig.srcFolder)))
fs.writeFileSync(path.resolve(__dirname, '.storybook', 'config.js'), data, 'utf8')
}

export default loadConfig('storybook', async () => {
// Whenever this config is being called, we will create a fresh config.js file with the correct
// src folder name, because Webpack needs to be able to statically analyze it
// Whenever this config is being called, we will create a fresh config.js file with the correct
// src folder name, because Webpack needs to be able to statically analyze it
setSrcFolder()

await setSrcFolder()
return {
start: {
port: 9000,
host: 'localhost',
'static-dir': null,
'config-dir': path.resolve(__dirname, '.storybook')
},
build: {
'static-dir': null,
'config-dir': path.resolve(__dirname, '.storybook'),
'output-dir': path.resolve(process.cwd(), '.sb')
}
export default loadConfig('storybook', {
start: {
port: 9000,
host: 'localhost',
'static-dir': null,
'config-dir': path.resolve(__dirname, '.storybook')
},
build: {
'static-dir': null,
'config-dir': path.resolve(__dirname, '.storybook'),
'output-dir': path.resolve(process.cwd(), '.sb')
}
})
81 changes: 39 additions & 42 deletions src/configs/typescript/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,53 +2,50 @@ import fs from 'fs'
import path from 'path'

import { loadConfig } from '@/utils'
import _mhyConfig from '@/configs/mhy'
import mhyConfig from '@/configs/mhy'

const _globalTypes = path.resolve(__dirname, '../../../node_modules', '@types')
const _cwdTypes = path.join(process.cwd(), 'node_modules', '@types')

const tsconfig = loadConfig('typescript', async () => {
const mhyConfig = await _mhyConfig
return {
compilerOptions: {
module: 'esNext',
target: 'esnext',
moduleResolution: 'node',
allowJs: false,
emitDeclarationOnly: true,
strict: true,
jsx: 'preserve',
resolveJsonModule: true,
esModuleInterop: true,
noImplicitAny: false,
declaration: true,
baseUrl: path.resolve(process.cwd(), mhyConfig.srcFolder),
skipLibCheck: true,
incremental: true,
outDir: mhyConfig.srcFolder,
paths: Object.entries(mhyConfig.defaultAliases).reduce(
function (acc, [k, p]) {
// It's already a path
if (!fs.existsSync(p)) {
p = path.resolve(process.cwd(), p)
} else {
// Make sure it's a resolved path indeed
p = path.resolve(p)
}
acc[k] = [path.join(p, 'index')]
acc[`${k}/*`] = [path.join(p, '*')]
return acc
},
{
'*': [path.resolve(process.cwd(), 'node_modules', '*'), path.resolve(_globalTypes, '../', '*')]
const tsconfig = loadConfig('typescript', {
compilerOptions: {
module: 'esNext',
target: 'esnext',
moduleResolution: 'node',
allowJs: false,
emitDeclarationOnly: true,
strict: true,
jsx: 'preserve',
resolveJsonModule: true,
esModuleInterop: true,
noImplicitAny: false,
declaration: true,
baseUrl: path.resolve(process.cwd(), mhyConfig.srcFolder),
skipLibCheck: true,
incremental: true,
outDir: mhyConfig.srcFolder,
paths: Object.entries(mhyConfig.defaultAliases).reduce(
function (acc, [k, p]) {
// It's already a path
if (!fs.existsSync(p)) {
p = path.resolve(process.cwd(), p)
} else {
// Make sure it's a resolved path indeed
p = path.resolve(p)
}
),
typeRoots: [_globalTypes, _cwdTypes]
},
include: [path.resolve(process.cwd(), `${mhyConfig.srcFolder}/**/*`)],
exclude: ['node_modules'],
files: [path.resolve(__dirname, './mhy.d.ts')]
}
acc[k] = [path.join(p, 'index')]
acc[`${k}/*`] = [path.join(p, '*')]
return acc
},
{
'*': [path.resolve(process.cwd(), 'node_modules', '*'), path.resolve(_globalTypes, '../', '*')]
}
),
typeRoots: [_globalTypes, _cwdTypes]
},
include: [path.resolve(process.cwd(), `${mhyConfig.srcFolder}/**/*`)],
exclude: ['node_modules'],
files: [path.resolve(__dirname, './mhy.d.ts')]
})

export default tsconfig
4 changes: 2 additions & 2 deletions src/configs/typescript/write.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import FileTypes from '@/utils/fileTypes'
import { writeFile } from '@/utils'
import tsconfig from '@/configs/typescript'

const writeConfig = async (dir = process.cwd(), format = FileTypes.JSON, overwrite) =>
writeFile(dir, 'tsconfig', await tsconfig, format, overwrite)
const writeConfig = (dir = process.cwd(), format = FileTypes.JSON, overwrite) =>
writeFile(dir, 'tsconfig', tsconfig, format, overwrite)

export default writeConfig
4 changes: 2 additions & 2 deletions src/configs/webpack/development/plugins.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ import mhyConfig from '@/configs/mhy'
const { HotModuleReplacementPlugin } = require('webpack')
const HtmlWebpackPlugin = require('html-webpack-plugin')

export default async (plugins = []) => {
export default (plugins = []) => {
plugins = [
new HtmlWebpackPlugin({
inject: true,
template: (await mhyConfig).indexHtml
template: mhyConfig.indexHtml
})
].concat(plugins)
if (process.env.WEBPACK_DEV_SERVER) {
Expand Down
4 changes: 2 additions & 2 deletions src/configs/webpack/production/plugins.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import mhyConfig from '@/configs/mhy'
const HtmlWebpackPlugin = require('html-webpack-plugin')

export default async (plugins = []) =>
export default (plugins = []) =>
[
new HtmlWebpackPlugin({
inject: true,
template: (await mhyConfig).indexHtml,
template: mhyConfig.indexHtml,
minify: {
removeComments: true,
collapseWhitespace: true,
Expand Down
Loading

0 comments on commit cefd74d

Please sign in to comment.