মূল পোস্টার (@ আরবসনরোসা) এর সাথে আমারও একই সমস্যা রয়েছে। আমার ক্ষেত্রে আমি টাইপক্রিপ ব্যবহার করি যা একটি distডিরেক্টরিতে সংকলিত হয় । যদিও আমি মূল ডিরেক্টরিতে টাইপস্ক্রিপ্ট সংকলন করতে পারতাম আমার মনে package.jsonহয় ডিস্ট ডিরেক্টরিতে একটি পৃথক ফাইল তৈরি করা সবচেয়ে ভাল সমাধান ।
এটি টুইটারের সাথে অনুলিপি করার জন্য @ এসএসভিএনসি পরামর্শের অনুরূপ package.json:
প্যাকেজিং প্রক্রিয়াটির অংশ হিসাবে আপনাকে package.jsonপ্যাকেজটির জন্য একটি উত্পন্ন করতে হবে যা package.jsonমূল ডিরেক্টরিতে মূল ফাইল থেকে পৃথক তবে পৃথক is
যুক্তিসহ ব্যাখ্যা:
- মূল
package.jsonফাইলটি ডেভলপমেন্ট ফাইল। এটিতে স্ক্রিপ্টগুলি বা বিকাশ নির্ভরতা থাকতে পারে যা প্যাকেজ ব্যবহারকারীর কোনও উপযোগী নয় তবে এটি আপনার জন্য সুরক্ষা উদ্বেগ তৈরি করতে পারে। আপনার প্যাকেজিং পদ্ধতিতে কোডটি অন্তর্ভুক্ত থাকতে পারে যা সেই তথ্যটি উত্পাদন থেকে বাদ দেয় package.json।
- আপনি আপনার প্যাকেজটি বিভিন্ন পরিবেশে স্থাপন করতে চাইতে পারেন যার জন্য বিভিন্ন প্যাকেজ ফাইলের প্রয়োজন হতে পারে (যেমন আপনি বিভিন্ন সংস্করণ বা নির্ভরতা রাখতে চাইতে পারেন)।
--- সম্পাদনা ---
মন্তব্যে আমাকে সমাধানের জন্য জিজ্ঞাসা করা হয়েছিল। সুতরাং আমি এখানে কিছু কোড ব্যবহার করছি। এটিকে একটি উদাহরণ হিসাবে বিবেচনা করা উচিত যা এটি জেনেরিক হতে বোঝায় না এবং এটি আমার প্রকল্পগুলির জন্য নির্দিষ্ট।
আমার সেটআপ:
package.json - main package.json with dev dependencies and useful scripts.
.npmignore - files to ignore; copied to 'dist' directory as part of the setup.
/src - directory where my typescript code resides.
/src/SetupPackage.ts - bit of code used to setup the package.
/dist - destination directory for the compiled javascript files.
আমি কেবল distডিরেক্টরি প্যাকেজ করতে চাই এবং প্যাকেজের ডিরেক্টরিটি ডিরেক্টরি হতে হবে।
ফাইল SetupPackage.tsআমার মধ্যে srcনির্দেশিকাতে কম্পাইল করা হবে SetupPackage.jsএ distটাইপ করা বিষয় দ্বারা ডিরেক্টরি:
import fs from "fs";
// DO NOT DELETE THIS FILE
// This file is used by build system to build a clean npm package with the compiled js files in the root of the package.
// It will not be included in the npm package.
function main() {
const source = fs.readFileSync(__dirname + "/../package.json").toString('utf-8');
const sourceObj = JSON.parse(source);
sourceObj.scripts = {};
sourceObj.devDependencies = {};
if (sourceObj.main.startsWith("dist/")) {
sourceObj.main = sourceObj.main.slice(5);
}
fs.writeFileSync(__dirname + "/package.json", Buffer.from(JSON.stringify(sourceObj, null, 2), "utf-8") );
fs.writeFileSync(__dirname + "/version.txt", Buffer.from(sourceObj.version, "utf-8") );
fs.copyFileSync(__dirname + "/../.npmignore", __dirname + "/.npmignore");
}
main();
এই নথি:
- রুটটি অনুলিপি করে
package.jsonতবে স্ক্রিপ্টগুলি এবং দেব নির্ভরতাগুলি সরিয়ে দেয় যা প্যাকেজের প্রয়োজন নেই। এটি প্যাকেজের মূল প্রবেশ বিন্দুও ঠিক করে।
- কল
package.jsonকরা কোনও ফাইল থেকে প্যাকেজের সংস্করণ লিখেছে version.txt।
.npmignoreমূলটি থেকে প্যাকেজটি অনুলিপি করে ।
.Npmignore সামগ্রীটি হ'ল:
*.map
*.spec.*
SetupPackage.*
version.txt
অর্থাৎ ইউনিট পরীক্ষা (স্পেক ফাইল) এবং টাইপস্ক্রিপ্ট ম্যাপ ফাইলগুলি পাশাপাশি SetupPackage.jsফাইল এবং version.txtএটি তৈরি করা ফাইলটিকেও উপেক্ষা করা হয় । এটি একটি পরিষ্কার প্যাকেজ ছেড়ে যায়।
অবশেষে মূল package.jsonফাইলটিতে বিল্ড সিস্টেম দ্বারা ব্যবহারের জন্য নিম্নলিখিত স্ক্রিপ্ট রয়েছে (ধরে নেওয়া shহয় শেল হিসাবে ব্যবহৃত হয়)।
"scripts": {
"compile": "tsc",
"clean": "rm -rf dist",
"prebuildpackage": "npm run clean && npm run compile && node dist/SetupPackage.js",
"buildpackage": "cd dist && npm pack"
},
প্যাকেজটি তৈরি করতে বিল্ড সিস্টেমটি রেপো ক্লোন করে, npm installএবং তারপরে npm run buildpackageযা চালায় :
distপরিষ্কার সংকলন নিশ্চিত করার জন্য ডিরেক্টরিটি মুছে দেয় ।
- টাইপস্ক্রিপ্ট কোডটি জাভাস্ক্রিপ্টে সংকলন করে।
- প্যাকেজিংয়ের জন্য
SetupPackage.jsপ্রস্তুত করে এমন ফাইলটি কার্যকর করে dist।
distডিরেক্টরিতে সিডি এবং সেখানে প্যাকেজ তৈরি করে।
আমি version.txtপ্যাকেজ.জসনে সংস্করণ পেতে এবং আমার রেপো ট্যাগ করার সহজ উপায় হিসাবে ফাইলটি ব্যবহার করি । এটি করার অন্যান্য অসংখ্য উপায় রয়েছে বা আপনি সংস্করণটি স্বয়ংক্রিয়ভাবে বৃদ্ধি করতে চাইতে পারেন। এটিকে সরান SetupPackage.tsএবং .npmignoreযদি এটি আপনার পক্ষে কার্যকর না হয়।