mirror of
https://git.meshkee.com/cssd/cssd-back.git
synced 2026-10-10 22:21:06 +03:30
77 lines
2.1 KiB
JavaScript
Vendored
77 lines
2.1 KiB
JavaScript
Vendored
'use strict';
|
|
|
|
const webpack = require('webpack');
|
|
const createDomain = require('./createDomain');
|
|
|
|
function addEntries(config, options, server) {
|
|
if (options.inline !== false) {
|
|
// we're stubbing the app in this method as it's static and doesn't require
|
|
// a server to be supplied. createDomain requires an app with the
|
|
// address() signature.
|
|
|
|
const app = server || {
|
|
address() {
|
|
return { port: options.port };
|
|
},
|
|
};
|
|
|
|
const domain = createDomain(options, app);
|
|
const sockPath = options.sockPath ? `&sockPath=${options.sockPath}` : '';
|
|
const entries = [
|
|
`${require.resolve('../../client/')}?${domain}${sockPath}`,
|
|
];
|
|
|
|
if (options.hotOnly) {
|
|
entries.push(require.resolve('webpack/hot/only-dev-server'));
|
|
} else if (options.hot) {
|
|
entries.push(require.resolve('webpack/hot/dev-server'));
|
|
}
|
|
|
|
const prependEntry = (entry) => {
|
|
if (typeof entry === 'function') {
|
|
return () => Promise.resolve(entry()).then(prependEntry);
|
|
}
|
|
|
|
if (typeof entry === 'object' && !Array.isArray(entry)) {
|
|
const clone = {};
|
|
|
|
Object.keys(entry).forEach((key) => {
|
|
// entry[key] should be a string here
|
|
clone[key] = prependEntry(entry[key]);
|
|
});
|
|
|
|
return clone;
|
|
}
|
|
|
|
// in this case, entry is a string or an array.
|
|
// make sure that we do not add duplicates.
|
|
const entriesClone = entries.slice(0);
|
|
[].concat(entry).forEach((newEntry) => {
|
|
if (!entriesClone.includes(newEntry)) {
|
|
entriesClone.push(newEntry);
|
|
}
|
|
});
|
|
return entriesClone;
|
|
};
|
|
|
|
// eslint-disable-next-line no-shadow
|
|
[].concat(config).forEach((config) => {
|
|
config.entry = prependEntry(config.entry || './src');
|
|
|
|
if (options.hot || options.hotOnly) {
|
|
config.plugins = config.plugins || [];
|
|
if (
|
|
!config.plugins.find(
|
|
(plugin) =>
|
|
plugin.constructor === webpack.HotModuleReplacementPlugin
|
|
)
|
|
) {
|
|
config.plugins.push(new webpack.HotModuleReplacementPlugin());
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
module.exports = addEntries;
|