Bnlang প্যাকেজ ম্যানেজার (BPM)

BPM Bnlang-এর অফিসিয়াল প্যাকেজ ম্যানেজার। এটি আপনার প্রজেক্টে দু'টি ফাইল ম্যানেজ করে:

  • bnl.json — প্রজেক্ট ম্যানিফেস্ট: নাম, সংস্করণ, ডিপেন্ডেন্সি, মেইন এন্ট্রি পয়েন্ট।
  • bnl.lock — জেনারেটেড লকফাইল, যা প্রতিটি ডাইরেক্ট ও ট্রানজিটিভ ডিপেন্ডেন্সিকে একটি কংক্রিট সংস্করণ + integrity হ্যাশে পিন করে।

প্যাকেজ ডিফল্টভাবে লোকাল ./deps/ ফোল্ডারে ইনস্টল হয় (অথবা -g দিয়ে ~/.bnl/deps-এ)। নেটিভ প্লাগইন (.dll / .so / .dylib) একইভাবে install হয় — প্লাগইন ডেভেলপমেন্ট দেখুন।


Installing BPM

BPM Bnlang-এর সাথে শিপ হয়। নিচের কমান্ড দিয়ে যাচাই করুন:

bpm --version

Common Commands

  • bpm init → Create a starter bnl.json in the current directory.
  • bpm install → Install every dependency declared in bnl.json.
  • bpm install <name>[@version] → Add and install one package.
  • bpm install -g <name> → Install globally into ~/.bnl/deps.
  • bpm uninstall <name> → Remove an installed dependency.
  • bpm list → Show installed packages.
  • bpm login → Authenticate with the registry.
  • bpm publish → Publish the current package to the registry.

Example Workflow

# Start a new project
mkdir my-app && cd my-app
bpm init

# Add a dependency
bpm install some-package

# Or install everything from bnl.json (e.g. on a fresh checkout)
bpm install

# Remove what you don't need anymore
bpm uninstall some-package

# Publish your own package
bpm login
bpm publish

Using an Installed Package

ইনস্টল করা প্যাকেজ ./deps/-এ থাকে। নাম দিয়ে ইমপোর্ট করুন — ইমপোর্ট রিজলভার জানে কোথায় খুঁজতে হবে।

import "some-package" as pkg;

print(pkg.hello());

Best Practices

  • bnl.json এবং bnl.lock দু'টোই কমিট করুন। লকফাইলই অন্যদের ইনস্টলকে আপনার সাথে রিপ্রোডিউস করায়।
  • ডাইরেক্ট ডিপের জন্য bnl.json-এ সেমান্টিক সংস্করণ রেঞ্জ (^1.2.3) ব্যবহার করুন, যাতে patch রিলিজ স্বাভাবিকভাবে আসে।
  • -g পরিমিত ব্যবহার করুন — গ্লোবাল ইনস্টল PATH-এ থাকা CLI-এর জন্য ভালো, অ্যাপ ডিপেন্ডেন্সির জন্য তেমন না।
  • প্যাকেজকে পরিষ্কার, ছোট-হাতের নাম দিন এবং README-তে পাবলিক API ডকুমেন্ট করুন।