Razzle: Anular los valores de paths.js en razzle.config.js

Creado en 28 jul. 2018  ·  12Comentarios  ·  Fuente: jaredpalmer/razzle

Me gustaría mover el directorio de mi servidor a la raíz para que mi sistema de archivos se vea así.

- / src
-servidor
-... etc.

Excavando alboroto, parece que babel y webpack están obteniendo la ubicación del código 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')),
};

El único problema es que, debido a que los valores están codificados de forma rígida, no puedo anularlos.

Se me ocurrió una solución copiando la función resolveApp de razzle a razle.config.js

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

y recorriendo las reglas y, según el entorno y la configuración, reemplazo la propiedad de inclusión con mi ruta personalizada, así ...

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

Sin embargo, esto se siente realmente horrible. ¿Sería posible abstraer los valores codificados en paths.js a variables de entorno o exponerlos en la función createConfig para que pueda cambiar las rutas cuando quiera?

Me encantaría trabajar en esto si parece una buena idea, pero tal vez ya haya una solución para esto que me falta. Por favor ayuda :)

enhancement

Comentario más útil

En mi radar, tengo una especie de plan 😀

Todos 12 comentarios

¡Hola! Así que aquí está el trato, entre el código abierto y mi trabajo diario y mi vida y lo que no, tengo mucho que administrar, así que uso un bot de GitHub para automatizar algunas cosas aquí y allá. Este bot de GitHub en particular lo marcará como obsoleto porque no ha tenido actividad reciente durante un tiempo. Se cerrará si no se realizan más actividades en unos días. No se lo tome personalmente, en serio, es una acción completamente automatizada. Si esto es un error, simplemente haga un comentario, envíeme un mensaje de texto, envíe un pidgeon portador o una señal de humo.

Bien. Moví mi servidor a la nueva carpeta del servidor dentro de src
Y luego en razzle.config.js edite la configuración para el servidor

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

Funciona bien pero parece que después de esta depuración (--inspect) nodejs se rompe

¡Hola! Así que aquí está el trato, entre el código abierto y mi trabajo diario y mi vida y lo que no, tengo mucho que administrar, así que uso un bot de GitHub para automatizar algunas cosas aquí y allá. Este bot de GitHub en particular lo marcará como obsoleto porque no ha tenido actividad reciente durante un tiempo. Se cerrará si no se realizan más actividades en unos días. No se lo tome personalmente, en serio, es una acción completamente automatizada. Si esto es un error, simplemente haga un comentario, envíeme un mensaje de texto, envíe un pidgeon portador o una señal de humo.

ProBot lo cerró automáticamente debido a la inactividad. Grita si esto es un error y lo volveremos a abrir.

Este problema no debería haberse resuelto.

También estoy usando soluciones alternativas para configurar un directorio de aplicación diferente, es un proyecto bastante grande que aloja código API en el mismo directorio raíz y 'src' es realmente ambiguo.

@nvma ¿Puede proporcionar un ejemplo para configurar un directorio de aplicación diferente? ¡Gracias!

Creo que este es un tema bastante importante. Estaría dispuesto a enviar un PR lo antes posible si podemos crear una lista de los directorios _core_ que deberían ser configurables. Desde el principio, diría: build , src para el cliente, src para el servidor y public .

Pude resolverlo en mi configuración de razzle / webpack.

En mi radar, tengo una especie de plan 😀

En caso de que sea útil para otra persona, recientemente tuve que hacer esto en razzle.config.js y parece funcionar

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

arreglado en dev

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

jcblw picture jcblw  ·  4Comentarios

howardya picture howardya  ·  5Comentarios

Jayphen picture Jayphen  ·  4Comentarios

pseudo-su picture pseudo-su  ·  3Comentarios

kkarkos picture kkarkos  ·  3Comentarios