Razzle: Заменить значения paths.js в razzle.config.js

Созданный на 28 июл. 2018  ·  12Комментарии  ·  Источник: jaredpalmer/razzle

Я хотел бы переместить каталог моего сервера в корень, чтобы моя файловая система выглядела так.

- / 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, чтобы я мог изменять пути, когда захочу?

Я был бы счастлив поработать над этим, если это кажется хорошей идеей, но, возможно, для этого уже есть решение, которое мне не хватает. Пожалуйста помоги :)

enhancement

Самый полезный комментарий

На моем радаре есть своего рода план 😀

Все 12 Комментарий

Привет! Итак, вот сделка между открытым исходным кодом и моей повседневной работой и жизнью, а также тем, что нет, мне есть чем управлять, поэтому я использую бота 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

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

kkarkos picture kkarkos  ·  3Комментарии

krazyjakee picture krazyjakee  ·  3Комментарии

ewolfe picture ewolfe  ·  4Комментарии

JacopKane picture JacopKane  ·  3Комментарии

charlie632 picture charlie632  ·  4Комментарии