|
|
|
@ -1,13 +1,12 @@ |
|
|
|
|
// Note: You must restart bin/webpack-dev-server for changes to take effect
|
|
|
|
|
|
|
|
|
|
const { existsSync } = require('fs'); |
|
|
|
|
const webpack = require('webpack'); |
|
|
|
|
const { basename, dirname, join, relative, resolve } = require('path'); |
|
|
|
|
const { sync } = require('glob'); |
|
|
|
|
const ExtractTextPlugin = require('extract-text-webpack-plugin'); |
|
|
|
|
const ManifestPlugin = require('webpack-manifest-plugin'); |
|
|
|
|
const extname = require('path-complete-extname'); |
|
|
|
|
const { env, settings, output, loadersDir } = require('./configuration.js'); |
|
|
|
|
const { env, settings, themes, output, loadersDir } = require('./configuration.js'); |
|
|
|
|
const localePackPaths = require('./generateLocalePacks'); |
|
|
|
|
|
|
|
|
|
const extensionGlob = `**/*{${settings.extensions.join(',')}}*`; |
|
|
|
@ -18,17 +17,27 @@ const entryPacks = [...packPaths, ...localePackPaths].filter(path => path !== jo |
|
|
|
|
const customApplicationStyle = resolve(join(settings.source_path, 'styles/custom.scss')); |
|
|
|
|
const originalApplicationStyle = resolve(join(settings.source_path, 'styles/application.scss')); |
|
|
|
|
|
|
|
|
|
const themePaths = Object.keys(themes).reduce( |
|
|
|
|
(themePaths, name) => { |
|
|
|
|
themeData = themes[name]; |
|
|
|
|
themePaths[`themes/${name}`] = resolve(themeData.pack_directory, themeData.pack); |
|
|
|
|
return themePaths; |
|
|
|
|
}, {} |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
module.exports = { |
|
|
|
|
entry: entryPacks.reduce( |
|
|
|
|
(map, entry) => { |
|
|
|
|
const localMap = map; |
|
|
|
|
let namespace = relative(join(entryPath), dirname(entry)); |
|
|
|
|
if (namespace === join('..', '..', '..', 'tmp', 'packs')) { |
|
|
|
|
namespace = ''; // generated by generateLocalePacks.js
|
|
|
|
|
} |
|
|
|
|
localMap[join(namespace, basename(entry, extname(entry)))] = resolve(entry); |
|
|
|
|
return localMap; |
|
|
|
|
}, {} |
|
|
|
|
entry: Object.assign( |
|
|
|
|
entryPacks.reduce( |
|
|
|
|
(map, entry) => { |
|
|
|
|
const localMap = map; |
|
|
|
|
let namespace = relative(join(entryPath), dirname(entry)); |
|
|
|
|
if (namespace === join('..', '..', '..', 'tmp', 'packs')) { |
|
|
|
|
namespace = ''; // generated by generateLocalePacks.js
|
|
|
|
|
} |
|
|
|
|
localMap[join(namespace, basename(entry, extname(entry)))] = resolve(entry); |
|
|
|
|
return localMap; |
|
|
|
|
}, {} |
|
|
|
|
), themePaths |
|
|
|
|
), |
|
|
|
|
|
|
|
|
|
output: { |
|
|
|
@ -59,10 +68,6 @@ module.exports = { |
|
|
|
|
], |
|
|
|
|
|
|
|
|
|
resolve: { |
|
|
|
|
alias: { |
|
|
|
|
'mastodon-application-style': existsSync(customApplicationStyle) ? |
|
|
|
|
customApplicationStyle : originalApplicationStyle, |
|
|
|
|
}, |
|
|
|
|
extensions: settings.extensions, |
|
|
|
|
modules: [ |
|
|
|
|
resolve(settings.source_path), |
|
|
|
|