প্যাকেজ.জসন সংস্করণটি স্বয়ংক্রিয়ভাবে আপডেট করুন


181

আমি একটি ছোট রিলিজ করার আগে এবং এটি ট্যাগ করার আগে, আমি প্রোগ্রামটির নতুন সংস্করণ প্রতিবিম্বিত করার জন্য প্যাকেজ.জসন আপডেট করতে চাই।

package.jsonস্বয়ংক্রিয়ভাবে ফাইল সম্পাদনা করার কোনও উপায় আছে ?

একটি git pre-release hookসাহায্য ব্যবহার করবেন ?


1
আপনি কেন একটি শেল স্ক্রিপ্ট তৈরি করবেন না যা প্যাকেজ.জসন সম্পাদন করে, কমিট করে এবং তারপরে ট্যাগ করে?
gustavotkg

হ্যাঁ তাই প্রাক-মুক্তির হুক ঠিক সেই স্ক্রিপ্টটি ডেকে আনবে?
tUrG0n

উত্তর:


93

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

আপনি যদি কোনওভাবে গ্রান্ট ব্যবহার করেন তবে এটি হতে পারে সহজ সমাধান।


11
এবং যদি আপনি গুলপজ ব্যবহার করেন : গুলপ -বাম্প :)
গ্যাবলেউক্স

আমি এই জন্য Vik, যা npm বাধা বিপত্তি, আবাস, ইত্যাদি কোডেড ... এক ছোঁ খোলস: github.com/Wildhoney/Vik
Wildhoney

8
এনপিএম যখন এই কার্যকারিতাটি তৈরি করে থাকে তখন বাহ্যিক গ্রন্থাগারগুলি কেন ব্যবহার করবেন?
লিনাক্সদান

8
এগুলি ব্যবহার করে কী লাভ npm version?
স্টিভ বেনেট

3
পছন্দ করুন এরকম কিছু চেষ্টা করুন npm --no-git-tag-version version patch
টং শেন

164

সঠিক উত্তর

এটি করতে, কেবল 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, ট্যাগ তৈরি করতে এবং সার্ভারে এটি ঠেলাতে পারে।


স্ক্রিপ্টটি দেখতে কেমন হবে তার একটি কোড স্নিপেট আপনি ভাগ করতে পারেন? : ডি
tUrG0n

1
এই লিঙ্কটি দেখুন
github.com/visionmedia/git-extras/blob/master/bin/git-re

আমি আসলে ভিশনমিডিয়ার গিট-এক্সট্রা রেপো ব্যবহার করি। তবে git releaseসেই অনুযায়ী প্যাকেজ.জসন আপডেট করে না ... github.com/visionmedia/git-extras/issues/150 : D
tUrG0n

সুতরাং, কেবল .git/hooks/pre-release.shধারণকারীটি তৈরি echo -e "{\n\"version\": "$1"\n}" > package.jsonকরুন : এবং ব্যবহার করার চেষ্টা করুনgit release $version
gustavotkg

5
এখানে মন্তব্য হিসাবে npm version patchবা npm version 0.3.1 এটি সমাধান করবে! আপনি কি সেই অনুযায়ী আপনার উত্তর আপডেট করতে পারেন? TY !!
tUrG0n

75

আমি সাধারণত আমার প্রকল্পগুলির সাথে এটি করি:

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।


9
আমি যতদূর বলতে পারি, npm version patchপ্রতিশ্রুতিবদ্ধ হয় না; তবে, গিথুবকে ট্যাগ ঠেকাতে, আমার মনে হয় আপনারও এটি করা দরকার git push --tags
ChrisV

@ ক্রিসভ সঠিক - npm version patchসংস্করণ নম্বরটি ফাটিয়ে দেয় এবং তাত্ক্ষণিকভাবে পরিবর্তনের প্রতিশ্রুতি দেয়
ড্যান এস্পারজা

2
পছন্দ করুন npm version patchআমার জন্য কিছু প্রতিশ্রুতিবদ্ধ না।
মোডার্ড

@ মোর্ডার্ড হুঁ ... সম্ভবত। আমি সে সম্পর্কে এনপিএম কনফিগারেশন ডক্সে কিছুই দেখতে পাচ্ছি না , তবে এটি কি আপনার পথে বা অন্য কিছুতে গিট না থাকতে পারে?
ড্যান এস্পারজা

আমি চালাচ্ছি ঠিক একই ফোল্ডার থেকে প্রতিশ্রুতিবদ্ধ হওয়ায় @ ড্যানস্পারজা গিট অবশ্যই সেই পথে রয়েছে npm version
Mordred

28

আরও আপ-টু-ডেট অ্যাপ্রোচ দেওয়ার জন্য।

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"

যা হবে:

  1. ... পরীক্ষা চালান ...

  2. আপনার package.jsonপরবর্তী গৌণ সংস্করণে পরিবর্তন করুন (উদা: 1.8.1 থেকে 1.9.0)

  3. আপনার পরিবর্তনগুলি ধাক্কা

  4. একটি নতুন গিট ট্যাগ রিলিজ তৈরি করুন এবং

  5. আপনার এনপিএম প্যাকেজ প্রকাশ করুন।

--forceকে হ'ল সাহেবকে দেখাতে! রসিকতা আলাদাভাবে দেখুন https://github.com/npm/npm/issues/8620


3
আপনি এর মতো একটি স্ক্রিপ্টও যুক্ত করতে পারেন "deploy-minor": "npm version minor --force -m \"version %s\""তাই আপনাকে যা মনে রাখা দরকার তা হ'ল npm run deploy-minor:)
ক্রিস্টফোর কার্লে

22

একটি সংযোজন হিসাবে আপনি সংস্করণ দ্বিধায় চাইলেও পতাকা বা কোনও নতুন প্রতিশ্রুতি চাইলে পতাকাটি npm versionব্যবহার করতে পারেন --no-git-tag-version:

npm --no-git-tag-version version patch

https://docs.npmjs.com/cli/version


17

আপনি যদি সুতা ব্যবহার করেন তবে আপনি ব্যবহার করতে পারেন

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


10

আমি ভুষি এবং গিট-শাখা- ব্যবহার করছি :

ভুসি ভি 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>

আমি এই ভুষি বিকল্পটি সবচেয়ে ভাল পছন্দ করি, যদিও আমি মনে করি না এটি এখনকার মতো কার্যকর হয়। আমি মনে করি না যে 'পোস্টারমেজ' রয়েছে, সম্ভবত "প্রাক-ধাক্কা" সম্ভবত সেরা বিকল্প। এবং 'গিট-ব্রাঞ্চ-ইজ' ফলাফলগুলি কার্যত কার্যকর হয় না কারণ তারা ত্রুটিযুক্ত হয়ে পড়ে এবং মূলত পুরো পোস্টটি ক্র্যাশ করে (যেহেতু এটি মাস্টার এবং দেব উভয়ই পরীক্ষা করে দেখায়, এটি তাদের মধ্যে একটির উপর ত্রুটিযুক্ত হবে)
ফিলিপ

@Phil আপনি এখনও ব্যবহার করতে পারেন postmerge, কিন্তু এটা এখন post-mergeভিতরে husky: {hooks:{}}কনফিগ। আপনার কোন সমস্যা আছে git-branch-is?
অ্যানিমা-টি 3 ডি

এটি চালানোর পরিবর্তে আমার জন্য ত্রুটি ঘটবে। যদিও কোনও উদ্বেগের বিষয় নয়, আমি এই বিকল্পটি দিয়ে শেষ করেছি: মার্কেটপ্লেস.ভিজুয়ালস্টুডিও.
ফিলিপ

1
@ ফিল আপ অনুসরণ করার জন্য ধন্যবাদ। আমি কেবল আপডেট হওয়া সংস্করণ দিয়ে চেষ্টা করেছি এবং আমার কোনও ত্রুটি নেই, সম্ভবত আপনার মার্জ-পরবর্তী কমান্ডটিই কিছু ভুল।
অ্যানিমা- t3d

5

এই প্রশ্নের উত্তর পেয়ে আমি কিছুটা স্পষ্টতা যুক্ত করতে চাই।

এমনকি ভেবেছি এখানে কিছু উত্তর রয়েছে যা সমস্যাটিকে সঠিকভাবে মোকাবেলা করছে এবং একটি সমাধান সরবরাহ করছে, সেগুলি সঠিক নয়। এই প্রশ্নের সঠিক উত্তরটি ব্যবহার করাnpm version

প্যাকেজ.জসন ফাইলটি স্বয়ংক্রিয়ভাবে সম্পাদনা করার কোনও উপায় আছে?

হ্যাঁ, এটি ঘটানোর জন্য আপনি যা করতে পারেন তা হ'ল npm versionপ্রয়োজন অনুসারে কমান্ডটি চালানো , আপনি এখানে এনপিএম সংস্করণ সম্পর্কে আরও পড়তে পারেন , তবে বেস ব্যবহারটি হবে npm version patchএবং এটি আপনার package.jsonসংস্করণে তৃতীয় অঙ্কের ক্রম যুক্ত করবে (1.0। এক্স )

একটি গিট প্রাক রিলিজ হুক সহায়তা ব্যবহার করবেন?

npm versionআপনার প্রয়োজন মতো প্রাক-প্রকাশের হুকটিতে কমান্ডটি চালনার জন্য আপনি কনফিগার করতে পারেন, তবে এটি আপনার সিডি / সিআই পাইপে আপনার যা প্রয়োজন বা না প্রয়োজন তা নির্ভর করে তবে npm versionকমান্ড ব্যতিরেকে একটি git pre-releaseহুক "সহজে" কিছু করতে পারে না সাথেpackage.json

npm versionসঠিক উত্তর হওয়ার কারণটি হ'ল:

  1. যদি ব্যবহারকারী কোনও ফোল্ডার কাঠামো ব্যবহার করে যা তার একটি থাকে তবে যদি সে package.jsonব্যবহার করে npmতবে তার যদি তার npmঅ্যাক্সেস থাকে npm scripts
  2. যদি তার npm scriptsঅ্যাক্সেস থাকে তবে npm versionকমান্ডটিতে তার অ্যাক্সেস রয়েছে ।
  3. এই কমান্ডটি ব্যবহার করে তাকে তার কম্পিউটার বা সিডি / সিআই পাইপে আরও কিছু ইনস্টল করার দরকার নেই যা দীর্ঘমেয়াদে প্রকল্পটির রক্ষণাবেক্ষণের প্রচেষ্টা হ্রাস করবে এবং সেটআপে সহায়তা করবে

অন্যান্য উত্তরগুলি যেখানে অন্যান্য সরঞ্জামগুলির প্রস্তাব করা হয়েছে সেগুলি ভুল।

gulp-bump কাজ করে তবে আরও একটি অতিরিক্ত প্যাকেজ দরকার যা দীর্ঘমেয়াদে সমস্যা তৈরি করতে পারে (আমার উত্তরের পয়েন্ট 3)

grunt-bump কাজ করে তবে আরও একটি অতিরিক্ত প্যাকেজ দরকার যা দীর্ঘমেয়াদে সমস্যা তৈরি করতে পারে (আমার উত্তরের পয়েন্ট 3)


2

প্রথমে, সংস্করণ নম্বরটি আপগ্রেড করার জন্য আপনাকে বিধিগুলি বুঝতে হবে। আপনি এখানে শব্দার্থক সংস্করণ সম্পর্কে আরও পড়তে পারেন ।

প্রতিটি সংস্করণে xyz সংস্করণ থাকবে যেখানে এটি নীচে দেখানো হিসাবে বিভিন্ন উদ্দেশ্যে সংজ্ঞায়িত করা হয়েছে।

  1. এক্স - মেজর, এটি যখন আপনার বড় পরিবর্তন হয় এবং এটি পরিবর্তনগুলির বিশাল তাত্পর্য ঘটে।
  2. y - অপ্রাপ্তবয়স্ক, আপনার নতুন কার্যকারিতা বা বর্ধন ঘটানোর পরে এটি।
  3. z - প্যাচ করুন, আপনার যখন পূর্ববর্তী সংস্করণে বাগগুলি স্থির বা পরিবর্তনগুলি ফিরিয়ে দেওয়া হবে তখন এটি আপ করুন।

স্ক্রিপ্টগুলি চালানোর জন্য, আপনি এটি আপনার প্যাকেজ.জসনে এটি সংজ্ঞায়িত করতে পারেন।

"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"


0

আমি এমন একটি সরঞ্জাম তৈরি করেছি যা প্রতিশ্রুতি বার্তাগুলিতে ট্যাগগুলির উপর ভিত্তি করে স্বয়ংক্রিয় শব্দার্থক সংস্করণ সম্পন্ন করতে পারে, পরিবর্তনের ধরণ হিসাবে পরিচিত। এটি সিমেন্টিক ভার্সিং স্পেসিফিকেশনের পাশাপাশি অ্যাঙ্গুলার কমিট ম্যাসেজ কনভেনশনটি নিবিড়ভাবে অনুসরণ করে।

আপনি এনপিএম সিএলআই ব্যবহার করে প্যাকেজ.জসনের সংস্করণটি স্বয়ংক্রিয়ভাবে পরিবর্তন করতে এই সরঞ্জামটি ব্যবহার করতে পারেন (এটি এখানে বর্ণিত )।

তদতিরিক্ত, এটি এই কমিটগুলি থেকে একটি চেঞ্জলগ তৈরি করতে পারে এবং পরিবর্তনের ধরণের ভিত্তিতে কমিট তৈরির জন্য একটি মেনুও (কমিট বার্তাগুলির জন্য একটি স্পেল চেকার সহ) রয়েছে। আমি এটি পরীক্ষা করে দেখার জন্য এবং ডকসগুলিতে এটি সম্পাদনযোগ্য যা কিছু হতে পারে তার সমস্ত কিছু দেখার জন্য সুপারিশ করছি।

আমি সরঞ্জামটি লিখেছি কারণ আমার সিআইসিডি পাইপলাইনটি সিনমেটিক ভার্সনটি স্বয়ংক্রিয় করতে আমার প্রয়োজনীয়তার সাথে উপযুক্ত কিছু খুঁজে পাচ্ছিলাম না। পরিবর্তে সংস্করণটি হওয়া উচিত তার চেয়ে প্রকৃত পরিবর্তনগুলি কী এবং আমার সরঞ্জামটি দিনটি সংরক্ষণ করে সেদিকেই আমি ফোকাস করব।

সরঞ্জামটির যুক্তি সম্পর্কিত আরও তথ্যের জন্য, দয়া করে এটি দেখুন

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