প্যাকেজ.জসনের মধ্যে থেকে পরিবেশের পরিবর্তনগুলি কীভাবে সেট করবেন


312

কিভাবে মধ্যে থেকে কিছু এনভায়রনমেন্ট ভেরিয়েবল সেট করতে package.jsonসঙ্গে ব্যবহার করা npm startকমান্ড মত?

আমার বর্তমানে যা আছে তা এখানে package.json:

{
  ...
  "scripts": {
    "help": "tagove help",
    "start": "tagove start"
  }
  ...
}

আমি সেট এনভায়রনমেন্ট ভেরিয়েবল (যেমন চাই NODE_ENV, এখনও মাত্র এক আদেশের সঙ্গে অ্যাপ্লিকেশানটিকে চালু করতে সক্ষম হচ্ছে শুরু লিপিতে) npm start


উত্তর:


432

স্ক্রিপ্ট কমান্ডে পরিবেশের পরিবর্তনশীল সেট করুন:

...
"scripts": {
  "start": "node app.js",
  "test": "env NODE_ENV=test mocha --reporter spec"
},
...

তারপরে process.env.NODE_ENVআপনার অ্যাপে ব্যবহার করুন।

দ্রষ্টব্য: envএটি প্ল্যাটফর্ম জুড়ে কাজ করে তা নিশ্চিত করে। আপনি যদি কেবল ম্যাক / লিনাক্সের বিষয়ে চিন্তা করেন তবে আপনি এটিকে বাদ দিতে পারেন।


65
কেউ কি উইন্ডোজের বিকল্প খুঁজে পেয়েছেন ..?
অনন্ত

65
@ ইনফিনিটি ক্রস- এনভিভ ব্যবহার করে এবং এটি ব্যবহার করা খুব সহজ।
মাইকিকেড্ডার

106
@ ইনফিনিটি ব্যবহার set NODE_ENV=test&& mocha --reporter spec- পরীক্ষার এবং উদ্দেশ্য নিয়ে && এর মধ্যে কোনও স্থান নেই।
জেমি পেনি

18
"test": "NODE_ENV=test mocha --reporter spec"উইন্ডোজ সিস্টেমে কাজ করবে না।
বেনি নিউজবাউয়ার

7
@ ইনফিনিটি @ জ্যামি-পেনি env NODE_ENV=test mocha --reporter specস্থানীয়ভাবে ক্রস প্ল্যাটফর্মের ফ্যাশনে ঘোষিত পরিবেশের পরিবর্তনশীল ব্যবহার করবে, তবে মূলটি হ'ল এনপিএম এটি কেবলমাত্র এনপিপি স্ক্রিপ্ট প্রয়োগের জন্য একটি অ্যাড-হক এবং এককালীন ফ্যাশনে এনএমপি ব্যবহার করে। (এটি ভবিষ্যতের রেফারেন্সের জন্য সেট করা বা রফতানি করা হয়নি)) যতক্ষণ আপনি এনএমপি স্ক্রিপ্ট থেকে আপনার কমান্ড চালাচ্ছেন, কোনও সমস্যা নেই। এছাড়াও, "&&" এটিকে এইভাবে করার সময় মুছে ফেলা আবশ্যক।
এস্তাপলস

219

কেবল এনপিএম প্যাকেজ ক্রস-এনভির ব্যবহার করুন । খুব সহজ। উইন্ডোজ, লিনাক্স এবং সমস্ত পরিবেশে কাজ করে। লক্ষ্য করুন যে আপনি পরবর্তী টাস্কে যাওয়ার জন্য && ব্যবহার করেন না। আপনি কেবল env সেট করেছেন এবং তারপরে পরবর্তী কাজটি শুরু করুন। এখানে মন্তব্যগুলির মধ্যে একটিতে পরামর্শের জন্য @ মাইকিকিদারকে ক্রেডিট করুন।

ডকুমেন্টেশন থেকে:

{
  "scripts": {
    "build": "cross-env NODE_ENV=production OTHERFLAG=myValue webpack --config build/webpack.config.js"
  }
}

লক্ষ্য করুন যে আপনি যদি একাধিক গ্লোবাল ভার সেট করতে চান তবে আপনি কেবল তাদের ক্রমবর্ধমানভাবে বর্ণনা করুন, তারপরে আপনার আদেশটি কার্যকর করা হবে।

শেষ পর্যন্ত, কমান্ডটি কার্যকর করা হয় (স্প্যান ব্যবহার করে):

webpack --config build/webpack.config.js

NODE_ENVএনভায়রনমেন্ট ভেরিয়েবল ক্রস env দ্বারা সেট করা হবে


ট্রিপল ব্যাকস্ল্যাশগুলি প্রয়োজনীয় উদ্ধৃতিগুলি এড়াতে ব্যবহার করা যেতে পারে:"test": "cross-env TS_NODE_COMPILER_OPTIONS='{\\\"module\\\":\\\"commonjs\\\"}' mocha"
বিভিজে

1
সর্বোত্তম সমাধান কারণ ক্রস প্ল্যাটফর্ম।
বার্নার্ডন

কেউ পরিশেষে সাহায্য করতে পারি আমাকে সিদ্ধান্ত নেন যদি আমি ব্যবহার করা উচিত envবা cross-env? একদিকে, এনভির জন্য আমার কোনও কিছু ইনস্টল করার দরকার নেই এবং অন্যদিকে cross-envআরও জনপ্রিয়। envসমস্ত প্ল্যাটফর্মে কাজ করে যদি কেউ দয়া করে নিশ্চিত করতে পারেন ?
রিশভ

2
@ রিশভ envসমস্ত প্ল্যাটফর্মে যেমন আছে তেমন কাজ করে না, সুতরাং cross-envঅস্তিত্বের কারণ । শুধু ব্যবহার করুন cross-envএবং এটি দিয়ে করা।
তেত্রদেব

37

আমি এখানে ভবিষ্যতের নোড-এক্সপ্লোরারদের জন্য আমার দুটি সেন্ট যুক্ত করতে চেয়েছিলাম। আমার উবুন্টু ১৪.০৪-তে NODE_ENV=testকাজ করেনি, আমাকে ব্যবহার করতে export NODE_ENV=testহয়েছিল যার পরে NODE_ENV=testখুব অদ্ভুত কাজ শুরু হয়েছিল।

উইন্ডোজে যেমন বলা হয়েছে যে আপনাকে ব্যবহার করতে হবে set NODE_ENV=testতবে ক্রস-প্ল্যাটফর্ম সমাধানের জন্য ক্রস-এনভি লাইব্রেরিটি কৌশলটি করত না বলে মনে হয় এবং এটি করার জন্য আপনার কি সত্যই একটি লাইব্রেরি দরকার:

export NODE_ENV=test || set NODE_ENV=test&& yadda yadda

উল্লম্ব বারগুলি যেমন প্রয়োজন হয় অন্যথায় উইন্ডোজ অচেনা export NODE_ENVকমান্ডে ক্র্যাশ হয়ে থাকে : ডি। পূর্ববর্তী স্থান সম্পর্কে ডান্নো তবে কেবল সেগুলি আমি সরিয়ে দিয়েছি তা নিশ্চিত হতে।


6
তুমি কি ব্যবহার করেছিলে && ? NODE_ENV=test yaddaমানে হলো "রান yadda, সেটিং NODE_ENVমধ্যে yadda। এনভায়রনমেন্ট ভেরিয়েবল এর NODE_ENV=test && yaddaমানে হলো" সেট NODE_ENVস্থানীয় পরিবেশের মধ্যে, কিন্তু রপ্তানি না, তারপর চালানো yadda"। NODE_ENV=test yaddaপছন্দের পন্থা।
জোশ কেলি

দুঃখিত যে কিছুক্ষণের মধ্যে আমার স্ট্যাকওভারফ্লো অ্যাকাউন্টটি চেক করে নি। তবে মূলত নির্বোধ উইন্ডোজ ব্যবহার করে NODE_ENV=test && npm run testবা এরকম কিছু ব্যবহার করে না । আমি process.env["NODE_ENV"] = "testing";আমার টেস্টহেল্পার.জেএস ফাইলটি ব্যবহার করে আরও ভাল সমাধান করেছি।
TeemuK

5
@ টিমুক কেবল আমার দুটি সেন্ট যুক্ত করার জন্য, যখন আপনি আপনার কমান্ডটি চালান যখন &&আপনার পরিবেশের ভেরিয়েবলগুলি হারিয়ে যায়, রফতানি ছাড়াই পরিবেশের ভেরিয়েবলগুলি সেট করে কেবল বর্তমান কমান্ডে কাজ করে (যা কিছুই নয়)। তোমার দর্শন লগ করা রপ্তানী ছাড়া env পরিবর্তনশীল সঙ্গে কমান্ড চালানোর জন্য একটি করুন: NODE_ENV=test npm run test। আপনার রফতানির পরে অবশেষে যে কারণে এটি কাজ করেছিল তার কারণ হ'ল ইউর ভেরিয়েবলটি এখন সেশনে উপলব্ধ (রফতানি করা), রফতানি ব্যতীত আপনার NODE_ENV কিছুই করতে চাইছে না।
তারেক

37

যেহেতু আমি প্রায়শই নিজেকে একাধিক এনভায়রনমেন্ট ভেরিয়েবলের সাথে কাজ করতে দেখি, সেগুলি একটি পৃথক .envফাইলে রাখা আপনার পক্ষে দরকারী মনে হয় (এটি আপনার উত্স নিয়ন্ত্রণ থেকে এড়ানো নিশ্চিত করুন)।

VAR_A=Hello World
VAR_B=format the .env file like this with new vars separated by a line break

তারপরে প্রিপেন্ড করুন export $(cat .env | xargs) && আপনার স্ক্রিপ্ট কমান্ডের আগে ।

উদাহরণ:

{
  ...
  "scripts": {
    ...
    "start": "export $(cat .env | xargs) && echo do your thing here",
    "env": "export $(cat .env | xargs) && env",
    "env-windows": "export $(cat .env | xargs) && set"
  }
  ...
}

একটি পরীক্ষার জন্য আপনি চালিয়ে npm run env(লিনাক্স) বা npm run env-windows(উইন্ডো) এনভেরি ভেরিয়েবলগুলি দেখতে পারেন ।


তবে কমান্ড চালানোর জন্য আমি কীভাবে VAR_A ব্যবহার করব?
ভ্যালরব

খুব ভাল, এটি প্রায় আমার জন্য কাজটি করেছে! আমি কয়েকটি মন্তব্য যুক্ত করতে চাই: - আপনার .env ফাইলে খালি লাইন থাকতে পারে না - আপনার .env ফাইলে মন্তব্যগুলি আপনার স্ক্রিপ্টটি ভেঙে দেবে - যদি একাধিক স্ক্রিপ্ট একই .env ফাইলটি ব্যবহার করে, আপনাকে সেই পুনরাবৃত্তি করতে হবে - &&এটি কাজ করার আগে আমাকে স্থানটি সরিয়ে ফেলতে হয়েছিল - আপনার একাধিক .env ফাইল থাকলে আপনার উত্তর বজায় রাখা কিছুটা কঠিন হতে পারে আপনার পরামর্শটি এই পরামর্শটি প্রস্তুত করতে অনুপ্রাণিত হয়েছে: stackoverflow.com/questions/25112510/…
ফিলিপ এন মৌরা

19

প্রতিস্থাপন করে উইন্ডোজে এটি ব্যবহার করে দেখুন YOURENV:

  {
    ...
     "scripts": {
       "help": "set NODE_ENV=YOURENV && tagove help",
       "start": "set NODE_ENV=YOURENV && tagove start"
     }
    ...
  }

1
হ্যাঁ! ধন্যবাদ! এই উত্তরটি আমি খুঁজছিলাম! : ডি
ড্যানিয়েল টোনন

6
আমাকে && এর আগে জায়গাটি সরিয়ে ফেলতে হয়েছিল।
কেনেথ সলবার্গ

@ KennethSolberg এর মন্তব্য চূড়ান্ত স্পর্শ এটি আমার জন্য কাজ করা হয় (কেবলমাত্র উইন্ডোগুলি)
Ulu

আমারও স্পেস ইস্যু ছিল। স্ট্রিংয়ের দৈর্ঘ্য লগিংয়ের সময় আমি স্থানটি যুক্ত করার কথা বলতে পারি। আমি পালাতে উদ্ধৃতি দেওয়ার চেষ্টা করেছি - এবং সেগুলি আসলে এনভরে সংরক্ষণ করা হয়েছিল। আমি অন্য সীমানা বিহীনদের চেষ্টা করেছিলাম। স্থানটি সরিয়ে নেওয়া বা মানটি ছাঁটাই করা, যা আমার কাছে ভুল বলে মনে হচ্ছে, এই সমস্যাটির একমাত্র উপায়।
নিল গাই লিন্ডবার্গ

8

হঠাৎ করে আমি দেখতে পেলাম যে অ্যাকশনিরো নিম্নলিখিত কোডগুলি ব্যবহার করছে, যা আমার --NODE_ENV=productionস্ক্রিপ্ট কমান্ড বিকল্পটি কেবল স্টার্ট স্ক্রিপ্ট দিয়েই সমাধান করেছে ।

if(argv['NODE_ENV'] != null){
  api.env = argv['NODE_ENV'];
} else if(process.env.NODE_ENV != null){
  api.env = process.env.NODE_ENV;
}

আমি প্যাকেজ.জসন বা আরআইডি স্ক্রিপ্টে বা পরিবেশের পরিবর্তনগুলি সেট করার আরও ভাল উপায় জেনে এমন কারও উত্তর গ্রহণ করার জন্য আমি সত্যিই প্রশংসা করব, যেখানে অ্যাপটি অন্য কারও দ্বারা বুটস্ট্র্যাপ করে।


4

এনভায়রনমেন্ট ভেরিয়েবলের বৃহত্তর সেটগুলির জন্য বা আপনি যখন সেগুলি পুনরায় ব্যবহার করতে চান আপনি ব্যবহার করতে পারেন env-cmd

./.env ফাইল:

# This is a comment
ENV1=THANKS
ENV2=FOR ALL
ENV3=THE FISH

./package.json:

{
  "scripts": {
    "test": "env-cmd mocha -R spec"
  }
}

আপনি স্ক্রিপ্টে কীভাবে ENV1 ব্যবহার করবেন?
ভ্যালরব

যথারীতিprocess.env.ENV1
কারাসজি ইস্তভেন

কিন্তু, প্যাকেজ.জসনের ভিতরে? আমি পড়েছি যা অসম্ভব (?)
ভ্যালরব

আমি বুঝতে পারছি না। তুমি ওটা কেন করবে?
কারাসজি ইস্তভান

সম্ভবত একটি নির্বোধ এপ্রোচ, তবে আমি ম্যাকোস ক্যাটালিনা আপডেট করেছি এবং এখন মংডোব কমান্ডটি কাজ করছে না, তাই আমার ডেটা / ফোল্ডারটি নির্দিষ্ট করতে হবে mongod --dbpath ~/data/db। আমি এর মতো কিছু চালাতে চাই npm mongodbএবং এটি পরিবেশের পরিবর্তনশীল ডিবিপাথ পাবে এবং মন্ডডবটি ঠিক যথারীতি চালাবে ... এবং .. আমি এটি অন্য সদস্যদের সাথে ভাগ করতে চাই।
ভ্যালরব

2

যদিও প্রশ্নের সরাসরি উত্তর না দিলেও আমি অন্যান্য উত্তরের উপরে একটি ধারণা ভাগ করতে চাই। আমি যা পেয়েছি তা থেকে ক্রস প্ল্যাটফর্মের স্বাধীনতা অর্জনের জন্য কিছুটা জটিলতার প্রস্তাব দেওয়া হবে।

আমার দৃশ্যে আমি যা চেয়েছিলাম, মূলত, জেডাব্লুটি প্রমাণীকরণের মাধ্যমে সার্ভারকে সুরক্ষিত করা হবে কিনা তা নিয়ন্ত্রণের জন্য একটি পরিবর্তনশীল সেট করতে (বিকাশের উদ্দেশ্যে)

উত্তরগুলি পড়ার পরে আমি যথাযথভাবে চালু এবং বন্ধ করে যথাক্রমে 2 টি পৃথক ফাইল তৈরি করার সিদ্ধান্ত নিয়েছি।

  "scripts": {
    "dev": "nodemon --debug  index_auth.js",
    "devna": "nodemon --debug  index_no_auth.js",
  }

ফাইলগুলি কেবল মোড়কযুক্ত যা মূল সূচক.জেএস ফাইলকে কল করে (যা আমি নাম দিয়েছি appbootstrapper.js):

//index_no_auth.js authentication turned off
const bootstrapper = require('./appbootstrapper');
bootstrapper(false);

//index_auth.js authentication turned on
const bootstrapper = require('./appbootstrapper');
bootstrapper(true);

class AppBootStrapper {

    init(useauth) {
        //real initialization
    }
}

সম্ভবত এটি অন্য কাউকে সাহায্য করতে পারে



2

এটি উইন্ডোজ কনসোলে কাজ করবে :

"scripts": {
  "aaa": "set TMP=test && npm run bbb",
  "bbb": "echo %TMP%"
}

npm run aaa

আউটপুট: test

বিস্তারিত জানার জন্য এই উত্তরটি দেখুন ।


5
হওয়া উচিত set TMP=test&& npm run bbb। আগের &&স্পেসটি তখনকার NODE_ENVস্ট্রিংয়ের অংশ হিসাবেও আবদ্ধ হবে
ফিজনান

@ ফিসনান আপনি কোট দিয়ে এটি ঘিরে থাকলে ঘটনাটি হওয়া উচিত নয় "
কায়সার

1

আপনার মধ্যে ENV ভেরিয়েবল সেট করা উচিত নয় package.json। অ্যাকশনহিরো NODE_ENVআপনাকে কনফিগারেশন বিকল্পগুলি পরিবর্তন করতে দেয় যা ফাইলগুলি থেকে লোড হয় ./config। পরীক্ষা করে দেখুন redis কনফিগ ফাইল , এবং দেখুন কিভাবে NODE_ENV পরিবর্তন ডাটাবেসের অপশন ব্যবহার করেNODE_ENV=test

আপনি যদি জিনিসগুলি সেট করতে অন্য ENV ভেরিয়েবলগুলি ব্যবহার করতে চান (সম্ভবত HTTP পোর্ট), আপনার এখনও কিছু পরিবর্তন করার দরকার নেই package.json। উদাহরণস্বরূপ, আপনি PORT=1234ENV এ সেট করে থাকেন এবং এটি HTTP পোর্ট হিসাবে ব্যবহার করতে চান NODE_ENV=production, কেবলমাত্র প্রাসঙ্গিক কনফিগারেশন ফাইলটিতে, IE:

# in config/servers/web.js
exports.production = { 
  servers: {
    web: function(api){
      return {
       port: process.env.PORT
      }
    }
  }
}

মহান। আমি মনে করি আপনি আমার প্রশ্নটি পড়েন নি .. আমার সমস্যাটি হ'ল NODE_ENV কীভাবে সেট করা যায় এটির কী ব্যবহার হয় তা নয়।
dev.meghraj

1
আপনি যদি একাধিক পরিবেশের বৈশিষ্ট্য নির্ধারণ করতে চান তবে আপনি npm startকমান্ডটিতে এটি করবেন না । উপরে স্নিপেট ব্যবহার করে, আপনি ENV বন্দর ব্যবহার করে আপনার সার্ভার চালানোর জন্য চেয়েছিলেন এটা হতে চাই: export PORT=1234; npm start। আপনি যতটা ENV ঘোষণা আপনার প্রয়োজন হিসাবে সংযোজন করতে পারেন তবে সেগুলি প্যাকেজ.জসন ফাইলে নেই। আপনি কি নিশ্চিতরূপে উপার্জন সম্পর্কে উদ্বিগ্ন হন থাকলে সেগুলি আপনি আপনার কনফিগ ফাইলে ডিফল্ট-গুলি ব্যবহার করা উচিত: port: process.env.PORT || 8080
টনি

1
সম্ভবত এটি ব্যাখ্যা করার একটি বিকল্প উপায় হ'ল NODE_ENV (এবং অন্যান্য পরিবেশের ভেরিয়েবল) পরিবেশের অংশ (তাই নাম)। এগুলি সাধারণত আপনি যে অ্যাপ্লিকেশনটি প্রয়োগ করছেন তার পরিবর্তে যে সার্ভারটি চালাচ্ছেন তার বৈশিষ্ট্য are আপনি যে আদেশটি কার্যকর করেছেন তার মাধ্যমে আপনি সেগুলি ম্যানুয়ালি সেট করতে পারেন, যেমন: NODE_ENV=test npm startবা শেল দ্বারা সেট করে রেখেছেন
ইভান

3
আমি একমত নই প্রতিটি অ্যাপ্লিকেশন জন্য একটি। এটি একটি পুরানো দর্শন যা আপনাকে যখন প্রয়োজন হয় তখন নতুন ধরণের পরিবেশ কাটাতে দেয় না। আপনি যে প্রতিটি নতুন পরিবেশ চান তার জন্য IE, আপনাকে একটি। কোডফিগ যুক্ত করতে হবে। আপনার প্রযুক্তি স্ট্যাকের আরও নমনীয়তার প্রয়োজন হলে রানটাইমে পরিবেশের ভেরিয়েবলগুলি সেট করা একটি উন্নত বিকল্প হতে পারে। আমি মনে করি আপনার ./config "প্রকারের" পরিবেশ নির্ধারণের জন্য ভাল হবে তবে আপনি রানটাইমে ডিএসএন স্ট্রিং এবং এপিআই শেষ পয়েন্টগুলির মতো জিনিসগুলি সংজ্ঞায়িত করতে পারলে আপনার অ্যাপ্লিকেশনটি আরও নমনীয় হবে।
জেসি গ্রেটহাউস

@ জেসগ্রাটহাউস - আমার একটি নোড.জেএস অ্যাপ্লিকেশন রয়েছে এবং রানটাইমের সময় পরিবেশের পরিবর্তনশীলগুলি সেট করা দরকার - আমি কোন ফাইলটি সেট করব?
রজার ডজার

1

এনপিএম (এবং সুতা) প্যাকেজ.জসন থেকে পরিবেশের ভেরিয়েবল হিসাবে স্ক্রিপ্টগুলিতে প্রচুর ডেটা পাস করে । npm run envতাদের সব দেখতে ব্যবহার করুন । এটি https://docs.npmjs.com/misc/scriptts#en পরিবেশে নথিভুক্ত এবং এটি কেবল "লাইফসাইकल" স্ক্রিপ্টগুলির জন্য নয়, prepublishতবে কোনও স্ক্রিপ্ট দ্বারা কার্যকর করা হয়npm run

আপনি এই অভ্যন্তরীণ কোডটি অ্যাক্সেস করতে পারেন (যেমন process.env.npm_package_config_portজেএস তে) তবে সেগুলি ইতিমধ্যে স্ক্রিপ্টগুলি চালিত শেলের জন্য উপলভ্য যাতে আপনি এগুলি হিসাবে অ্যাক্সেস করতে পারেন$npm_... "স্ক্রিপ্টস" (ইউনিক্স সিনট্যাক্স, উইন্ডোতে কাজ নাও করতে পারে) এর আকার ।

"কনফিগ" বিভাগে এই ব্যবহারের জন্য দেয়ার উদ্দেশ্যে মনে হচ্ছে:

  "name": "myproject",
  ...
  "config": {
    "port": "8010"
  },
  "scripts": {
    "start": "node server.js $npm_package_config_port",
    "test": "wait-on http://localhost:$npm_package_config_port/ && node test.js http://localhost:$npm_package_config_port/"
  } 

এই "কনফিগারেশন" ক্ষেত্রগুলির একটি গুরুত্বপূর্ণ গুণটি হ'ল ব্যবহারকারীরা প্যাকেজ.জেসন পরিবর্তন না করে সেগুলি ওভাররাইড করতে পারে !

$ npm run start

> myproject@0.0.0 start /home/cben/mydir
> node server.js $npm_package_config_port

Serving on localhost:8010

$ npm config set myproject:port 8020
$ git diff package.json  # no change!
$ cat ~/.npmrc
myproject:port=8020

$ npm run start

> myproject@0.0.0 start /home/cben/mydir
> node server.js $npm_package_config_port

Serving on localhost:8020

দেখুন npm কনফিগ এবং সুতা কনফিগ ডক্স।
এটি প্রদর্শিত হয় যে সুতাটি ~/.npmrcএতটা npm config setউভয়কেই প্রভাবিত করে, তবে yarn config setলিখেছেন ~/.yarnrc, তাই কেবল সুতা এটি দেখতে পাবে :-(


1

@ লুকের উত্তরটি আমার প্রায় প্রয়োজন ছিল! ধন্যবাদ।

যেহেতু নির্বাচিত উত্তরটি খুব সোজা (এবং সঠিক), তবে পুরানো, আমি আপনার স্ক্রিপ্টগুলি চালাবার সময় এবং লুকের উত্তরের কিছু সীমাবদ্ধতা স্থির করার সময় একটি .env পৃথক ফাইল থেকে ভেরিয়েবলগুলি আমদানির বিকল্প প্রস্তাব করতে চাই। এটা চেষ্টা কর:

::: .এনভি ফাইল :::

# This way, you CAN use comments in your .env files
NODE_PATH="src/"

# You can also have extra/empty lines in it
SASS_PATH="node_modules:src/styles"

তারপরে, আপনার প্যাকেজ জসনে, আপনি একটি স্ক্রিপ্ট তৈরি করবেন যা ভেরিয়েবলগুলি সেট করবে এবং আপনার প্রয়োজনীয় স্ক্রিপ্টগুলির আগে এটি চালাবে:

::: প্যাকেজ.জসন :::

scripts: {
  "set-env": "export $(cat .env | grep \"^[^#;]\" |xargs)",
  "storybook": "npm run set-env && start-storybook -s public"
}

কিছু পর্যবেক্ষণ:

  • গ্রেপ'এড বিড়াল কমান্ডের নিয়মিত অভিব্যক্তি মন্তব্য এবং খালি লাইনগুলি সাফ করবে।

  • &&হতে প্রয়োজন হবে না "glued" থেকে npm run set-envযেমন যদি আপনি একই কমান্ড মধ্যে ভেরিয়েবলের মান স্থাপনার ছিল প্রয়োজনীয় হবে।

  • আপনি যদি সুতা ব্যবহার করছেন তবে আপনি একটি সতর্কতা দেখতে পাচ্ছেন, আপনি হয় এটি পরিবর্তন yarn set-envবা ব্যবহার করতে পারেনnpm run set-env --scripts-prepend-node-path && পরিবর্তে ।

বিভিন্ন পরিবেশ

এটি ব্যবহার করার সময় আরেকটি সুবিধা হ'ল আপনার বিভিন্ন পরিবেশের ভেরিয়েবল থাকতে পারে।

scripts: {
  "set-env:production": "export $(cat .production.env | grep \"^[^#;]\" |xargs)",
  "set-env:development": "export $(cat .env | grep \"^[^#;]\" |xargs)",
}

দয়া করে মনে রাখবেন যখন আপনার গিট সংগ্রহস্থলগুলিতে .env ফাইলগুলি যুক্ত না করা থাকে যখন আপনার মধ্যে কী, পাসওয়ার্ড বা বুদ্ধিমান / ব্যক্তিগত ডেটা থাকে!


1

উইন্ডোতে গিট ব্যাশ ব্যবহার করুন। গিট ব্যাশ প্রসেসগুলি সেন্টিমিটারের চেয়ে আলাদাভাবে আদেশ দেয়।

আপনি NODE_ENV = এর মতো প্রডাকশন দিয়ে পরিবেশের ভেরিয়েবল সেট করলে বেশিরভাগ উইন্ডোজ কমান্ড প্রম্পটকে দম বন্ধ করে দেবে। (ব্যতিক্রম উইন্ডোজে ব্যাশ, যা নেটিভ ব্যাশ ব্যবহার করে)) একইভাবে, উইন্ডোজ এবং পসিক্স কমান্ড কীভাবে পরিবেশের ভেরিয়েবল ব্যবহার করে। পসিক্সের সাহায্যে আপনি ব্যবহার করুন: $ ENV_VAR এবং উইন্ডোতে আপনি% ENV_VAR% ব্যবহার করেন। - ক্রস-এনভিভি ডক

{
  ...
  "scripts": {
    "help": "tagove help",
    "start": "env NODE_ENV=production tagove start"
  }
  ...
}

এনভ ভেরিয়েবলগুলি ঘোষণার জন্য ডটেনভ প্যাকেজ ব্যবহার করুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.