اذهب إلى المحتوى

السؤال

نشر

أحاول تحميل ملفات json مختلفة ، اعتمادًا على البيئة. بتعبير أدق ، أريد تحميل appsettings.development.json عندما يكون على NODE.ENV = "development" ، ثم استخدمه داخل الكتابة المطبوعة ككائن تكوين عام. أيضًا عندما يتغير NODE.ENV الخاص بي إلى "الإنتاج" ، أريد تحميل appsettings.production.json.

لقد قمت بالفعل بتكوين حزمة الويب لإصدارات مختلفة باستخدام ملفات مثل webpack.config.js و webpack.config.dev.js و webpack.config.prod.js.

إذا كان بإمكاني إضافة شيء مثل استيراد التكوين من `... / config. $ {NODE.ENV} .json` فسيكون ذلك مثاليًا؟

Recommended Posts

  • 1
نشر

يمكنك تمرير المسار النسبي لملف التكوين الخاص بك في package.json ، ثم استعادته في ملف webpack الخاص بك كما هو موضح في الكود التالي

//package.json
"dev": "webpack serve --env development conf=configs/local.json",
"stage": "webpack serve --env development conf=configs/stage.json", 
"build": "webpack --env production conf=configs/prod.json",

// webpack

module.exports = (env) => {
  const conf = path.resolve(process.cwd(), env.conf);
  return {
    mode: nodeEnv,
    entry: "./src/index.tsx",
    //... blabla
    }
}
    

كما تلاحظ في ملف package.json تم تمرير المسار النسبي لملف التكوين باستخدام الخاصية conf وتم استعادته في ملف webpack باستخدام path.resolve

  • 0
نشر

يمكنك استخدام المكتبة المساعدة dotenv

// webpack.config.js
const Dotenv = require('dotenv-webpack');

module.exports = {
  ...
  plugins: [
    new Dotenv()
  ]
  ...
};

لتحميل ملف على أساس البيئة ، يمكنك الاستفادة من process.env.NODE_ENV

// webpack.config.js
const Dotenv = require('dotenv-webpack');
const env = process.env.NODE_ENV;

module.exports = {
  ...
  plugins: [
    new Dotenv({
      path: `./.env.${env === "production" ? "prd" : "dev"}`,
    })
  ]
  ...
};

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...