1
0
Fork 0
freesewing/sites/shared/config/next.mjs

101 lines
3.1 KiB
JavaScript
Raw Normal View History

2021-12-11 14:04:05 +01:00
import path from 'path'
import { readdirSync } from 'fs'
import remarkGfm from 'remark-gfm'
2022-06-17 12:02:09 +02:00
import { designs, plugins, packages } from '../../../config/software/index.mjs'
const getDirectories = source =>
readdirSync(source, { withFileTypes: true })
.filter(dirent => dirent.isDirectory())
.map(dirent => dirent.name)
const pkgs = getDirectories(path.resolve(`../`))
/*
* This mehthod will return the NextJS configuration
* Parameters:
*
* site: one of 'dev', 'org', or 'lab'
* remarkPlugins: Array of remark plugins to load
* srcPkgs: Array of folders in the monorepo/packages that should be aliased
* so they are loaded from source, rather than from a compiled bundle
*/
const config = (site, remarkPlugins=[]) => ({
experimental: {
externalDir: true,
},
2022-06-19 18:17:20 +00:00
pageExtensions: [ 'js', 'md', 'mjs' ],
webpack: (config, options) => {
// Fixes npm packages that depend on node modules
if (!options.isServer) {
config.resolve.fallback.fs = false
2021-12-11 14:04:05 +01:00
config.resolve.fallback.path = false
config.resolve.fallback.child_process = false
}
// MDX support
config.module.rules.push({
test: /\.md?$/,
use: [
options.defaultLoaders.babel,
{
loader: '@mdx-js/loader',
//providerImportSource: '@mdx-js/react',
options: {
remarkPlugins: [
remarkGfm,
...remarkPlugins,
]
}
}
]
})
2021-12-11 14:04:05 +01:00
// YAML support
config.module.rules.push({
test: /\.ya?ml$/,
use: 'yaml-loader'
})
// Fix for nextjs bug #17806
config.module.rules.push({
test: /index.mjs$/,
type: "javascript/auto",
resolve: {
fullySpecified: false
}
})
2022-06-17 12:02:09 +02:00
// Suppress warnings about importing version from package.json
// We'll deal with it in v3 of FreeSewing
config.ignoreWarnings = [
/only default export is available soon/
]
2021-12-11 14:04:05 +01:00
// Aliases
2022-06-17 12:02:09 +02:00
config.resolve.alias.shared = path.resolve('../shared/')
config.resolve.alias.site = path.resolve(`../${site}/`)
2021-12-18 09:54:53 +01:00
config.resolve.alias.markdown = path.resolve(`../../markdown/${site}/`)
2022-06-17 12:02:09 +02:00
config.resolve.alias.config = path.resolve('../../config/')
config.resolve.alias.designs = path.resolve('../../designs/')
config.resolve.alias.plugins = path.resolve('../../plugins/')
config.resolve.alias.pkgs = path.resolve('../../packages/')
// Load designs from source, rather than compiled package
for (const design in designs) {
config.resolve.alias[`@freesewing/${design}$`] = path.resolve(`../../designs/${design}/src/index.js`)
}
// Load plugins from source, rather than compiled package
for (const plugin in plugins) {
config.resolve.alias[`@freesewing/${plugin}$`] = path.resolve(`../../plugins/${plugin}/src/index.js`)
}
// Load these from source, rather than compiled package
for (const pkg of ['core', 'config-helpers', 'i18n', 'models']) {
config.resolve.alias[`@freesewing/${pkg}$`] = path.resolve(`../../packages/${pkg}/src/index.js`)
}
2021-12-11 14:04:05 +01:00
return config
}
2021-12-11 14:04:05 +01:00
})
export default config