mirror of
https://github.com/facebook/docusaurus.git
synced 2025-04-30 10:48:05 +02:00
75 lines
1.6 KiB
JavaScript
75 lines
1.6 KiB
JavaScript
const Config = require('webpack-chain');
|
|
const path = require('path');
|
|
|
|
const mdLoader = require.resolve('./loader/markdown');
|
|
|
|
module.exports = function createBaseConfig(props) {
|
|
const {
|
|
siteConfig,
|
|
outDir,
|
|
themePath,
|
|
docsDir,
|
|
pagesDir,
|
|
siteDir,
|
|
baseUrl
|
|
} = props;
|
|
|
|
const config = new Config();
|
|
const isProd = process.env.NODE_ENV === 'production';
|
|
|
|
config
|
|
.mode(isProd ? 'production' : 'development')
|
|
.output.path(outDir)
|
|
.filename(isProd ? 'bundle.js' : '[name].js')
|
|
.publicPath(isProd ? baseUrl : '/');
|
|
|
|
if (!isProd) {
|
|
config.devtool('cheap-module-eval-source-map');
|
|
}
|
|
|
|
config.resolve
|
|
.set('symlinks', true)
|
|
.alias.set('@theme', themePath)
|
|
.set('@site', siteDir)
|
|
.set('@docs', docsDir)
|
|
.set('@pages', pagesDir)
|
|
.set('@generated', path.resolve(__dirname, '../core/generated'))
|
|
.set('@core', path.resolve(__dirname, '../core'))
|
|
.end();
|
|
|
|
function applyBabel(rule) {
|
|
rule
|
|
.use('babel')
|
|
.loader('babel-loader')
|
|
.options({
|
|
babelrc: false,
|
|
presets: ['env', 'react']
|
|
});
|
|
}
|
|
|
|
const jsRule = config.module
|
|
.rule('js')
|
|
.test(/\.js$/)
|
|
.exclude.add(filepath => {
|
|
// Always transpile lib directory
|
|
if (filepath.startsWith(path.join(__dirname, '..'))) {
|
|
return false;
|
|
}
|
|
// Don't transpile node_modules
|
|
return /node_modules/.test(filepath);
|
|
})
|
|
.end();
|
|
|
|
applyBabel(jsRule);
|
|
|
|
const mdRule = config.module.rule('markdown').test(/\.md$/);
|
|
|
|
applyBabel(mdRule);
|
|
|
|
mdRule
|
|
.use('markdown-loader')
|
|
.loader(mdLoader)
|
|
.options({siteConfig});
|
|
|
|
return config;
|
|
};
|