Razzle: Path.js-Werte in razzle.config.js überschreiben

Erstellt am 28. Juli 2018  ·  12Kommentare  ·  Quelle: jaredpalmer/razzle

Ich möchte mein Serververzeichnis in das Root-Verzeichnis verschieben, damit mein Dateisystem so aussieht.

-/src
-Server
-...etc.

Wenn man in Razzle gräbt, scheint es, dass Babel und Webpack den Ort des Codes von . erhalten

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')),
};

Das einzige Problem ist, dass ich sie nicht überschreiben kann, da die Werte hart codiert sind.

Ich habe eine Lösung gefunden, indem ich die Funktion "resolveApp" von razzle in razle.config.js kopiert habe

const appDirectory = fs.realpathSync(process.cwd());
const resolveApp = relativePath => path.resolve(appDirectory, relativePath);

und das Durchlaufen von Regeln und je nach Umgebung und Konfiguration ersetze ich die include-Eigenschaft durch meinen benutzerdefinierten Pfad, wie so ...

      appConfig.module.rules.map(rule => {
        if (rule.include && rule.test) {
          rule.include = [
            resolveApp('server'),
            resolveApp('src'),
          ];
        }
      })

Das fühlt sich aber wirklich hackig an. Wäre es möglich, die hartcodierten Werte in path.js zu Umgebungsvariablen zu abstrahieren oder sie in der Funktion createConfig verfügbar zu machen, damit ich die Pfade jederzeit ändern kann?

Ich würde gerne daran arbeiten, wenn es eine gute Idee scheint, aber vielleicht gibt es dafür schon eine Lösung, die mir fehlt. Bitte helft :)

enhancement

Hilfreichster Kommentar

Auf meinem Radar habe ich einen Plan 😀

Alle 12 Kommentare

Hallo! Hier ist also der Deal, zwischen Open Source und meinem täglichen Job und Leben und was nicht, ich habe viel zu verwalten, also verwende ich einen GitHub-Bot, um hier und da ein paar Dinge zu automatisieren. Dieser spezielle GitHub-Bot wird dies als veraltet markieren, da er seit einiger Zeit keine Aktivität mehr hatte. Es wird geschlossen, wenn in einigen Tagen keine Aktivität mehr stattfindet. Nehmen Sie dies nicht persönlich – ernst – dies ist eine vollständig automatisierte Aktion. Wenn dies ein Fehler ist, machen Sie einfach einen Kommentar, senden Sie mir eine DM, senden Sie eine Brieftaube oder ein Rauchzeichen.

Brunnen. Ich habe meinen Server in einen neuen Serverordner in src verschoben
Und dann in razzle.config.js die Konfiguration für den Server bearbeiten

config.entry.pop()
config.entry.push('./src/server')

Es funktioniert gut, aber es scheint, als ob nach diesem Debugging (--inspect) nodejs kaputt ist

Hallo! Hier ist also der Deal, zwischen Open Source und meinem täglichen Job und Leben und was nicht, ich habe viel zu verwalten, also verwende ich einen GitHub-Bot, um hier und da ein paar Dinge zu automatisieren. Dieser spezielle GitHub-Bot wird dies als veraltet markieren, da er seit einiger Zeit keine Aktivität mehr hatte. Es wird geschlossen, wenn in einigen Tagen keine Aktivität mehr stattfindet. Nehmen Sie dies nicht persönlich – ernst – dies ist eine vollständig automatisierte Aktion. Wenn dies ein Fehler ist, machen Sie einfach einen Kommentar, senden Sie mir eine DM, senden Sie eine Brieftaube oder ein Rauchzeichen.

ProBot hat dies aufgrund von Inaktivität automatisch geschlossen. Holler, wenn dies ein Fehler ist, und wir werden es wieder öffnen.

Dieses Problem hätte nicht geschlossen werden dürfen.

Ich verwende auch Problemumgehungen, um ein anderes Anwendungsverzeichnis festzulegen, es ist ein ziemlich großes Projekt, das API-Code im selben Stammverzeichnis hostet, und 'src' ist wirklich mehrdeutig.

@nvma Können Sie bitte ein Beispiel zum

Ich denke, das ist ein ziemlich wichtiges Thema. Ich wäre bereit, so schnell wie möglich eine PR einzureichen, wenn wir eine Liste der _core_-Verzeichnisse erstellen können, die konfigurierbar sein sollten. Auf Anhieb würde ich sagen: build , src für den Client, src für den Server und public .

Ich konnte es in meiner Razzle / Webpack-Konfiguration lösen.

Auf meinem Radar habe ich einen Plan 😀

Falls es für jemand anderen nützlich ist, musste ich dies kürzlich in razzle.config.js tun und es scheint zu funktionieren

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"),
      },
    },
  ]
};

in dev behoben

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

sebmor picture sebmor  ·  4Kommentare

jcblw picture jcblw  ·  4Kommentare

mhuggins picture mhuggins  ·  3Kommentare

piersolenski picture piersolenski  ·  4Kommentare

knipferrc picture knipferrc  ·  5Kommentare