আমি একটি ছোট রিলিজ করার আগে এবং এটি ট্যাগ করার আগে, আমি প্রোগ্রামটির নতুন সংস্করণ প্রতিবিম্বিত করার জন্য প্যাকেজ.জসন আপডেট করতে চাই।
package.jsonস্বয়ংক্রিয়ভাবে ফাইল সম্পাদনা করার কোনও উপায় আছে ?
একটি git pre-release hookসাহায্য ব্যবহার করবেন ?
আমি একটি ছোট রিলিজ করার আগে এবং এটি ট্যাগ করার আগে, আমি প্রোগ্রামটির নতুন সংস্করণ প্রতিবিম্বিত করার জন্য প্যাকেজ.জসন আপডেট করতে চাই।
package.jsonস্বয়ংক্রিয়ভাবে ফাইল সম্পাদনা করার কোনও উপায় আছে ?
একটি git pre-release hookসাহায্য ব্যবহার করবেন ?
উত্তর:
npm versionসম্ভবত সঠিক উত্তর। কেবল একটি বিকল্প দেওয়ার জন্য আমি গ্রান্ট-বাম্পের প্রস্তাব দিই । এটি কৌনিক.জেএস থেকে আসা ছেলেদের একজন দ্বারা রক্ষণাবেক্ষণ করা হয়।
ব্যবহার:
grunt bump
>> Version bumped to 0.0.2
grunt bump:patch
>> Version bumped to 0.0.3
grunt bump:minor
>> Version bumped to 0.1.0
grunt bump
>> Version bumped to 0.1.1
grunt bump:major
>> Version bumped to 1.0.0
আপনি যদি কোনওভাবে গ্রান্ট ব্যবহার করেন তবে এটি হতে পারে সহজ সমাধান।
npm version?
npm --no-git-tag-version version patch।
সঠিক উত্তর
এটি করতে, কেবল npm version patch=)
আমার পুরানো উত্তর
pre-releaseমূলত এখানে কোনও হুক নেই git। কমপক্ষে, man githooksএটি দেখায় না।
উদাহরণস্বরূপ, আপনি যদি git-extra( https://github.com/visionmedia/git-extras ) ব্যবহার করছেন তবে আপনি pre-releaseএটি প্রয়োগ করেছেন এমন একটি হুক ব্যবহার করতে পারেন , যেমন আপনি https://github.com/visionmedia/ এ দেখতে পাচ্ছেন গিট-এক্সট্রা / ব্লব / মাস্টার / বিন / গিট-রিলিজ । এটি কেবলমাত্র একটি .git/hook/pre-release.shএক্সিকিউটেবল ফাইলের প্রয়োজন যা আপনার package.jsonফাইলটি সম্পাদনা করে । git releaseকমান্ড দ্বারা প্রতিশ্রুতিবদ্ধ, ঠেলাঠেলি এবং ট্যাগিং করা হবে ।
আপনি যদি এর জন্য কোনও এক্সটেনশন ব্যবহার না করে থাকেন তবে আপনি gitশেল স্ক্রিপ্ট লিখতে পারেন (আমি এটি নাম দেব git-release.sh) এবং এর চেয়ে বেশি git releaseকিছু দিয়ে আপনি এটির নাম দিতে পারেন:
git config --global alias.release '!sh path/to/pre-release.sh $1'
আপনি ব্যবহার করতে পারেন, git release 0.4যা কার্যকর হবে path/to/pre-release.sh 0.4। আপনার স্ক্রিপ্ট সম্পাদনা করতে পারে package.json, ট্যাগ তৈরি করতে এবং সার্ভারে এটি ঠেলাতে পারে।
git releaseসেই অনুযায়ী প্যাকেজ.জসন আপডেট করে না ... github.com/visionmedia/git-extras/issues/150 : D
.git/hooks/pre-release.shধারণকারীটি তৈরি echo -e "{\n\"version\": "$1"\n}" > package.jsonকরুন : এবং ব্যবহার করার চেষ্টা করুনgit release $version
আমি সাধারণত আমার প্রকল্পগুলির সাথে এটি করি:
npm version patch
git add *;
git commit -m "Commit message"
git push
npm publish
প্রথম লাইন, npm version patchপ্যাচ সংস্করণটি 1 (xx1 থেকে xx2) এ বাড়িয়ে দেবে package.json। তারপরে আপনি সমস্ত ফাইল যুক্ত করুন - package.jsonযার সাথে সেই সময়ে সংশোধন করা হয়েছে। তারপরে, স্বাভাবিক git commitএবং git pushশেষ পর্যন্ত npm publishমডিউলটি প্রকাশ করতে হবে।
আশা করি এটা বোধ গম্য...
Merc।
npm version patchপ্রতিশ্রুতিবদ্ধ হয় না; তবে, গিথুবকে ট্যাগ ঠেকাতে, আমার মনে হয় আপনারও এটি করা দরকার git push --tags।
npm version patchসংস্করণ নম্বরটি ফাটিয়ে দেয় এবং তাত্ক্ষণিকভাবে পরিবর্তনের প্রতিশ্রুতি দেয়
npm version patchআমার জন্য কিছু প্রতিশ্রুতিবদ্ধ না।
npm version।
আরও আপ-টু-ডেট অ্যাপ্রোচ দেওয়ার জন্য।
package.json "scripts": {
"eslint": "eslint index.js",
"pretest": "npm install",
"test": "npm run eslint",
"preversion": "npm run test",
"version": "",
"postversion": "git push && git push --tags && npm publish"
}
তারপরে আপনি এটি চালান:
npm version minor --force -m "Some message to commit"
যা হবে:
... পরীক্ষা চালান ...
আপনার package.jsonপরবর্তী গৌণ সংস্করণে পরিবর্তন করুন (উদা: 1.8.1 থেকে 1.9.0)
আপনার পরিবর্তনগুলি ধাক্কা
একটি নতুন গিট ট্যাগ রিলিজ তৈরি করুন এবং
আপনার এনপিএম প্যাকেজ প্রকাশ করুন।
--forceকে হ'ল সাহেবকে দেখাতে! রসিকতা আলাদাভাবে দেখুন https://github.com/npm/npm/issues/8620
"deploy-minor": "npm version minor --force -m \"version %s\""তাই আপনাকে যা মনে রাখা দরকার তা হ'ল npm run deploy-minor:)
একটি সংযোজন হিসাবে আপনি সংস্করণ দ্বিধায় চাইলেও পতাকা বা কোনও নতুন প্রতিশ্রুতি চাইলে পতাকাটি npm versionব্যবহার করতে পারেন --no-git-tag-version:
npm --no-git-tag-version version patch
আপনি যদি সুতা ব্যবহার করেন তবে আপনি ব্যবহার করতে পারেন
yarn version --patch
এটি package.jsonপ্যাচ দ্বারা (0.0.x)প্রতিশ্রুতি বৃদ্ধি করবে , প্রতিশ্রুতিবদ্ধ হবে এবং ফর্ম্যাট সহ এটি ট্যাগ করবেv0.0.0
তেমনিভাবে আপনি ব্যবহার করে --minorবা ছোটখাটো বা বড় সংস্করণটি মুছতে পারেন--major
গিটকে চাপ দেওয়ার সময় আপনি ট্যাগগুলিও চাপুন তা নিশ্চিত করুন --follow-tags
git push --follow-tags
আপনি এটির জন্য একটি স্ক্রিপ্টও তৈরি করতে পারেন
"release-it": "yarn version --patch && git push --follow-tags"
কেবল টাইপ করে এটি চালান yarn release-it
আমি ভুষি এবং গিট-শাখা- ব্যবহার করছি :
ভুসি ভি 1 + হিসাবে:
// package.json
{
"husky": {
"hooks": {
"post-merge": "(git-branch-is master && npm version minor ||
(git-branch-is dev && npm --no-git-tag-version version patch)",
}
}
}
ভুসি ভি 1 এর আগে:
"scripts": {
...
"postmerge": "(git-branch-is master && npm version minor ||
(git-branch-is dev && npm --no-git-tag-version version patch)",
...
},
এনপিএম সংস্করণ সম্পর্কে আরও পড়ুন
ওয়েবপ্যাক বা Vue.js
আপনি যদি ওয়েবপ্যাক বা Vue.js ব্যবহার করে থাকেন তবে আপনি এটি ইউআইতে অটো ইনজেক্ট সংস্করণ ব্যবহার করে প্রদর্শন করতে পারেন - ওয়েবপ্যাক প্লাগইন
NUXT
ইন nuxt.config.js:
var WebpackAutoInject = require('webpack-auto-inject-version');
module.exports = {
build: {
plugins: [
new WebpackAutoInject({
// options
// example:
components: {
InjectAsComment: false
},
}),
]
},
}
templateফুটারে আপনার উদাহরণস্বরূপ:
<p> All rights reserved © 2018 [v[AIV]{version}[/AIV]]</p>
postmerge, কিন্তু এটা এখন post-mergeভিতরে husky: {hooks:{}}কনফিগ। আপনার কোন সমস্যা আছে git-branch-is?
এই প্রশ্নের উত্তর পেয়ে আমি কিছুটা স্পষ্টতা যুক্ত করতে চাই।
এমনকি ভেবেছি এখানে কিছু উত্তর রয়েছে যা সমস্যাটিকে সঠিকভাবে মোকাবেলা করছে এবং একটি সমাধান সরবরাহ করছে, সেগুলি সঠিক নয়। এই প্রশ্নের সঠিক উত্তরটি ব্যবহার করাnpm version
প্যাকেজ.জসন ফাইলটি স্বয়ংক্রিয়ভাবে সম্পাদনা করার কোনও উপায় আছে?
হ্যাঁ, এটি ঘটানোর জন্য আপনি যা করতে পারেন তা হ'ল npm versionপ্রয়োজন অনুসারে কমান্ডটি চালানো , আপনি এখানে এনপিএম সংস্করণ সম্পর্কে আরও পড়তে পারেন , তবে বেস ব্যবহারটি হবে npm version patchএবং এটি আপনার package.jsonসংস্করণে তৃতীয় অঙ্কের ক্রম যুক্ত করবে (1.0। এক্স )
একটি গিট প্রাক রিলিজ হুক সহায়তা ব্যবহার করবেন?
npm versionআপনার প্রয়োজন মতো প্রাক-প্রকাশের হুকটিতে কমান্ডটি চালনার জন্য আপনি কনফিগার করতে পারেন, তবে এটি আপনার সিডি / সিআই পাইপে আপনার যা প্রয়োজন বা না প্রয়োজন তা নির্ভর করে তবে npm versionকমান্ড ব্যতিরেকে একটি git pre-releaseহুক "সহজে" কিছু করতে পারে না সাথেpackage.json
npm versionসঠিক উত্তর হওয়ার কারণটি হ'ল:
package.jsonব্যবহার করে npmতবে তার যদি তার npmঅ্যাক্সেস থাকে npm scripts।npm scriptsঅ্যাক্সেস থাকে তবে npm versionকমান্ডটিতে তার অ্যাক্সেস রয়েছে ।অন্যান্য উত্তরগুলি যেখানে অন্যান্য সরঞ্জামগুলির প্রস্তাব করা হয়েছে সেগুলি ভুল।
gulp-bump কাজ করে তবে আরও একটি অতিরিক্ত প্যাকেজ দরকার যা দীর্ঘমেয়াদে সমস্যা তৈরি করতে পারে (আমার উত্তরের পয়েন্ট 3)
grunt-bump কাজ করে তবে আরও একটি অতিরিক্ত প্যাকেজ দরকার যা দীর্ঘমেয়াদে সমস্যা তৈরি করতে পারে (আমার উত্তরের পয়েন্ট 3)
প্রথমে, সংস্করণ নম্বরটি আপগ্রেড করার জন্য আপনাকে বিধিগুলি বুঝতে হবে। আপনি এখানে শব্দার্থক সংস্করণ সম্পর্কে আরও পড়তে পারেন ।
প্রতিটি সংস্করণে xyz সংস্করণ থাকবে যেখানে এটি নীচে দেখানো হিসাবে বিভিন্ন উদ্দেশ্যে সংজ্ঞায়িত করা হয়েছে।
স্ক্রিপ্টগুলি চালানোর জন্য, আপনি এটি আপনার প্যাকেজ.জসনে এটি সংজ্ঞায়িত করতে পারেন।
"script": {
"buildmajor": "npm version major && ng build --prod",
"buildminor": "npm version minor && ng build --prod",
"buildpatch": "npm version patch && ng build --prod"
}
আপনার টার্মিনালে, আপনাকে কেবল প্রয়োজন মতো আপনার প্রয়োজন অনুযায়ী এনপিএম চালানো দরকার
npm run buildpatch
যদি এটি গিট রেপোতে চালানো হয় তবে ডিফল্ট গিট-ট্যাগ-সংস্করণটি সত্য এবং যদি আপনি এটি করতে না চান তবে আপনি নীচের কমান্ডটি আপনার স্ক্রিপ্টগুলিতে যুক্ত করতে পারেন:
--no-git-tag-version
যেমন: "npm --no-git-tag-version version major && ng build --prod"
আমি এমন একটি সরঞ্জাম তৈরি করেছি যা প্রতিশ্রুতি বার্তাগুলিতে ট্যাগগুলির উপর ভিত্তি করে স্বয়ংক্রিয় শব্দার্থক সংস্করণ সম্পন্ন করতে পারে, পরিবর্তনের ধরণ হিসাবে পরিচিত। এটি সিমেন্টিক ভার্সিং স্পেসিফিকেশনের পাশাপাশি অ্যাঙ্গুলার কমিট ম্যাসেজ কনভেনশনটি নিবিড়ভাবে অনুসরণ করে।
আপনি এনপিএম সিএলআই ব্যবহার করে প্যাকেজ.জসনের সংস্করণটি স্বয়ংক্রিয়ভাবে পরিবর্তন করতে এই সরঞ্জামটি ব্যবহার করতে পারেন (এটি এখানে বর্ণিত )।
তদতিরিক্ত, এটি এই কমিটগুলি থেকে একটি চেঞ্জলগ তৈরি করতে পারে এবং পরিবর্তনের ধরণের ভিত্তিতে কমিট তৈরির জন্য একটি মেনুও (কমিট বার্তাগুলির জন্য একটি স্পেল চেকার সহ) রয়েছে। আমি এটি পরীক্ষা করে দেখার জন্য এবং ডকসগুলিতে এটি সম্পাদনযোগ্য যা কিছু হতে পারে তার সমস্ত কিছু দেখার জন্য সুপারিশ করছি।
আমি সরঞ্জামটি লিখেছি কারণ আমার সিআইসিডি পাইপলাইনটি সিনমেটিক ভার্সনটি স্বয়ংক্রিয় করতে আমার প্রয়োজনীয়তার সাথে উপযুক্ত কিছু খুঁজে পাচ্ছিলাম না। পরিবর্তে সংস্করণটি হওয়া উচিত তার চেয়ে প্রকৃত পরিবর্তনগুলি কী এবং আমার সরঞ্জামটি দিনটি সংরক্ষণ করে সেদিকেই আমি ফোকাস করব।
সরঞ্জামটির যুক্তি সম্পর্কিত আরও তথ্যের জন্য, দয়া করে এটি দেখুন ।