Razzle: Remplacer les valeurs paths.js dans razzle.config.js

Créé le 28 juil. 2018  ·  12Commentaires  ·  Source: jaredpalmer/razzle

Je voudrais déplacer mon répertoire de serveur à la racine pour que mon système de fichiers ressemble à ceci.

-/src
-serveur
-...etc.

En fouillant dans razzle, il semble que babel et webpack obtiennent l'emplacement du code de

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

Le seul problème est que, comme les valeurs sont codées en dur, je ne peux pas les remplacer.

J'ai trouvé une solution de contournement en copiant la fonction resolveApp de razzle à razle.config.js

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

et en parcourant les règles et en fonction de l'environnement et de la configuration, je remplace la propriété include par mon chemin personnalisé, comme ceci ...

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

Cela semble vraiment hacky cependant. Serait-il possible d'abstraire les valeurs codées en dur dans paths.js aux variables d'environnement ou de les exposer dans la fonction createConfig afin que je puisse modifier les chemins quand je le souhaite ?

Je serais heureux de travailler là-dessus si cela semble être une bonne idée, mais peut-être qu'il y a déjà une solution pour cela qui me manque. S'il vous plaît aider :)

enhancement

Commentaire le plus utile

Sur mon radar, ayez une sorte de plan 😀

Tous les 12 commentaires

Hola ! Alors voici l'accord, entre l'open source et mon travail et ma vie quotidienne et tout le reste, j'ai beaucoup de choses à gérer, j'utilise donc un bot GitHub pour automatiser quelques choses ici et là. Ce bot GitHub particulier va marquer cela comme obsolète car il n'a pas eu d'activité récente depuis un certain temps. Il sera fermé s'il n'y a plus d'activité dans quelques jours. Ne prenez pas cela personnellement - au sérieux - il s'agit d'une action entièrement automatisée. S'il s'agit d'une erreur, faites simplement un commentaire, envoyez-moi un DM, envoyez un pigeon voyageur ou un signal de fumée.

Bien. J'ai déplacé mon serveur dans un nouveau dossier de serveur à l'intérieur de src
Et puis dans razzle.config.js éditez la config pour le serveur

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

Cela fonctionne bien mais il semble qu'après ce débogage (--inspect), nodejs soit cassé

Hola ! Alors voici l'accord, entre l'open source et mon travail et ma vie quotidienne et tout le reste, j'ai beaucoup de choses à gérer, j'utilise donc un bot GitHub pour automatiser quelques choses ici et là. Ce bot GitHub particulier va marquer cela comme obsolète car il n'a pas eu d'activité récente depuis un certain temps. Il sera fermé s'il n'y a plus d'activité dans quelques jours. Ne prenez pas cela personnellement - au sérieux - il s'agit d'une action entièrement automatisée. S'il s'agit d'une erreur, faites simplement un commentaire, envoyez-moi un DM, envoyez un pigeon voyageur ou un signal de fumée.

ProBot a automatiquement fermé cela en raison de l'inactivité. Holler si c'est une erreur, et nous la rouvrirons.

Ce problème n'aurait pas dû être clos.

J'utilise également des solutions de contournement pour définir un répertoire d'application différent, c'est un projet assez volumineux qui héberge le code API dans le même répertoire racine, et « src » est vraiment ambigu.

@nvma Pouvez-vous s'il vous plaît fournir un exemple pour définir un répertoire d'application différent ? Merci!

Je pense que c'est une question assez importante. Je serais prêt à soumettre un PR dès que possible si nous pouvons proposer une liste des répertoires _core_ qui devraient être configurables. Au départ, je dirais : build , src pour le client, src pour le serveur et public .

J'ai pu le résoudre dans ma configuration razzle/webpack.

Sur mon radar, ayez une sorte de plan 😀

Au cas où cela serait utile à quelqu'un d'autre, j'ai récemment dû le faire dans razzle.config.js et cela semble fonctionner

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

corrigé dans le développement

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

dizzyn picture dizzyn  ·  3Commentaires

piersolenski picture piersolenski  ·  4Commentaires

knipferrc picture knipferrc  ·  5Commentaires

panbanda picture panbanda  ·  5Commentaires

corydeppen picture corydeppen  ·  3Commentaires