Node.jsの12の簡単な初期モゞュヌル開発手順

[アリストテレス] 「最初はすべおの半分以䞊です。」



これは非垞に叀いGTDの原則です。その幎霢はおそらく数千歳です。 たずえば、りィキクォヌトは珟圚 、それをアリストテレスに垰属させおいたすが、蚌拠を裏付けるものではありたせん。その本質は、プロゞェクトをれロから開始するこずは非垞に困難な堎合があるこずです。 しかし、いく぀かの簡単な初期ステップがあり、その実装が郚分的に完成したプロゞェクトの倖芳に぀ながる堎合、「慣性によっお」䜜業を続けるこずがはるかに簡単になりたす-このプロゞェクトがすでに開始されただけでなく、さらに準備ができおいるように簡単です半分より。 たた、最初のステップがどうあるべきかを事前によく知っおいる堎合、それを行うこずで間違いを犯すこずは困難です。



オヌプン゜ヌスのNode.js甚に12個以䞊のモゞュヌルを䜜成し、npmパッケヌゞずしお公開する機䌚がありたした。 より倚くのモゞュヌルを䜜成すればするほど、それらを䜜成するための最初のステップは同じであり、同じ順序で実行できるこずさえも詊行錯誀を含む気づきたした。 今日、Node゚ンゞン甚のJavaScriptコヌドを蚘述するプログラマヌの䜜業に圹立぀こずを期埅しお、この順序を公開したす。



これらの各ステップは非垞にシンプルで論理的です。



ステップ1. npmパッケヌゞ名ずリポゞトリを䜜成する



名前がなければ、䜕も機胜したせん。 プロゞェクトの名前がないず、githubのリポゞトリたたはnpmパッケヌゞを䜜成できたせん。



npmパッケヌゞ名が事前に取埗されおいないこずを確認しおください。 䟋は次のずおりです。秋にパッケヌゞに「autumn」 たたは「fall 」ずいう名前を付けるこずにした堎合は、 https//www.npmjs.org/package/autumn および https://www.npmjs.org/package/fallに アクセス しお ください。これらの名前のnpmパッケヌゞが既に存圚するこずを劎働者が確信させたす。



npmパッケヌゞの名前が単玔な単語たたはよく知られた専門甚語である堎合、リポゞトリの名前を取埗するために「node-」プレフィックスを远加するこずを怜蚎しおください。 たずえば、 sqlite3パッケヌゞのコヌドはnode-sqlite3リポゞトリに保存され、 openパッケヌゞのコヌドはnode-openリポゞトリに保存されたす。この远加は、他のプログラミング蚀語で同じ名前のプロゞェクトに取り組むプログラマヌの䟿宜のために行われたす。 たずえば、 誰かがすでにRust、Ruby、たたはPythonで「open」ず呌ばれるプロゞェクトを持っおいる堎合、名前の競合の結果を経隓するのではなく、圌ずノヌドオヌプンリポゞトリが遞択されおいないフォヌクを行うこずができたす。



npmパッケヌゞには短い名前ず長い名前がありたすか 短い堎合は手動で入力する方が簡単ですたずえば、 「 npm install 」の埌のコマンドラむンで、長い堎合はコピヌされたすこのアクションはより正確ですが、時間がかかり、利䟿性が䜎いず認識されたす。 たた、サむトnodei.coは、npmパッケヌゞのダりンロヌドに関する統蚈情報を含むヒストグラムを䜜成したす。その幅は、パッケヌゞ名の長さによっお異なりたす名前党䜓がヒストグラムに収たるように。 以䞋に2぀の䟋を瀺したす。



[ヒストグラム番号1uue]



[ヒストグラム番号2fidonet-jam]



名前が長すぎるモゞュヌルの堎合、そのようなヒストグラムの幅が倧きくなるず、モゞュヌルに関する芁玄情報の準備を開始するずきに、他の画像の右たたは巊ではなく、別の行に統蚈を配眮する必芁がありたす。 -GithubのREADMEず同じくらい簡単です。



ステップ2.簡単な説明の䜜成



短い説明は、Githubでプロゞェクトを䜜成するずき、およびその埌たずえば、 package.jsonファむルの説明フィヌルドに入力するずきに圹立ちたす。



モゞュヌルの機胜を説明する短い文章を1぀だけ曞くのが最善です。 これにより、怜玢性が向䞊し、倚くのサむトのパッケヌゞたたはリポゞトリの名前にハむパヌリンクが付きたす。 説明を長くしすぎるず、 Twitter および説明の長さをトリミングする他のサむトのカヌドに収たりたせん。 さらに、たずえそれが適合したずしおも、リストを流readingに読んでいる間、䞀般の人々はそれを最埌たで読み終えるこずはありたせん。



ステップ3.自動的に読み蟌たれるREADMEファむルを䜿甚しおGithubリポゞトリを䜜成したす。



通垞、Nodeモゞュヌルリポゞトリはgithubで䜜成されたす。 私はこの芏則の䟋倖に遭遇したしたが、めったにありたせん。 したがっお、ここではGithubずGitの䜿甚に基づいおすべおの手順を説明し、他のDVCSナヌザヌや他のオヌプン゜ヌスホスティングプロバむダヌの読者に、これらの手順を自分自身に適合させる機䌚を提䟛したす。これは難しいビゞネスではありたせん。



https://github.com/newペヌゞで、リポゞトリの名前ず説明を蚘入するこずを提案したす前の2぀の手順で䞡方を考え出すこずができたす。たた、 READMEファむルプロゞェクトの説明、 ラむセンス テキスト コヌドがどれだけ開いおいるか 、. gitignoreファむル䞍芁な䞀時ファむル、補助ファむル、ゞャンクファむルをリポゞトリにアップロヌドしないようにするため。



Githubリポゞトリに最初から少なくずも1぀のファむルがある堎合、リポゞトリを耇補するこずができたすたずえば、 「 git clone 」コマンドを䜿甚-ロヌカルリポゞトリを初期化するよりも高速で簡単玄1.5たたは2回ですたずえば、 「 git init 」コマンドを䜿甚しお、蚭定に手を入れお、githubリポゞトリのアドレスをorigin ずしお登録したす。



ただし、Githubによっお自動グレヌトされたラむセンスファむルは、倚くの堎合、それ自䜓で線集する必芁がありたずえば、Githubログむンを䜿甚する代わりに、フルネヌムたたは組織名を瀺したす、どのファむルのアむデアに埓っお、自動生成された.gitignoreに䜕かを远加するこずもできたすリポゞトリは必芁ありたせん。 したがっお、人生で最初のNodeモゞュヌルを䜜成しない堎合は、READMEファむルの自動䜜成のみに限定し 、以前のモゞュヌルの1぀からラむセンスず .gitignore既補をコピヌするこずをお 勧めしたす。 れロからではなく、Github 自動生成の結果からそれらを再床行うこずは 、 ムダ 無駄、䜙分な䜜業であり、線集の履歎を乱雑にする無駄です。



Githubでリポゞトリを䜜成した埌、リポゞトリ蚭定に必芁なすべおの倉曎を忘れずに行っおください。 たずえば、時間がほずんどないため、Wikiを監芖する時間がない堎合は、リポゞトリでWikiサポヌトを無効にできたす。 たた、たずえば、他のリポゞトリだけでなく、すべおのリポゞトリだけでなく、スタヌ付きリスト星でマヌクされたリポゞトリのリストの衚瀺に慣れおいる堎合は、最初に䜜成したリポゞトリをすぐに新しく䜜成したリポゞトリに配眮できたす。



ステップ4.ラむセンス付きのテキストファむルを远加する



このステップを遅らせないこずをお勧めしたす。以降のすべおの線集がどのラむセンスに適甚されるのかを早めに明らかにするのが良いでしょう。



前のステップで述べたように、人生の最初のNodeモゞュヌルを䜜成しおいない堎合は、別のモゞュヌルからLICENSE ファむルをコピヌし、必芁に応じおテキストの幎を修正し、コミットできたす。



オヌプン゜ヌスコヌドを配垃するラむセンスを初めお決定する堎合は、コミュニティの䟋に埓うこずができたすNode.jsコミュニティでは、私の知る限り、MITラむセンスが最も人気がありたすが、このルヌルには䟋倖がありたす 、たたはchoosealicense.com 、たたはその䞡方を参照しおください。



ステップ5. .gitignore および .npmignoreファむルを远加する 。



ご存じのずおり、 .gitignoreファむルには、Gitリポゞトリにあるべきではないファむルずディレクトリの名前がリストされおいたす。 これらには、原則ずしお、プロゞェクトのアヌカむブず配垃、ログ、デヌタベヌス、オペレヌティングシステムの補助ファむルたずえば、特定のサブディレクトリに含たれる画像のサムネむルのリポゞトリが含たれたす。



1぀たたは耇数のNodeモゞュヌルが䟝存関係ずしお䜿甚されるプロゞェクトを開発する堎合、バヌゞョンずnpmパッケヌゞのコンテンツずの察応は明確なので、 node_modulesディレクトリ名を.gitignoreファむルに远加するこずは非垞に適切です。したがっお、Gitリポゞトリにファむルのみを保存するだけで十分ですpackage.json 䟝存関係の名前ずバヌゞョンをリストしたすが、必芁なモゞュヌル自䜓はリストしたせん。



私の芖野を広げるために、Mikeal Rogersは完党に反察の勧告を䜜成し 、積極的に掚進したこずに蚀及したす。しかし、これは2014幎にnpmパッケヌゞのバヌゞョンずコンテンツの察応が明確になる前に起こりたした。



npm-debug.logレポヌトの名前を.gitignoreファむルに远加するず䟿利です。このファむルは、 npmパッケヌゞの操䜜䞭に゚ラヌが発生した堎合に衚瀺されたす。



その結果、 .gitignoreファむルは 䜕らかの圢匏を取りたす。



.gitignore
# ,  *.7z *.dmg *.gz *.iso *.jar *.rar *.tar *.zip #  ,  *.log *.sql *.sqlite #    Thumbs.db Desktop.ini .DS_Store* ehthumbs.db Icon? #  Node,  npm node_modules npm-debug.log
      
      





.npmignoreファむルは.gitignoreファむルにほが䌌おいたすが 、モゞュヌルのnpmパッケヌゞに含めるべきではないファむルずサブディレクトリの名前をリストしたす。



.gitignoreの内容党䜓を.npmignoreにコピヌしおから、 テストサブディレクトリの名前たたはモゞュヌルのテストを保存する他の堎所を远加するこずをお勧めしたす。 テストは開発に非垞に圹立぀ため、 Gitリポゞトリでも非垞に適切ですが、テストのダりンロヌドず保存はモゞュヌルの゚ンドナヌザヌにずっお䜙分な負担になりたす。぀たり、 npmパッケヌゞの倧郚分の消費者はこれらで構成されたす。



原則ずしお、新しいNodeモゞュヌルで䜜業を開始するずき、 .gitignore および.npmignoreファむルを以前のモゞュヌルから倉曎せずにコピヌできたす人生で最初のNodeモゞュヌルを䜜成しおいる堎合を陀く。 たれに修正する必芁がありたすが、そのような堎合が発生するこずを知っおおく必芁がありたす。 特に、 いずれかのモゞュヌルがZIPアヌカむブを凊理する堎合、少なくずも1぀以䞊のテストケヌスをリポゞトリに配眮するために、 .gitignoreファむルから「 * .zip 」行を削陀する必芁がありたす。そのようなニヌズが生じたした。たずえば、 Fidonetのnodelistを読み取るためのモゞュヌルを開発するずき。



ステップ6. README.mdのモゞュヌルの説明、ラむセンスおよび未完成の開発に぀いおの説明。



3番目のステップで、モゞュヌルの名前ず簡単な説明のみで構成されるREADMEファむルが自動的に䜜成されたこずを思い出したす。



これで、この説明はプロゞェクトの目暙ず目的に぀いお話すこずでいくらか補充できたす。 さらに、説明の別のサブセクションで、ラむセンスの皮類たずえば、MITたたはBSDず、ラむセンスの党文を含むファむルの名前通垞はLICENSE に蚀及するこずが適切です。



読者がこの段階でモゞュヌルの機胜を実際に知っおいるずいう詊みが倱望を匕き起こさないようにたたは、さらに良いこずには、そのような詊みがこれたでのずころたったく発生しないように、モゞュヌルの開発が䞍完党であるだけでなく、初期段階。



このような補充の埌、READMEファむルはnpmパッケヌゞの初期バヌゞョンの初期蚘述ずしお適しおいたす。



ただし、READMEで予定されおいるパッケヌゞ名に぀いお蚀及しおいる堎合、このステップの結果をリポゞトリに急いで投皿しないでくださいたずえば、 gitコマンド commitを䜿甚 。さらに、githubでそれらを公開するこずを急がないでくださいたずえば、 gitコマンド push  。 実際には、蚈画された名前のパッケヌゞの最初の登録぀たり、次のステップで凊理したすが倱敗した堎合、READMEでは別の名前を登録する必芁がありたすこれにより、線集履歎の目詰たりず消去の間の䞍快な遞択に぀ながらない方が良いでしょう ; Githubでの公開npmでの公開に先行する堎合は䞀郚のサむバヌスクワッタヌあなたの前にパッケヌゞ名を賭けたいを譊告するこずもできたすが、普通のナヌザヌコマンド「npm install package-name」なぜそれが期埅どおりに機胜しないのか疑問に思いたす。



䞀般に、このステップでは、READMEでパッケヌゞ名を蚈画するのは早すぎるず考えるこずをお勧めしたす。



手順7. package.jsonを䜜成し、初期バヌゞョンのnpmパッケヌゞを登録したす。



このステップの最終的な目暙は、以前に考えられた名前でnpmパッケヌゞを登録しお、その名前を杭打ちするこずです。



package.jsonファむルを䜜成し、その䞭のオブゞェクトのいく぀かのフィヌルドに入力するこずにより、このステップを開始する必芁がありたす。 この堎合、 JSON圢匏ずnpm Webサむトで提䟛されるフィヌルドの意味の説明を同時に芳察する必芁がありたす。



モゞュヌルに぀いお質問する「 npm init 」コマンドがあり、回答に埓っおpackage.jsonを自分で入力したす。 ただし、私はpackage.jsonをテキスト゚ディタヌで入力するこずを奜みたす-これにより、すべおのJSONコヌドを質問で垌釈されおいない最も玔粋な圢匏で確認でき、さらに、必芁に応じお䜕かを修正たたは倉曎するための簡単な機䌚が埗られたす。



実際、 npmサむトのドキュメントは誰にずっおも十分なはずです。 しかし、私はそれを我慢せず、Habrahabrでは、 package.jsonに配眮されおいる䞻芁なフィヌルドの意味に぀いお簡単に觊れたす。



「 name 」フィヌルドの倀は、目的のnpmパッケヌゞ名を瀺したす。 もっず早い段階で最初のステップで考えるこずができたす。



「 バヌゞョン 」フィヌルドの倀は、 セマンティックバヌゞョニング暙準に埓っおパッケヌゞのバヌゞョンを瀺したす。 初期バヌゞョンを登録するには、 " " 0.0.1 " "をお勧めしたす。



「 説明 」フィヌルドの倀は、パッケヌゞの簡単な説明を瀺したす。 あなたはもっず早く第2段階で考えるこずができたす。



「 キヌワヌド 」フィヌルドの倀は、npmサむトでの怜玢でパッケヌゞを芋぀けるためのキヌワヌドの配列を瀺したす。 Habrahabrのブログ投皿のテキストの䞋にラベルをリストしたこずがある人なら誰でも、このタスクに簡単に察凊できたす。



「 license 」フィヌルドの倀は、 SPDX ID暙準に準拠する識別子文字列を瀺し、以前にコヌド甚に遞択したラむセンス4番目のステップを意味したす。



「 author 」フィヌルドの倀は、パッケヌゞの䜜成者名および堎合によっおは連絡先情報を含む文字列たたはオブゞェクトを瀺したす。 そこに自分自身を瀺したす。



「 リポゞトリ 」フィヌルドの倀は、 リポゞトリのタむプずアドレスを含むオブゞェクトを瀺したす。



「 main 」フィヌルドの倀は、モゞュヌルコヌドのメむンファむルぞのパスを瀺したすこれは、 moduleNameの代わりにモゞュヌルの名前を指定する堎合、Node関数「 require moduleName  」から呌び出されるファむルず同じです。



モゞュヌルがコマンドラむンナヌティリティずしお䜿甚される堎合、倀が「 true 」のpackageGeneralプロパティモゞュヌルのグロヌバルむンストヌルを掚奚したすおよび「 」のような倀のプロパティ「 bin 」 がpackage.jsonのそのようなモゞュヌルに圹立ちたす。 moduleName.js " " javascriptモゞュヌルの名前に䞀臎するコマンドによっお起動されるものぞのパスを含む。 「 / Usr / bin / env node 」ずいう行は、npmがjavascriptのむンストヌルずそれに続く操䜜がWindowsで実行される堎合でもそこを参照するため、そのようなjavascriptの最初の行です。



このステップのモゞュヌルコヌドは最も単玔なものにするこずができたす。たずえば、 ある皮の 「 hello world 」や「use strict 」などです。



コミットの説明では、「パッケヌゞが登録されおいる」ずいうフレヌズたたは「パッケヌゞが公開されおいる」を入れお、 「 npm publish 」コマンドが成功した堎合にのみコミットしたす。 したがっお、コミットは時期尚早ではありたせん 「 npm publish 」コマンドを発行するず、1぀以䞊の単玔な゚ラヌが明らかになるこずがありたすが、その修正は線集の履歎を無駄にするだけです。



ステップ8. README.mdのむンストヌルの説明



このステップでは、README.mdファむルに、将来のナヌザヌに2぀のコマンドの意味を䌝える説明を入れるこずが適切です。





将来のナヌザヌに䞀方のチヌムず他方のチヌムの結果の違いを説明するこずも圹立ちたす-たずえば、npmではなくGithubのみにテストを保存する npmパッケヌゞのボリュヌムを増加させないようにするために先に5番目のステップで行われた決定に぀いお䌝えるために



たた、README.mdファむルの最新バヌゞョンはGithubにのみ存圚するこずもわかりたすコヌドの倉曎埌だけでなく、READMEの倉曎埌もnpmパッケヌゞの次の新しいバヌゞョンを䜜成および公開する予定がない堎合。



同じステップで、 nodei.coの Webサむトで、䟝存関係の数ずモゞュヌル蚭定を瀺す情報統蚈カりンタヌずヒストグラムの適切なコヌドを取埗し、README.mdファむルに配眮するこずもできたす。



ステップ9.メむンモゞュヌルコヌドの䜜業の開始



この段階では、モゞュヌルの基瀎぀たり、 ある皮の 「 hello world 」たたは「use strict」 がゆっくりず合理的な䜕かを行うコヌドに倉わり぀぀あるため、1぀以䞊の関数たたはオブゞェクトのメ゜ッド、たたはナヌティリティコマンド。



゜ヌスコヌドのこれらすべおの機胜は、ビルドするずきにREADME.mdで慎重に文曞化しお、コヌド自䜓がオヌプン゜ヌスコヌドの唯䞀の文曞にならないようにする必芁がありたす。



さらに、゜ヌスコヌドがこの段階に達するずすぐに、コヌドの正確性ずその動䜜を怜蚌するテストでそれをカバヌするずすぐに䟿利です。 これが次のステップです。



ステップ10.テストを促進し、説明したす。



このステップでは、README.mdに、゜ヌスコヌドの正しいスペルたずえばJSHintずその動䜜たずえば、Mochaをむンストヌルする方法ずテストする手段の䜿甚方法に関する明確な情報を入力する必芁がありたす。



この時点で、テストツヌルの構成ファむルたずえば、 JSHintの.jshintrcもリポゞトリに远加されたす。



scripts.testフィヌルドは、 package.jsonファむル内のオブゞェクトに入力されたす2぀たたは3぀のテストツヌルがある堎合、 scripts.pretest およびscripts.posttestフィヌルドも 入力されたす 。



䟋



 "scripts": { "pretest": "jshint .js test/", "test": "mocha --reporter spec --timeout 60s" }
      
      





このステップから開始しお、各コミットの前に、 npm testコマンドが゚ラヌなしでパスするこずを確認するこずをお勧めしたす。 このコマンドをより意味のあるものにするには、Mochaを䜿甚するずきに、少なくずも1぀のテストを蚘述し、 test /サブディレクトリに配眮する必芁がありたす。



ステップ11. Travis CIの構成



Travis CIは、無料のオヌプン゜ヌステストサヌビスを提䟛するサヌビスです。コミットするたびに、Githubからコヌドを自動的にダりンロヌドし、さたざたな環境でテストを実行しお、コヌドが正垞に機胜するかどうかを確認できたす。



Travis CIを最初に䜿甚する準備、぀たりドキュメントを読んで登録するこずをお勧めしたす。



新しいjavascriptモゞュヌルの接続ははるかに簡単で、2぀の簡単な手順で構成されおいたす。



たず、ナヌザヌプロファむルのhttps://travis-ci.org/profile/にアクセスしたす。 スむッチが衚瀺されたす。各スむッチは、githubのリポゞトリの1぀に察応しおいたす。 次のようになりたす。



[スクリヌンショット]



新しいモゞュヌルに察応するスむッチをオンの䜍眮に匕く必芁がありたす。



次に、その盎埌に、.travis.ymlファむルをリポゞトリのルヌトにコミットしたす。 このファむルには、テストの実行に必芁な環境が蚘述されおいたす。 これに぀いおはTravisのドキュメントで詳しく読むこずができたすが、通垞の内容は非垞に簡単で、次のようになりたす。



 language: node_js node_js: - "0.10" - "0.12" - iojs before_install: - "npm install -g npm" - "npm config set spin false" before_script: - "npm install jshint" - "npm install mocha"
      
      





「 蚀語 」セクションには、Nodeの「蚀語」より正確にぱンゞンの衚瀺が衚瀺され、 「 node_js 」セクションには、モゞュヌルがテストされるバヌゞョンのリストが衚瀺されたす。



before_installセクションには、 npmを最新の安定バヌゞョンに曎新するコマンドず、回転カヌ゜ルのアニメヌションを無効にするコマンドが含たれおいたすTravis CIログにはただ衚瀺されないため、時間を無駄にするこずはありたせん。



before_scriptセクションには、テストツヌルこの䟋ではJSHintずMochaをむンストヌルするコマンドが含たれおいたす。



ステップ12. Travis CIむンゞケヌタヌを README.mdに远加し たす 。



Travis CI は、画像の URLを提䟛したす。これは、GithubのREADMEに1回配眮され、その埌毎回、最埌のコミットの結果がTravis CIで正垞にテストされたかどうかを確認できたす。



サヌバヌshields.ioは、この画像のわずかに異なる圢状を取埗する機䌚を提䟛したす-たずえば、ボリュヌムの倉曎、゚ッゞの䞞み、たたは碑文の䞀郚。



メ゜ッドの䞀般化



これで、Node.js甚のモゞュヌルを開発するための簡単な初期ステップのリストが終わりたした。



明らかに、そのような方法぀たり、事前に準備された手順の再珟から開始するこずで最初の衝動を䞎える機䌚がNodeのモゞュヌルの開発に適しおいるこずを願っおいたす。



䟋を挙げたしょう。 開発者の麻痺に関する蚘事 PerseptronYarが翻蚳では、Habrahabrで、䜜業を開始する珟代のすべおのサむトビルダヌは、 ブリダンロバのように、ほが同等のアピヌルの異なる可胜性の間で明癜な遞択をする緊急の必芁性にすぐに盎面するずいう話を芋るこずができたす ただし、そのような遞択を䞀床だけ行うこずができず、将来的に単にそれに固執するこずができれば、将来の人生を倧幅に簡玠化できたす。 これを行うには、そのような各ステップで行われた遞択を蚘述しお修正し、完成したフォヌムにこれらのすべおのステップを曞き留めおたずえば、「CSSフレヌムワヌクを遞択」ではなく、Bootstrapを遞択した堎合は「Bootstrapをむンストヌル」、それに埓っおください各プロゞェクトの開始時に、プロゞェクトの合間にのみ新しい䜕かを意識的に詊す理由がなかった堎合たずえば、読者が新しいブラりザに埐々に移行するずきに、最新のJavaScript機胜を優先しおUnderscore.jsを拒吊できたすそのようなカヌト ozhnost。



All Articles