এনপিএম ইনস্টলের জন্য আমি প্যাকেজ.জসনে মন্তব্যগুলি কীভাবে যুক্ত করব?


380

আমি একটি সাধারণ প্যাকেজ.জসন ফাইল পেয়েছি এবং আমি একটি মন্তব্য যুক্ত করতে চাই। এটি করার কোনও উপায় আছে, বা এই কাজটি করার কোনও হ্যাক রয়েছে?

{
  "name": "My Project",
  "version": "0.0.1",
  "private": true,
  "dependencies": {
    "express": "3.x",
    "mongoose": "3.x"
  },
  "devDependencies" :  {
    "should": "*"
    /* "mocha": "*" not needed as should be globally installed */
  }
}

উপরের উদাহরণ মন্তব্য এনপিএম বিরতি হিসাবে কাজ করে না। আমি // স্টাইল মন্তব্য চেষ্টা করেছি।



17
@ যিহুদাকাটজ - আমি মনে করি না যে এটি একটি নকল যা এই প্রশ্নটি package.jsonফাইলগুলির সাথে package.jsonসুনির্দিষ্ট এবং নোডজেএস মেলিং তালিকায় একটি নির্দিষ্ট উত্তর রয়েছে।
মার্ক ইভান্স

2
মূল এনপিএম বিকাশকারীদের মধ্যে একটি মন্তব্য মন্তব্য সমর্থন বিবেচনা করতে অস্বীকার করেছে package.json। দয়া করে এই বিষয়ে মন্তব্য করুন - সম্ভবত আমরা কীভাবে দরকারী দরকারী হতে পারে তা দেখাতে পারি।
ড্যান ড্যাসক্লেস্কু

5
একটি একক ট্যাগ <বিদ্রূপ />। জেএসএন 5 মন্তব্যগুলি সমর্থন করে json5.org
ক্রিশ্চিয়ান ই।

উত্তর:


450

এটি সম্প্রতি নোড.জেএস মেলিং তালিকায় আলোচনা করা হয়েছে ।

আইজ্যাক শ্লুয়েটার অনুসারে যিনি এনপিএম তৈরি করেছিলেন:

... "//" কীটি কখনই এনপিএম দ্বারা কোনও উদ্দেশ্যে ব্যবহৃত হবে না, এবং মন্তব্যের জন্য সংরক্ষিত ... আপনি যদি একাধিক লাইন মন্তব্য ব্যবহার করতে চান তবে আপনি কোনও অ্যারে বা একাধিক "//" ব্যবহার করতে পারেন কি।

আপনার সাধারণ সরঞ্জামগুলি (এনপিএম, সুতা ইত্যাদি) ব্যবহার করার সময় একাধিক "//" কীগুলি সরানো হবে। এটি বেঁচে আছে:

{ "//": [ 
  "first line", 
  "second line" ] } 

এটি বেঁচে থাকবে না:

{ "//": "this is the first line of a comment", 
  "//": "this is the second line of the comment" } 

58
'নির্ভরতা' বিভাগে প্রতিটি প্রবেশ কী তা ডক করার উপায় আছে? "নির্ভরযোগ্যতা" এর সংক্ষিপ্ত যখন "//" কৌশল কাজ করে না।
rynop

8
নোট করুন যে প্রথম উদাহরণ হিসাবে একাধিক মন্তব্য ব্যবহার করা { "//": "first", "//": "second"}আপনাকে npm versionএবং অন্যান্য কমান্ড লাইন ব্যবহারগুলি থেকে বিরত রাখে যা সাধারণত পুরো জেএসএনকে পুনরায় প্রকাশ করে এবং সদৃশ কীগুলিকে প্রক্রিয়াতে ফেলে দেয়।
jakub.g

60
এক সচেতন থাকবেন "//" শুধুমাত্র ব্যবহার করা যেতে পারে হতে হবে root- এ এর package.jsonঅবজেক্ট। উদাহরণস্বরূপ { "dependencies": { "//": "comment?" }}অবৈধ তবে { "//": "comment!", "dependencies":{}}বৈধ।
ডেভিড_পি

52
এমনকি ডগলাস ক্রকফোর্ডের জেএসওএন কনফিগারেশন ফাইলে মন্তব্য দেওয়ার ক্ষেত্রে কোনও সমস্যা নেই। এনপিএমের সাথে পরিস্থিতিটি ন্যূনতম বলার অপেক্ষা রাখে না।
মুহাম্মদ রেহান সা Saeedদ

5
আমার অভিজ্ঞতায় "//"কী এবং এর মান শেষ পর্যন্ত মুছে যাবে। স্থায়ী মন্তব্য করার উপায় আছে কি?
prhett

116

জেএসএনে মন্তব্য যুক্ত করার জন্য এখানে আরও একটি হ্যাক। থেকে:

{"a": 1, "a": 2}

এর সমতুল্য

{"a": 2}

আপনি যেমন কিছু করতে পারেন:

{
  "devDependencies": "'mocha' not needed as should be globally installed",
  "devDependencies" :  {
    "should": "*"
  }
}

12
এটি নির্দিষ্ট প্যাকেজ স্তরেও কাজ করে। উদাহরণ স্বরূপ. "express": "makes routing better so I don't want to gouge my eyes out", "express": "3.x"। সুতরাং, হ্যাঁ, কলিনি যেমন বলেছেন, "ইয়াক", এবং কলিনই যেমন বলেছেন "ধন্যবাদ"।
juanpaco

22
মনে রাখবেন যে এই হ্যাকটি আপনাকে package.jsonপ্রোগ্রামিক পদ্ধতিতে সর্বদা পরিবর্তন করতে বাধা দেয় , npm version 1.2.3সংস্করণটিকে টুকরো টুকরো করে বলুন - রিডান্ট্যান্ট এন্ট্রিগুলি ফলস্বরূপ জেএসওএন থেকে সরানো হবে।
jakub.g

16
এটি খারাপ পরামর্শ, কারণ কোনও বস্তুর ব্যাখ্যা করার ক্রমটি গ্যারান্টিযুক্ত নয়। উদাহরণস্বরূপ, কিছু পরিস্থিতিতে, আপনার উদাহরণটি 2 এর পরিবর্তে 1 জনের সাথে শেষ হতে পারে
জো স্প্রেগ

6
@ এমপেন ঝুঁকিটি হ'ল কোনও গ্যারান্টি নেই যে JSON কে পার্সিং কোড ক্রমক্রমে এটি করবে।
জো স্প্রেগ

7
রেকর্ডের জন্য, আরএফসি স্পষ্টভাবে বলেছে: "যখন কোনও বস্তুর মধ্যে নামগুলি অনন্য না হয়, তখন এই জাতীয় কোনও জিনিস প্রাপ্ত সফ্টওয়্যারটির আচরণটি অনাকাঙ্ক্ষিত Many অনেকগুলি বাস্তবায়ন কেবলমাত্র শেষ নাম / মান জোয়ারের প্রতিবেদন করে Other অন্যান্য বাস্তবায়নগুলি একটি ত্রুটি বা ব্যর্থতার রিপোর্ট করে অবজেক্টটি বিশ্লেষণ করতে, এবং কয়েকটি প্রয়োগগুলি ডুপ্লিকেট সহ নাম / মান
অ্যালান ট্যাম

106

জটিল এবং হ্যাকী সমাধানগুলিতে এক ঘন্টা নষ্ট করার পরে আমি আমার বড় নির্ভরতা বিভাগে মন্তব্য করার জন্য সহজ এবং বৈধ উভয় সমাধান খুঁজে পেয়েছি package.json। ঠিক এই রকম:

{
  "name": "package name",
  "version": "1.0",
  "description": "package description",
  "scripts": {
    "start": "npm install && node server.js"
  },
  "scriptsComments": {
    "start": "Runs development build on a local server configured by server.js"
  },
  "dependencies": {
    "ajv": "^5.2.2"
  },
  "dependenciesComments": {
    "ajv": "JSON-Schema Validator for validation of API data"
  }
}

যখন একইভাবে বাছাই করা হয়, এখন গিট কমিট ডিফেন্সে বা সম্পাদকের সাথে কাজ করার সময় এই জোড়া নির্ভরতা / মন্তব্যগুলি ট্র্যাক করা আমার পক্ষে খুব সহজ easy package.json

এবং কোনও অতিরিক্ত সরঞ্জাম জড়িত নেই, কেবল সাধারণ এবং বৈধ JSON ON

আশা করি এটি যে কাউকে সাহায্য করবে।


1
এই উপায়টি আরও বুদ্ধিযুক্ত করুন এবং জিনিসগুলি পরিষ্কার রাখুন।
হিতেশ সাহু

4
প্রযুক্তিগতভাবে বৈধ এবং শব্দার্থগতভাবে কার্যকর এমন একটি হ্যাকিবিহীন সমাধানের জন্য ধন্যবাদ।
রায় টিঙ্কার

5
স্ক্রিপ্টগুলি সম্পর্কে মন্তব্যের জন্য, কেন "সহায়তা" স্ক্রিপ্টগুলি সরবরাহ করবেন না, যেমন "scripts": { "postinstall": "echo postinstall stuff goes here", "help-postinstall": "echo helpful stuff goes here" }
পিক

1
@ পিক ধন্যবাদ! আমি কেবলমাত্র খারাপ দিকটিই দেখছি যে প্রকৃত স্ক্রিপ্টগুলি মন্তব্যে মিশ্রিত হবে।
gkond

1
@gkond এই জন্য ধন্যবাদ। আমার কাছে সর্বাধিক জ্ঞান অর্জন করে।
রবিন উইনস্লো

20

অনেক আকর্ষণীয় ধারণা।

আমি যা করছি তা হ'ল:

{
  ...
  "scripts": {
    "about": "echo 'Say something about this project'",
    "about:clean": "echo 'Say something about the clean script'",
    "clean": "do something",
    "about:build": "echo 'Say something about building it'",
    "build": "do something",
    "about:watch": "echo 'Say something about how watch works'",
    "watch": "do something",
  }
  ...
}

এইভাবে আমি উভয়ই স্ক্রিপ্টে "সিউডো-মন্তব্য" পড়তে পারি এবং টার্মিনালে একরকম সহায়তা দেখতে নীচের মত কিছু চালাতে পারি:

npm run about
npm run about:watch

এই আলোচনার জন্য আমার 2 টি :)


চতুর, আমি এটি পছন্দ করি
KorreyD

14

এনপিএস (নোড প্যাকেজ স্ক্রিপ্ট) আমার জন্য এই সমস্যাটি সমাধান করেছে। আপনাকে আপনার এনপিএম স্ক্রিপ্টগুলি আলাদা জেএস ফাইলে রাখতে দেয়, যেখানে আপনি মন্তব্যগুলি গ্লোর এবং আপনার প্রয়োজন মতো অন্য জেএস যুক্তি যুক্ত করতে পারেন। https://www.npmjs.com/package/nps

package-scripts.jsআমার এক প্রকল্পের নমুনা

module.exports = {
  scripts: {
    // makes sure e2e webdrivers are up to date
    postinstall: 'nps webdriver-update',

    // run the webpack dev server and open it in browser on port 7000
    server: 'webpack-dev-server --inline --progress --port 7000 --open',

    // start webpack dev server with full reload on each change
    default: 'nps server',

    // start webpack dev server with hot module replacement
    hmr: 'nps server -- --hot',

    // generates icon font via a gulp task
    iconFont: 'gulp default --gulpfile src/deps/build-scripts/gulp-icon-font.js',

    // No longer used
    // copyFonts: 'copyfiles -f src/app/glb/font/webfonts/**/* dist/1-0-0/font'
  }
}

আমি সবেমাত্র একটি স্থানীয় ইনস্টল করেছি npm install nps -save-devএবং এটি আমার package.jsonস্ক্রিপ্টগুলিতে রেখেছি ।

"scripts": {
    "start": "nps",
    "test": "nps test"
}

13

ডুপ্লিকেট কীগুলি ওভাররাইট করা হয়েছে এ বিষয়টি আপনি সর্বদা অপব্যবহার করতে পারেন। আমি এই মাত্র লিখেছি:

"dependencies": {
  "grunt": "...",
  "grunt-cli": "...",

  "api-easy": "# Here is the pull request: https://github.com/...",
  "api-easy": "git://..."

  "grunt-vows": "...",
  "vows": "..."
}

তবে, এটি স্পষ্ট নয় যে জেএসএন নকল কীগুলি অনুমতি দেয় কিনা (দেখুন কী জেএসওএন সিনট্যাক্স কোনও বস্তুতে নকল কীকে অনুমতি দেয়? এটি এনপিএম দিয়ে কাজ করে বলে মনে হচ্ছে, তাই আমি ঝুঁকি নিই।

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

আপডেট: ডুপ্লিকেট করা কী হ্যাকের একটি বিরক্তিকর অসুবিধা হ'লnpm install --save চুপচাপ সমস্ত নকল মুছে ফেলা। দুর্ভাগ্যক্রমে, এটিকে উপেক্ষা করা খুব সহজ এবং আপনার উদ্দেশ্যমূলক মন্তব্যগুলি চলে গেছে।

"//"হ্যাক এখনও সবচেয়ে নিরাপদ মনে হয় নেই। তবে মাল্টি-লাইন মন্তব্যগুলি এগুলি দ্বারাও সরানো হবে npm install --save


1
"//"হ্যাক devDependencies ভিতরে কাজ করে না। এনপিএম ইউএনসি পথটি সমাধান করার চেষ্টা করে।
দিমিত্রি এস।

আপডেট বাক্যটির জন্য ধন্যবাদ তবে আবার এটি mochaবৈশিষ্ট্যটি মন্তব্য করতে পারে না । এটি এটির একটিরও বেশি যোগ করতে পারে এবং শেষে এনপিএম ব্যবহার করা হবে।
vusan

আমি এটি স্বীকার করতে ঘৃণা করি - তবে আমি এটি "//"
রওসেল

9

আমি একটি মজার হ্যাক ধারণা আছে।

জন্য মন্তব্য বিভাজক হিসাবে উপযুক্ত npm প্যাকেজের নাম তৈরি করুন dependenciesএবং devDependenciespackage.json মধ্যে ব্লক, উদাহরণস্বরূপx----x----x

{
    "name": "app-name",
    "dependencies": {
        "x----x----x": "this is the first line of a comment",
        "babel-cli": "6.x.x",
        "babel-core": "6.x.x",
        "x----x----x": "this is the second line of a comment",
        "knex": "^0.11.1",
        "mocha": "1.20.1",
        "x----x----x": "*"
    }
}

দ্রষ্টব্য : *ব্লকের মতো বৈধ সংস্করণ সহ সর্বশেষ মন্তব্য বিভাজক লাইন যুক্ত করতে হবে ।


6
হ্যাঁ, এটি প্রকৃতপক্ষে উপলভ্য: npmjs.com/package/x----x----x
নভেম্বর পুনরায় বিক্রয় করুন

9
এই উত্তরটি নিয়ে শিহরিত হয়েছিল কিন্তু আমি দৌড়ানোর পরে npm install(এনপিএম 5 ব্যবহার করে) আমার নকল কীগুলি স্বয়ংক্রিয়ভাবে সরানো হয়েছে :(
এরিক মাঝেরুস

@ এরিকমাজেরুস ওফস n, এনপিএম 5 আমার হৃদয়কেও ভেঙে দেয় :(
লিয়াও সান কাই

8

এই থ্রেড দ্বারা অনুপ্রাণিত, আমরা যা ব্যবহার করছি তা এখানে :

{
  "//dependencies": {
    "crypto-exchange": "Unified exchange API"
  },
  "dependencies": {
    "crypto-exchange": "^2.3.3"
  },
  "//devDependencies": {
    "chai": "Assertions",
    "mocha": "Unit testing framwork",
    "sinon": "Spies, Stubs, Mocks",
    "supertest": "Test requests"
  },
  "devDependencies": {
    "chai": "^4.1.2",
    "mocha": "^4.0.1",
    "sinon": "^4.1.3",
    "supertest": "^3.0.0"
  }
}

7

এখনও অবধি, এখানে বেশিরভাগ "হ্যাকস" জেএসএনকে অপব্যবহার করার পরামর্শ দেয়। তবে পরিবর্তে, অন্তর্নিহিত স্ক্রিপ্টিং ভাষার অপব্যবহার করবেন না কেন?

সম্পাদনা প্রাথমিক প্রতিক্রিয়াটি # add comments hereএটিকে মোড়ানো ব্যবহার করে বর্ণনাটি ডানদিকে রেখেছিল; তবে এটি উইন্ডোজে কাজ করে না, কারণ পতাকাগুলি (যেমন এনপিএম রান মাইফ্রেমে ওয়ার্ক - --myframework-flags) এড়ানো হবে। আমি এটিকে সমস্ত প্ল্যাটফর্মগুলিতে কাজ করার জন্য আমার প্রতিক্রিয়া পরিবর্তন করেছি এবং পাঠযোগ্যতার উদ্দেশ্যে কিছু ইনডেন্ট যুক্ত করেছি।

{
 "scripts": {
    "help": "       echo 'Display help information (this screen)';          npm run",
    "myframework": "echo 'Run myframework binary';                          myframework",
    "develop": "    echo 'Run in development mode (with terminal output)';  npm run myframework"
    "start": "      echo 'Start myFramework as a daemon';                   myframework start",
    "stop":  "      echo 'Stop the myFramework daemon';                     myframework stop"
    "test": "echo \"Error: no test specified\" && exit 1"
  }
}

এটা হবে:

  1. JSON সম্মতি ভঙ্গ করবেন না (বা কমপক্ষে এটি হ্যাক নয় এবং আপনার আইডিই আপনাকে বিচিত্র, বিপজ্জনক জিনিস করার জন্য সতর্কতা দেয় না)
  2. ক্রস প্ল্যাটফর্ম কাজ করে (ম্যাকোস এবং উইন্ডোতে পরীক্ষিত, ধরে নেওয়া এটি লিনাক্সে ঠিক কাজ করবে)
  3. দৌড়ের পথে পায় না npm run myframework -- --help
  4. চলমান অবস্থায় অর্থবহ তথ্য আউটপুট দেবে npm run (যা উপলব্ধ স্ক্রিপ্টগুলির তথ্য পেতে চালানোর জন্য আসল কমান্ড)
  5. আরও সুস্পষ্ট সহায়তা কমান্ড উপস্থাপন করে (কিছু ডিভস সচেতন না হলে এনএমপি রান এই জাতীয় আউটপুট উপস্থাপন করে)
  6. কমান্ড নিজে চালানোর সময় কমান্ড এবং এর বিবরণ উভয়ই প্রদর্শিত হবে
  7. খালি খোলার সময় কিছুটা পঠনযোগ্য package.json(ব্যবহার lessবা আপনার প্রিয় আইডিই)

আরগ, আসলে উইন্ডোজটিতে এটি কেবল পতাকা অগ্রাহ্য করবে, তাই 3. সত্য নয়: /
মার্ক ট্রুডেল

এটির সাথে উইন্ডোজ &&;"help": "echo 'Display help information (this screen)' && npm run",
সেন্টিমিডি

1
হ্যাঁ, আমি যা করতে পেরেছি তা হ'ল। ভালো বল ধরা!
মার্ক ট্রুডেল

3
এটি কেবল scriptsবিভাগে কাজ করে । package.jsonঅন্যান্য অনেক জিনিস।
রলফ

সঠিক। তারপরে আবার কী কী আপনি সেখানে নথির প্রয়োজন বোধ করবেন?
মার্ক ট্রুডেল

6

এখানে আমার মন্তব্যগুলিতে package.json/ bower.json:

আমার কাছে package.json.jsএমন স্ক্রিপ্ট রয়েছে যা প্রকৃত রপ্তানি করে package.json। স্ক্রিপ্টটি চালানো পুরানোটিকে ওভাররাইট করে package.jsonএবং কী কী পরিবর্তন করে তা আমাকে জানিয়ে দেয়, আপনাকে npmতৈরি হওয়া স্বয়ংক্রিয় পরিবর্তনগুলি ট্র্যাক রাখতে সহায়তা করার জন্য নিখুঁত । আমি যে প্যাকেজগুলি ব্যবহার করতে চাই সেগুলি আমি প্রগ্রেমেটিকভাবে সংজ্ঞা দিতে পারি।

সর্বশেষতম উদ্ভট কাজটি এখানে: https://gist.github.com/MarZab/72fa6b85bc9e71de5991


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

1
আমি এই ধারণা মত, কিন্তু কেউ সারকথা উপর জিজ্ঞাসা করলেন, যদি সম্পর্কে কি যেখানে আপনি মূল package.json মাধ্যমে পরিবর্তন করছি npm install --saveবা --save-dev?
বিচ্ছিন্ন

হ্যাঁ আমি এই মন্তব্যগুলি মিস করছি; কোনও ভাল সমাধান নেই, আমি গিট ডিফ্সগুলি দেখতে এবং আপডেট করার পরে আমার .js ফাইলটি আপডেট করতাম
মার্জব

1

আমি এর scriptsমত শেষ করেছি:

  "scripts": {
    "//-1a": "---------------------------------------------------------------",
    "//-1b": "---------------------- from node_modules ----------------------",
    "//-1c": "---------------------------------------------------------------",
    "ng": "ng",
    "prettier": "prettier",
    "tslint": "tslint",
    "//-2a": "---------------------------------------------------------------",
    "//-2b": "--------------------------- backend ---------------------------",
    "//-2c": "---------------------------------------------------------------",
    "back:start": "node backend/index.js",
    "back:start:watch": "nodemon",
    "back:build:prod": "tsc -p backend/tsconfig.json",
    "back:serve:prod": "NODE_ENV=production node backend/dist/main.js",
    "back:lint:check": "tslint -c ./backend/tslint.json './backend/src/**/*.ts'",
    "back:lint:fix": "yarn run back:lint:check --fix",
    "back:check": "yarn run back:lint:check && yarn run back:prettier:check",
    "back:check:fix": "yarn run back:lint:fix; yarn run back:prettier:fix",
    "back:prettier:base-files": "yarn run prettier './backend/**/*.ts'",
    "back:prettier:fix": "yarn run back:prettier:base-files --write",
    "back:prettier:check": "yarn run back:prettier:base-files -l",
    "back:test": "ts-node --project backend/tsconfig.json node_modules/jasmine/bin/jasmine ./backend/**/*spec.ts",
    "back:test:watch": "watch 'yarn run back:test' backend",
    "back:test:coverage": "echo TODO",
    "//-3a": "---------------------------------------------------------------",
    "//-3b": "-------------------------- frontend ---------------------------",
    "//-3c": "---------------------------------------------------------------",
    "front:start": "yarn run ng serve",
    "front:test": "yarn run ng test",
    "front:test:ci": "yarn run front:test --single-run --progress=false",
    "front:e2e": "yarn run ng e2e",
    "front:e2e:ci": "yarn run ng e2e --prod --progress=false",
    "front:build:prod": "yarn run ng build --prod --e=prod --no-sourcemap --build-optimizer",
    "front:lint:check": "yarn run ng lint --type-check",
    "front:lint:fix": "yarn run front:lint:check --fix",
    "front:check": "yarn run front:lint:check && yarn run front:prettier:check",
    "front:check:fix": "yarn run front:lint:fix; yarn run front:prettier:fix",
    "front:prettier:base-files": "yarn run prettier \"./frontend/{e2e,src}/**/*.{scss,ts}\"",
    "front:prettier:fix": "yarn run front:prettier:base-files --write",
    "front:prettier:check": "yarn run front:prettier:base-files -l",
    "front:postbuild": "gulp compress",
    "//-4a": "---------------------------------------------------------------",
    "//-4b": "--------------------------- cypress ---------------------------",
    "//-4c": "---------------------------------------------------------------",
    "cy:open": "cypress open",
    "cy:headless": "cypress run",
    "cy:prettier:base-files": "yarn run prettier \"./cypress/**/*.{js,ts}\"",
    "cy:prettier:fix": "yarn run front:prettier:base-files --write",
    "cy:prettier:check": "yarn run front:prettier:base-files -l",
    "//-5a": "---------------------------------------------------------------",
    "//-5b": "--------------------------- common ----------------------------",
    "//-5c": "---------------------------------------------------------------",
    "all:check": "yarn run back:check && yarn run front:check && yarn run cy:prettier:check",
    "all:check:fix": "yarn run back:check:fix && yarn run front:check:fix && yarn run cy:prettier:fix",
    "//-6a": "---------------------------------------------------------------",
    "//-6b": "--------------------------- hooks -----------------------------",
    "//-6c": "---------------------------------------------------------------",
    "precommit": "lint-staged",
    "prepush": "yarn run back:lint:check && yarn run front:lint:check"
  },

আমার উদ্দেশ্য এখানে একটি লাইন স্পষ্ট করা নয়, কেবলমাত্র আমার স্ক্রিপ্টগুলির মধ্যে ব্যাকএন্ড, ফ্রন্টএন্ড, সমস্ত, ইত্যাদির জন্য কিছু ধরণের সীমানার রয়েছে is

আমি 1 এ, 1 বি, 1 সি, 2 এ, এর বিশাল অনুরাগী নই ... তবে কীগুলি আলাদা এবং এর মতো আমার কোনও সমস্যা নেই।


1

যেমন এই উত্তরটি ব্যাখ্যা করে, //কীটি সংরক্ষিত ছিল, সুতরাং এটি মন্তব্যগুলির জন্য প্রচলিতভাবে ব্যবহার করা যেতে পারে। সঙ্গে সমস্যা //মন্তব্য এটি ব্যবহার করা যেতে পারে dependenciesএবং devDependenciesসংস্করণ বাধ্যতা হিসাবে একটি স্ট্রিং সঙ্গে নিয়মিত নির্ভরতা হিসাবে:

"dependencies": {
  "//": "comment"
}

একটি ত্রুটি ট্রিগার,

এনপিএম ইআরআর! কোড EINVALIDPACKAGENAME

এনপিএম ইআরআর! অবৈধ প্যাকেজের নাম "//": নামটিতে কেবলমাত্র ইউআরএল-বান্ধব অক্ষর থাকতে পারে

যদিও নন-স্ট্রিং মান সহ কীগুলি অবৈধ নির্ভরতা হিসাবে বিবেচিত হয় এবং দক্ষতার সাথে উপেক্ষা করা হয়:

"dependencies": {
  "//": ["comment"]
}

একটি নির্ভরতা নিজেই একইভাবে মন্তব্য করা যেতে পারে:

"dependencies": {
  "foo": ["*", "is not needed now"],
}

যেহেতু প্যাকেজ.জসন এনপিএম দ্বারা সংশোধন করা হয় তখন নির্ভরতাগুলি বাছাই করা হয়, তাই নির্ভরতার উপরে নির্ভর করে কোনও মন্তব্য দেওয়া অবৈধ:

"dependencies": {
  "bar": "*",
  "//": ["should be removed in 1.x release"]
  "foo": "*",
}

মন্তব্য কীটি নির্দিষ্ট রেখার সাথে সম্পর্কিত হলে সেই অনুযায়ী নামকরণ করা উচিত, সুতরাং এটি সরানো হবে না:

"dependencies": {
  "bar": "*",
  "foo": "*",
  "foo //": ["should be removed in 1.x release"]
}

নির্দিষ্ট নির্ভরতার ক্ষেত্রে প্রযোজ্য এমন একটি মন্তব্য সেমভারের অংশ হিসাবে যুক্ত করা যেতে পারে:

"dependencies": {
  "bar": "*",
  "foo": "* || should be removed in 1.x release"
}

লক্ষ্য করুন যে এর আগে প্রথম অংশটি ORমেলে না, তবে একটি মন্তব্য পার্স করা যেতে পারে, যেমন 1.x

এই কাজের ক্ষেত্রগুলি সমস্ত বর্তমান এনপিএম সংস্করণ (6 এবং নিম্ন) এর সাথে সামঞ্জস্যপূর্ণ।


1

যেহেতু বেশিরভাগ বিকাশকারী ট্যাগ / টিকা-ভিত্তিক ডকুমেন্টেশনের সাথে পরিচিত, তাই আমি যে কনভেনশনটি ব্যবহার করতে শুরু করেছি তা অনুরূপ। এখানে একটি স্বাদ:

{
  "@comment dependencies": [
    "These are the comments for the `dependencies` section.",
    "The name of the section being commented is included in the key after the `@comment` 'annotation'/'tag' to ensure the keys are unique.",
    "That is, using just \"@comment\" would not be sufficient to keep keys unique if you need to add another comment at the same level.",
    "Because JSON doesn't allow a multi-line string or understand a line continuation operator/character, just use an array for each line of the comment.",
    "Since this is embedded in JSON, the keys should be unique.",
    "Otherwise JSON validators, such as ones built into IDE's, will complain.",
    "Or some tools, such as running `npm install something --save`, will rewrite the `package.json` file but with duplicate keys removed.",
    "",
    "@package react - Using an `@package` 'annotation` could be how you add comments specific to particular packages."
  ],
  "dependencies": {
    ...
  },
  "scripts": {
    "@comment build": "This comment is about the build script.",
    "build": "...",

    "@comment start": [
      "This comment is about the `start` script.",
      "It is wrapped in an array to allow line formatting.",
      "When using npm, as opposed to yarn, to run the script, be sure to add ` -- ` before adding the options.",
      "",
      "@option {number} --port - The port the server should listen on."
    ],
    "start": "...",

    "@comment test": "This comment is about the test script.",
    "test": "..."
  }
}

নোট: জন্য dependencies, devDependenciesইত্যাদি বিভাগে, মন্তব্য টীকা কনফিগারেশন অবজেক্টের অভ্যন্তরে ব্যক্তির প্যাকেজ নির্ভরতা উপরে সরাসরি যেহেতু যোগ করা যাবে না npmএকটি npm প্যাকেজের নাম হতে চাবিকাঠি আশা করা হয়। সুতরাং কারণ@comment dependencies

দ্রষ্টব্য: কিছু প্রসঙ্গে যেমন স্ক্রিপ্টস অবজেক্টে কিছু সম্পাদক / আইডিইরা অ্যারে সম্পর্কে অভিযোগ করতে পারে। স্ক্রিপ্ট প্রসঙ্গে, ভিএস কোড মানটির জন্য একটি স্ট্রিং প্রত্যাশা করে - একটি অ্যারে নয়।

আমি জেএসএন-তে মন্তব্য যুক্ত করার টীকা / ট্যাগ শৈলীর উপায় পছন্দ করি কারণ @প্রতীকটি সাধারণ ঘোষণা থেকে আলাদা from


1

এই উত্তরগুলির সংক্ষিপ্তসার হিসাবে:

  1. একটি একক শীর্ষ-স্তরের ফিল্ড যুক্ত করুন যার //মধ্যে একটি মন্তব্যের স্ট্রিং রয়েছে। এটি কাজ করে তবে এটি সফল হয় কারণ আপনি যে জিনিসটিতে মন্তব্য করছেন তার কাছে আপনি মন্তব্য রাখতে পারবেন না।

  2. শুরু করে একাধিক শীর্ষ-স্তরের ক্ষেত্র যুক্ত করুন , উদাহরণস্বরূপ এতে একটি মন্তব্যের স্ট্রিং রয়েছে। এটি আরও ভাল তবে এটি কেবল আপনাকে শীর্ষ স্তরের মন্তব্য করতে দেয় allows আপনি পৃথক নির্ভরতা মন্তব্য করতে পারবেন না। ////dependencies

  3. যোগ echoআপনার আদেশগুলি scripts। এটি কাজ করে তবে এটি সফল হয় কারণ আপনি কেবল এটি ব্যবহার করতে পারেন scripts

এই সমাধানগুলিও খুব পাঠযোগ্য নয়। তারা এক টন ভিজ্যুয়াল শব্দের যোগ করে এবং আইডিই তাদের মন্তব্য হিসাবে হাইলাইট করে না highlight

আমি মনে করি একমাত্র যুক্তিসঙ্গত সমাধান হ'ল package.jsonঅন্য ফাইল থেকে উত্পন্ন করা । সবচেয়ে সহজ উপায় হ'ল আপনার JSON কে জাভাস্ক্রিপ্ট হিসাবে লিখুন এবং নোডটি এতে লিখতে ব্যবহার করুন package.json। এই ফাইলটি হিসাবে সংরক্ষণ করুন package.json.mjs, chmod +xএটা, এবং তারপর আপনি শুধু এটি চালানোর আপনার জেনারেট করতে পারবেন না package.json

#!/usr/bin/env node

import { writeFileSync } from "fs";

const config = {
  // TODO: Think of better name.
  name: "foo",
  dependencies: {
    // Bar 2.0 does not work due to bug 12345.
    bar: "^1.2.0",
  },
  // Look at these beautify comments. Perfectly syntax highlighted, you
  // can put them anywhere and there no risk of some tool removing them.
};

writeFileSync("package.json", JSON.stringify({
    "//": "This file is \x40generated from package.json.mjs; do not edit.",
    ...config
  }, null, 2));

এটি //সম্পাদনা থেকে লোকদের সতর্ক করতে কী ব্যবহার করে । \x40generatedইচ্ছাকৃত। এটি রূপান্তরিত @generatedহয় package.jsonএবং এর অর্থ কোনও কোড পর্যালোচনা সিস্টেমগুলি ডিফল্টরূপে সেই ফাইলটি ধসে পড়ে।

এটি আপনার বিল্ড সিস্টেমে একটি অতিরিক্ত পদক্ষেপ তবে এটি অন্যান্য হ্যাকগুলিকে এখানে পরাজিত করে।


0

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

"//": {
  "alpaca": "we use the bootstrap version",
  "eonasdan-bootstrap-datetimepicker": "instead of bootstrap-datetimepicker",
  "moment-with-locales": "is part of moment"
},

যা রুট কী হিসাবে আমার আইডিই অনুযায়ী 'বৈধ' তবে এর মধ্যে dependenciesএকটি স্ট্রিংয়ের মান আশা করে।


হ্যাঁ বি / সি আপনি আসলেই পারবেন না তবে //সর্বত্রই মূল চাবিকাঠি, মন্তব্যগুলির জন্য এটি সত্যিই ভাল বিকল্প নয়, বিশেষত যখন মন্তব্যগুলিতে কোনও সম্পাদক ইত্যাদির সাথে চমৎকার বাক্য গঠন থাকতে পারে
আলেকজান্ডার মিলস

0

আর একটি হ্যাক। আমি package.jsonএকটি হ্যান্ডেলবারের টেম্পলেটটির প্রসঙ্গ হিসাবে পড়তে একটি স্ক্রিপ্ট তৈরি করেছি ।

যদি কেউ এই পদ্ধতিকে দরকারী মনে করে তবে নীচের কোড:

const templateData = require('../package.json');
const Handlebars = require('handlebars');
const fs = require('fs-extra');
const outputPath = __dirname + '/../package-json-comments.md';
const srcTemplatePath = __dirname + '/package-json-comments/package-json-comments.hbs';

Handlebars.registerHelper('objlist', function() {
  // first arg is object, list is a set of keys for that obj
  const obj = arguments[0];
  const list = Array.prototype.slice.call(arguments, 1).slice(0,-1);

  const mdList = list.map(function(k) {
    return '* ' + k + ': ' + obj[k];
  });

  return new Handlebars.SafeString(mdList.join("\n"));
});

fs.readFile(srcTemplatePath, 'utf8', function(err, srcTemplate){
  if (err) throw err;
  const template = Handlebars.compile(srcTemplate);
  const content = template(templateData);

  fs.writeFile(outputPath, content, function(err) {
    if (err) throw err;
  });
});

হ্যান্ডেলবার্স টেম্পলেট ফাইল package-json-comments.hbs

### Dependency Comments
For package: {{ name }}: {{version}}

#### Current Core Packages
should be safe to update
{{{objlist dependencies
           "@material-ui/core"
           "@material-ui/icons"
           "@material-ui/styles"
}}}

#### Lagging Core Packages
breaks current code if updated
{{{objlist dependencies
           "amazon-cognito-identity-js"
}}}

#### Major version change
Not tested yet
{{{objlist dependencies
           "react-dev-utils"
           "react-redux"
           "react-router"
           "redux-localstorage-simple"

}}}

0

এনপিএম প্যাকেজ.জসনের জন্য 2 টি উপায় খুঁজে পাওয়া গেছে (এই কথোপকথনটি পড়ার পরে):

  "devDependencies": {
    "del-comment": [
      "some-text"
    ],
    "del": "^5.1.0 ! inner comment",
    "envify-comment": [
      "some-text"
    ],
    "envify": "4.1.0 ! inner comment"
  }

তবে "- সেভ" বা "--সেভ-ডেভের সাথে প্যাকেজটির আপডেট বা পুনরায় ইনস্টল করে" "4.1.0 এর মত মন্তব্য করুন! মন্তব্য "সংশ্লিষ্ট জায়গায় মুছে ফেলা হবে। এবং এই সমস্ত এনপিএম নিরীক্ষা ভঙ্গ হবে।


এই নামকরণ প্যাকেজ ইনস্টল করার চেষ্টা করবে না del-commentএবং envify-comment?
বেনি চেরনিয়াভস্কি-পাসকিন

-1

জেএসএন-তে কোনও মন্তব্য না করায় হতাশার বিষয়টি আমি গ্রহণ করি। আমি নোডগুলি তৈরি করি, তারা যে নোডগুলি উল্লেখ করে তার জন্য নাম দেওয়া হয়েছে তবে আন্ডারস্কোর সহ উপসর্গযুক্ত। এটি অসম্পূর্ণ, তবে কার্যকরী।

{
  "name": "myapp",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "react": "^16.3.2",
    "react-dom": "^16.3.2",
    "react-scripts": "1.1.4"
  },
  "scripts": {
    "__start": [
        "a note about how the start script works"
    ],
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  },
  "__proxy": [
    "A note about how proxy works",
    "multilines are easy enough to add"
  ],
  "proxy": "http://server.whatever.com:8000"
}

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