我想将我的服务器目录移动到根目录中,这样我的文件系统就会像这样。
-/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);
并循环遍历规则并根据环境和配置,我将包含属性替换为我的自定义路径,就像这样......
appConfig.module.rules.map(rule => {
if (rule.include && rule.test) {
rule.include = [
resolveApp('server'),
resolveApp('src'),
];
}
})
虽然这感觉真的很hacky。 是否可以将 paths.js 中的硬编码值抽象为环境变量或在 createConfig 函数中公开它们,以便我可以随时更改路径?
如果这看起来是个好主意,我很乐意为此工作,但也许我已经缺少了解决方案。 请帮忙 :)
你好! 所以这就是开源和我的日常工作和生活之间的交易,我有很多事情要管理,所以我使用 GitHub 机器人在这里和那里自动化一些事情。 这个特定的 GitHub bot 会将其标记为过时,因为它有一段时间没有最近的活动。 如果几天内没有进一步的活动,它将被关闭。 不要把这当回事——说真的——这是一个完全自动化的动作。 如果这是一个错误,请发表评论,DM 我,发送载体 pidgeon 或烟雾信号。
好。 我将我的服务器移动到 src 内的新服务器文件夹
然后在 razzle.config.js 中编辑服务器的配置
config.entry.pop()
config.entry.push('./src/server')
它工作正常,但似乎在此调试(--inspect)nodejs 损坏后
你好! 所以这就是开源和我的日常工作和生活之间的交易,我有很多事情要管理,所以我使用 GitHub 机器人在这里和那里自动化一些事情。 这个特定的 GitHub bot 会将其标记为过时,因为它有一段时间没有最近的活动。 如果几天内没有进一步的活动,它将被关闭。 不要把这当回事——说真的——这是一个完全自动化的动作。 如果这是一个错误,请发表评论,DM 我,发送载体 pidgeon 或烟雾信号。
由于不活动,ProBot 自动关闭了它。 如果这是一个错误,请大喊大叫,我们将重新打开它。
这个问题不应该被关闭。
我还使用变通方法来设置不同的应用程序目录,这是一个非常大的项目,在同一根目录中托管 API 代码,而“src”确实不明确。
@nvma你能提供一个例子来设置不同的应用程序目录吗? 谢谢!
我认为这是一个非常重要的问题。 如果我们能提出应该可配置的 _core_ 目录列表,我愿意尽快提交 PR。 蝙蝠,我会说: 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"),
},
},
]
};
在开发中修复
最有用的评论
在我的雷达上,有一个计划 😀