Razzle: Ganti nilai paths.js di razzle.config.js

Dibuat pada 28 Jul 2018  ·  12Komentar  ·  Sumber: jaredpalmer/razzle

Saya ingin memindahkan dir server saya ke root sehingga sistem file saya akan terlihat seperti ini.

-/src
-server
-...dll.

Menggali dengan bingung, tampaknya babel dan webpack mendapatkan lokasi kode dari

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

Satu-satunya masalah adalah, karena nilainya dikodekan dengan keras, saya tidak dapat menimpanya.

Saya telah menemukan solusi dengan menyalin fungsi resolveApp dari razzle ke razle.config.js

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

dan mengulang melalui aturan dan tergantung pada lingkungan dan konfigurasi saya mengganti properti include dengan jalur kustom saya, seperti ...

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

Ini terasa benar-benar hacky. Apakah mungkin untuk mengabstraksi nilai kode keras di paths.js ke variabel lingkungan atau mengeksposnya dalam fungsi createConfig sehingga saya dapat mengubah jalur kapan pun saya mau?

Saya akan dengan senang hati mengerjakan ini jika itu tampak seperti ide yang bagus, tetapi mungkin sudah ada solusi untuk ini yang saya lewatkan. Tolong bantu :)

enhancement

Komentar yang paling membantu

Di radar saya, punya semacam rencana

Semua 12 komentar

Halo! Jadi inilah kesepakatannya, antara open source dan pekerjaan dan kehidupan sehari-hari saya dan apa yang tidak, saya memiliki banyak hal untuk dikelola, jadi saya menggunakan bot GitHub untuk mengotomatisasi beberapa hal di sana-sini. Bot GitHub khusus ini akan menandai ini sebagai basi karena tidak memiliki aktivitas baru-baru ini untuk sementara waktu. Ini akan ditutup jika tidak ada aktivitas lebih lanjut yang terjadi dalam beberapa hari. Jangan menganggap ini pribadi--serius--ini adalah tindakan yang sepenuhnya otomatis. Jika ini adalah kesalahan, cukup beri komentar, DM saya, kirim pidgeon pembawa, atau sinyal asap.

Sehat. Saya memindahkan server saya ke folder server baru di dalam src
Dan kemudian di razzle.config.js edit konfigurasi untuk server

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

Ini berfungsi dengan baik tetapi sepertinya setelah debugging ini (--inspect) nodejs rusak

Halo! Jadi inilah kesepakatannya, antara open source dan pekerjaan dan kehidupan sehari-hari saya dan apa yang tidak, saya memiliki banyak hal untuk dikelola, jadi saya menggunakan bot GitHub untuk mengotomatisasi beberapa hal di sana-sini. Bot GitHub khusus ini akan menandai ini sebagai basi karena tidak memiliki aktivitas baru-baru ini untuk sementara waktu. Ini akan ditutup jika tidak ada aktivitas lebih lanjut yang terjadi dalam beberapa hari. Jangan menganggap ini pribadi--serius--ini adalah tindakan yang sepenuhnya otomatis. Jika ini adalah kesalahan, cukup beri komentar, DM saya, kirim pidgeon pembawa, atau sinyal asap.

ProBot secara otomatis menutup ini karena tidak aktif. Holler jika ini adalah kesalahan, dan kami akan membukanya kembali.

Masalah ini seharusnya tidak ditutup.

Saya juga menggunakan solusi untuk mengatur direktori aplikasi yang berbeda, ini adalah proyek yang cukup besar yang menghosting kode API di direktori root yang sama, dan 'src' benar-benar ambigu.

@nvma Bisakah Anda memberikan contoh untuk mengatur direktori aplikasi yang berbeda? Terima kasih!

Saya pikir ini adalah masalah yang cukup penting. Saya bersedia mengirimkan PR ASAP jika kami dapat membuat daftar direktori _core_ yang harus dapat dikonfigurasi. Langsung saja, saya akan mengatakan: build , src untuk klien, src untuk server, dan public .

Saya dapat menyelesaikannya dalam konfigurasi razzle/webpack saya.

Di radar saya, punya semacam rencana

Jika ini berguna untuk orang lain, saya baru-baru ini harus melakukan ini di razzle.config.js dan sepertinya berhasil

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

diperbaiki di dev

Apakah halaman ini membantu?
0 / 5 - 0 peringkat