জাভাস্ক্রিপ্ট: gulpfile.js এ প্যাকেজ.জসন ডেটা পান


101

প্রতি সেলে একটি ঝাঁকুনি-নির্দিষ্ট প্রশ্ন নয়, তবে একজন কীভাবে gulpfile.js এর মধ্যে প্যাকেজ.জসন ফাইল থেকে তথ্য পাবেন; উদাহরণস্বরূপ, আমি হোমপেজ বা নামটি পেতে এবং এটি কোনও কাজে ব্যবহার করতে চাই।

উত্তর:


116

require('./package.json')একটি ঘড়ি প্রক্রিয়া জন্য ব্যবহার করবেন না । ব্যবহারের requireফলে প্রথম অনুরোধের ফলাফল হিসাবে মডিউলটি সমাধান করা হবে। সুতরাং আপনি যদি আপনার প্যাকেজটি সম্পাদনা করছেন তবে আপনি যদি আপনার ঘড়ি প্রক্রিয়া বন্ধ না করে পুনরায় আরম্ভ না করেন তবে এই সম্পাদনাগুলি কাজ করবে না। গাল্প ওয়াচ প্রক্রিয়াটির জন্য বিটলিংয়েস্টের পদ্ধতিটি ব্যবহার করা ভাল হবে কারণ এটি ফাইলটি পুনরায় পড়বে এবং প্রতিবার আপনার কার্য সম্পাদন করার সময় পার্স করবে।

var fs = require('fs');

var json = JSON.parse(fs.readFileSync('./package.json'));

4
সম্মত হয়েছে যে "প্রয়োজনীয়" ফলাফলটি ক্যাশে করে (যদি আপনি আবার পড়ার / পরিবর্তন করতে / পড়তে চান তবে এটি অনুপযুক্ত)। যদিও এটি সব ক্ষেত্রে এটি একটি খারাপ সমাধান করে না। ওপি স্পষ্টভাবে উল্লেখ করেছে যে সে এর থেকে তথ্য পড়তে চেয়েছিল।
ম্যাংলেড দেউতজ

2
এটি ব্যবহার করা সম্ভব requireএবং এর সাথে ক্যাশে অপসারণ করা সম্ভবdelete require.cache[require.resolve(FILEPATH)];
curly_bracket

@ কেনেথবি আলাদা উত্তর হিসাবে কেন নয়? পর্যাপ্ত upvotes আরও গাড়ি চালাতে হবে।
কায়সার

138

এটি গুল্প নির্দিষ্ট নয়।

var p = require('./package.json')
p.homepage

হালনাগাদ:

সচেতন থাকুন যে "প্রয়োজনীয়" পড়ার ফলাফলগুলি ক্যাশে করবে - এর অর্থ আপনার প্রয়োজন হয় না, ফাইলটিতে লিখতে পারেন, তারপরে আবার প্রয়োজনীয় প্রয়োজন এবং ফলাফল আপডেট হওয়ার প্রত্যাশা করেন।


7
আমি যখন আপনার উত্তরটি দেখেছি তখন এটি সন্ধানের জন্য আমি অবশ্যই নির্বোধের মতো অনুভব করেছি। অবশ্যই!
স্পাইকেহীপ

1
আমার জন্য কাজ করেছেন: পি। এবং ক্যাশে সম্পর্কিত মন্তব্যের জন্য +1, আমি পরে নীচের দিকে নির্দেশিত অনুসারে 'fs.readFileSync () ব্যবহার করতে স্যুইচ করেছি।
বার্ট

@ স্পিকেহীপ আমি জানি না স্ট্যাকওভারফ্লোতে কোনও মন্তব্য পড়ার আগে আমি কখনই উচ্চস্বরে হেসেছি, তবে আমি সেখানে তোমার সাথে ছিলাম! চিয়ার্সের জন্য ধন্যবাদ হা হা।
বিট-কম

6

এটি ম্যাঙ্গলেড ডিউটজ একটি ভাল সমাধান। আমি নিজেই প্রথমে এটি করেছি কিন্তু এটি কার্যকর হয়নি (এক সেকেন্ডে ফিরে) তবে আমি এই সমাধানটি চেষ্টা করেছিলাম:

# Gulpfile.coffee
requireJSON = (file) ->
    fs = require "fs"
    JSON.parse fs.readFileSync file

এখন আপনার দেখতে হবে যে এটি কিছুটা ভার্বোজ (যদিও এটি কাজ করে)। require('./package.json')সবচেয়ে ভাল সমাধান:

ডগা

ফাইলের নামের সামনে './' যুক্ত করতে -আমরবার। আমি এর সহজ জানি, তবে এটি প্রয়োজনীয় পদ্ধতিতে কাজ করা এবং কাজ না করার মধ্যে পার্থক্য।


ধন্যবাদ! এটি মারাত্মকভাবে সাহায্য করেছিল।
অ্যাডাম গ্রান্ট

1
upvotes জন্য ধন্যবাদ, অবশেষে মন্তব্য আছে। :) খুশি এটা আপনাকে সাহায্য করেছে।
ডিভওয়াল্ড

0

আপনি যদি এনপিএম থেকে ঝাঁকুনির ট্রিগার করছেন, যেমন " এনপিএম রান বিল্ড " বা অন্য কোনও কিছু ব্যবহার করা

(এটি কেবল এনপিএম দ্বারা চালিত ট্রলারের জন্য কাজ করে)

process.env.npm_package_ অবজেক্ট

এটি গভীর বস্তুর জন্য আন্ডারস্কোর দ্বারা পৃথক করা উচিত।

আপনি যদি প্যাকেজ.জসনে কিছু নির্দিষ্ট কনফিগারেশন পড়তে চান তবে আপনি প্যাকেজ.জসনে তৈরি কনফিগার সামগ্রীটি পড়তে চান

scripts : {
   build: gulp 
},
config : {
   isClient: false.
}

তাহলে আপনি ব্যবহার করতে পারেন

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