Razzle: تجاوز قيم paths.js في razzle.config.js

تم إنشاؤها على ٢٨ يوليو ٢٠١٨  ·  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')),
};

المشكلة الوحيدة ، لأن القيم مشفرة بشكل ثابت ، لا يمكنني تجاوزها.

لقد توصلت إلى حل عن طريق نسخ وظيفة حل التطبيق من razzle إلى razle.config.js

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

والتكرار من خلال القواعد واعتمادًا على البيئة والتكوين ، استبدل خاصية التضمين بمسار مخصص ، مثل ...

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

هذا يبدو حقا مبتذلة بالرغم من ذلك. هل من الممكن استخلاص القيم المشفرة الثابتة في paths.js إلى متغيرات البيئة أو عرضها في وظيفة createConfig حتى أتمكن من تغيير المسارات متى أردت؟

سأكون سعيدًا للعمل على هذا إذا بدت فكرة جيدة ، ولكن ربما يكون هناك حل لهذا بالفعل وأنا مفقود. الرجاء المساعدة :)

enhancement

التعليق الأكثر فائدة

على راداري ، لدي نوع من الخطة 😀

ال 12 كومينتر

أولا! إذن ، هذه هي الصفقة ، بين المصدر المفتوح وعملي اليومي وحياتي وما هو غير ذلك ، لدي الكثير لأديره ، لذلك أستخدم روبوت GitHub لأتمتة بعض الأشياء هنا وهناك. سيحدد برنامج GitHub bot هذا على أنه قديم لأنه لم يكن لديه نشاط حديث لفترة من الوقت. سيتم إغلاقه إذا لم يحدث أي نشاط آخر في غضون أيام قليلة. لا تأخذ هذا على محمل الجد - فهذا إجراء آلي بالكامل. إذا كان هذا خطأ ، فما عليك سوى تقديم تعليق أو إرسال رسالة مباشرة إليّ أو إرسال حامل ناقل أو إشارة دخان.

حسنا. لقد قمت بنقل الخادم الخاص بي إلى مجلد خادم جديد داخل src
ثم في razzle.config.js قم بتحرير التكوين للخادم

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

إنه يعمل بشكل جيد ولكن يبدو أنه بعد تعطل nodejs التصحيح (--inspect)

أولا! إذن ، هذه هي الصفقة ، بين المصدر المفتوح وعملي اليومي وحياتي وما هو غير ذلك ، لدي الكثير لأديره ، لذلك أستخدم روبوت GitHub لأتمتة بعض الأشياء هنا وهناك. سيحدد برنامج GitHub bot هذا على أنه قديم لأنه لم يكن لديه نشاط حديث لفترة من الوقت. سيتم إغلاقه إذا لم يحدث أي نشاط آخر في غضون أيام قليلة. لا تأخذ هذا على محمل الجد - فهذا إجراء آلي بالكامل. إذا كان هذا خطأ ، فما عليك سوى تقديم تعليق أو إرسال رسالة مباشرة إليّ أو إرسال حامل ناقل أو إشارة دخان.

أغلق 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"),
      },
    },
  ]
};

ثابت في ديف

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

kkarkos picture kkarkos  ·  3تعليقات

Jayphen picture Jayphen  ·  4تعليقات

JacopKane picture JacopKane  ·  3تعليقات

ewolfe picture ewolfe  ·  4تعليقات

howardya picture howardya  ·  5تعليقات