Я хотел бы переместить каталог моего сервера в корень, чтобы моя файловая система выглядела так.
- / src
-сервер
-...так далее.
Копаясь в razzle, кажется, что babel и webpack получают местоположение кода из
module.exports = {
dotenv: resolveApp('.env'),
appPath: resolveApp('.'),
appBuild: resolveApp('build'),
appBuildPublic: resolveApp('build/public'),
appManifest: resolveApp('build/assets.json'),
appPublic: resolveApp('public'),
appNodeModules: resolveApp('node_modules'),
appSrc: resolveApp('src'),
appPackageJson: resolveApp('package.json'),
appServerIndexJs: resolveApp('src'),
appClientIndexJs: resolveApp('src/client'),
testsSetup: resolveApp('src/setupTests.js'),
appBabelRc: resolveApp('.babelrc'),
appEslintRc: resolveApp('.eslintrc'),
appRazzleConfig: resolveApp('razzle.config.js'),
nodePaths: nodePaths,
ownPath: resolveOwn('.'),
ownNodeModules: resolveOwn('node_modules'),
publicUrl: getPublicUrl(resolveApp('package.json')),
servedPath: getServedPath(resolveApp('package.json')),
};
Единственная проблема в том, что значения жестко запрограммированы, и я не могу их переопределить.
Я придумал работу, скопировав функцию resolveApp из razzle в razle.config.js
const appDirectory = fs.realpathSync(process.cwd());
const resolveApp = relativePath => path.resolve(appDirectory, relativePath);
и перебирая правила, и в зависимости от среды и конфигурации я заменяю свойство include на свой собственный путь, например, так ...
appConfig.module.rules.map(rule => {
if (rule.include && rule.test) {
rule.include = [
resolveApp('server'),
resolveApp('src'),
];
}
})
Хотя это кажется действительно хакерским. Можно ли абстрагировать жестко закодированные значения в paths.js для переменных среды или выставить их в функции createConfig, чтобы я мог изменять пути, когда захочу?
Я был бы счастлив поработать над этим, если это кажется хорошей идеей, но, возможно, для этого уже есть решение, которое мне не хватает. Пожалуйста помоги :)
Привет! Итак, вот сделка между открытым исходным кодом и моей повседневной работой и жизнью, а также тем, что нет, мне есть чем управлять, поэтому я использую бота GitHub для автоматизации некоторых вещей здесь и там. Этот конкретный бот GitHub будет отмечать это как устаревшее, потому что в последнее время в нем не было активности. Он будет закрыт, если в течение нескольких дней не будет никакой активности. Не принимайте это на свой счет - серьезно - это полностью автоматизированное действие. Если это ошибка, просто оставьте комментарий, отправьте мне DM, отправьте курьера или дымовой сигнал.
Хорошо. Я переместил свой сервер в новую папку сервера внутри src
А затем в razzle.config.js отредактируйте конфиг для сервера
config.entry.pop()
config.entry.push('./src/server')
Он работает нормально, но похоже, что после этой отладки (--inspect) nodejs сломан
Привет! Итак, вот сделка между открытым исходным кодом и моей повседневной работой и жизнью, а также тем, что нет, мне есть чем управлять, поэтому я использую бота GitHub для автоматизации некоторых вещей здесь и там. Этот конкретный бот GitHub будет отмечать это как устаревшее, потому что в последнее время в нем не было активности. Он будет закрыт, если в течение нескольких дней не будет никакой активности. Не принимайте это на свой счет - серьезно - это полностью автоматизированное действие. Если это ошибка, просто оставьте комментарий, отправьте мне DM, отправьте курьера или дымовой сигнал.
ProBot автоматически закрыл это из-за бездействия. Сообщите, если это ошибка, и мы снова откроем его.
Этот вопрос нельзя было закрывать.
Я также использую обходные пути для установки другого каталога приложения, это довольно большой проект, в котором код API размещается в том же корневом каталоге, и src действительно неоднозначен.
@nvma Не могли бы вы привести пример для установки другого каталога приложения? Спасибо!
Я считаю, что это очень важный вопрос. Я был бы готов отправить PR как можно скорее, если бы мы могли составить список каталогов _core_, которые следует настраивать. С самого начала я бы сказал: build
, src
для клиента, src
для сервера и public
.
Я смог решить это в моей конфигурации razzle / webpack.
На моем радаре есть своего рода план 😀
В случае, если это будет полезно для кого-то еще, мне недавно пришлось сделать это в razzle.config.js
и, похоже, это сработало.
const defaultOptions = {
server: null,
client: null,
};
function modifyEntryPoints(baseConfig, env, webpack, userOptions = {}) {
const options = { ...defaultOptions, ...userOptions };
const webpackConfig = { ...baseConfig };
const { client, server } = options;
/* This is required to rename the entry points instead of using the defaults */
if (env.target === "node" && server) {
webpackConfig.entry = [server];
}
if (env.target !== "node" && client) {
webpackConfig.entry.client = client;
}
return webpackConfig;
}
module.exports = {
plugins: [
{
func: modifyEntryPoints,
options: {
server: path.join(__dirname, "./src/docker-server"),
client: path.join(__dirname, "./src/docker-client"),
},
},
]
};
исправлено в dev
Самый полезный комментарий
На моем радаре есть своего рода план 😀