মূল পোস্টার (@ আরবসনরোসা) এর সাথে আমারও একই সমস্যা রয়েছে। আমার ক্ষেত্রে আমি টাইপক্রিপ ব্যবহার করি যা একটি 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
যদি এটি আপনার পক্ষে কার্যকর না হয়।