NPMさんは本当にできますか?(一)

5651 ワード

NPMとは何ですか
npmは何ですか?npmは実はNode.jsのパケット管理ツールです.なぜ私たちは管理ツールが必要ですか?Node.js上開発にいる時、多くの人が書いているJavaScriptコードを使うからです.他の人が書いたカバンを使うなら、毎回名称によって公式サイトを検索して、コードをダウンロードして、解凍して、scriptを導入して、とても煩わしいです.そこで集中的に管理するツールが生まれました.みんなは自分で開発したモジュールを梱包してnpm公式サイトに置いています.使うなら、npmでインストールすれば、直接使えます.コードの存在に関わらず、どこからダウンロードすればいいですか?もっと重要なのは、モジュールAを使用する場合、モジュールAはモジュールBに依存し、モジュールBはモジュールXとモジュールYに依存します.npmは依存関係によって、すべての依存パケットをダウンロードして管理してもいいです.さもなくば、私達自身で手動で管理して、きっと面倒で間違いやすいです.
npmの歴史
npmがない時代にモジュールを獲得しますか?それともフレームを獲得する方法は何ですか?
  • 取得->JQ
  • 取得->Boottrap
  • 取得->Undscore
  • 私たちのGitHub
            jQuery        
    私たちプログラマはもちろんこのような古くて効率の悪いことを受け入れられません.より効率的で合理的なコード管理方式が必要です.他の言語を考えてみてください
    言語
    パッケージ管理ツール
    Java
    まぜん
    Python
    distribute、setuptools、distutils、easyinstall、pip
    PHP
    Compser
    先端がない!我慢できない!この時一人が立ってきました.Isaac Z.Schlueter GitHubの下の略称(Issac)
    大体の構想を実現する.
  • クラウドサービスを探して、コードを全部管理します.
  • その後、jQuery、Bootstrapなどのフレームワークの座っている作者にnpm publishを使ってコードをクラウドサービスに提出します.
  • コミュニティの他の人がこれらのコードを使いたいなら、npm installを通じてこれらのコードをダウンロードすることができます.
  • ダウンロードしたコードがnode_に表示されます.modulesディレクトリでは、requireを導入して使用できます.
  • 後続の発展
    IsaazはjQueryの作者John Resiggに通知します.彼は承諾しますか?これは未知数とは限らないですが、やはりやります.フロントエンドの開発技師だけがこれを知っています.どのように急速に先端コミュニティで盛り上がりましたか?npmの発展はNode.jsの発展と相補的である.Node.jsはドイツで働いている米国のプログラマーRyan Dahl githubのアドレスによって書かれています.彼はNode.jsを書きましたが、Node.jsは当時管理器が一つ足りませんでした.そこで彼はIsaazと合流して、Node.jsはnpmを内蔵しました.後のことはみんな知っています.Node.jsが怒りました.
    package.json
    空のファイルnpm initを初期化すると、このファイルが誕生します.
    私はここでexpressのpackage.jsonを探しました.
    {
      "name": "express", //   
      "description": "Fast, unopinionated, minimalist web framework", //     
      "version": "4.13.3", //      
      "author": { //       
        "name": "TJ Holowaychuk",
        "email": "[email protected]"
      },
      "contributors": [ //          
        {
          "name": "Aaron Heckmann",
          "email": "[email protected]"
        }
        // ...
      ],
      "license": "MIT", //               ,                  ,            。
      "repository": { //            ,    git   svn,git    Github  。
        "type": "git",
        "url": "git+https://github.com/strongloop/express.git"
      },
      "homepage": "http://expressjs.com/", //      url
      "keywords": [ //    
        "express",
        "framework",
        "sinatra",
        "web",
        "rest",
        "restful",
        "router",
        "app",
        "api"
      ],
      "dependencies": { //      。         ,npm            node_module    
        "accepts": "~1.2.12",
        // ...
      },
      "devDependencies": { //         
        "after": "0.8.1",
        // ...
      },
      "engines": { // node    
        "node": ">= 0.10.0"
      },
      "files": [
        "LICENSE",
        "History.md",
        "Readme.md",
        "index.js",
        "lib/"
      ],
      "scripts": { //                    。key         ,value       。
        "test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/",
        "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require test/support/env --reporter spec --check-leaks test/ test/acceptance/",
        "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/ test/acceptance/",
        "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/"
      },
      "gitHead": "ef7ad681b245fba023843ce94f6bcb8e275bbb8e",
      "bugs": {
        "url": "https://github.com/strongloop/express/issues"
      },
      "_id": "[email protected]",
      "_shasum": "ddb2f1fb4502bf33598d2b032b037960ca6c80a3",
      "_from": "express@*",
      "_npmVersion": "1.4.28",
      "_npmUser": {
        "name": "dougwilson",
        "email": "[email protected]"
      },
      "maintainers": [
        {
          "name": "tjholowaychuk",
          "email": "[email protected]"
        }
        // ...
      ],
      "dist": {
        "shasum": "ddb2f1fb4502bf33598d2b032b037960ca6c80a3",
        "tarball": "http://registry.npmjs.org/express/-/express-4.13.3.tgz"
      },
      "directories": {},
      "_resolved": "https://registry.npmjs.org/express/-/express-4.13.3.tgz",
      "readme": "ERROR: No README data found!"
    }
    今度はこのパッケージがあれば、これらの依存パッケージを直接ダウンロードしてインストールすることができます.カバンの書類はnode_に現れます.modulesの中です
    よく使うコマンド
    グローバルインストールとローカルインストールの多くの友達は最初はnpm install-gと持たない-gの違いを知りませんでした.npmのパッケージはローカルインストール、グローバルインストールの2種類があります.
    npm install express          #     
    npm install express -g       #     
    ローカルインストール1、インストールパッケージをセットします.modulesで(npmコマンドを実行する時のディレクトリ)node_がない場合modulesディレクトリは、現在npmコマンドを実行しているディレクトリの下でnode_を生成します.modulesディレクトリ2は、require()によってローカルにインストールされたパケットを導入することができる.グローバルインストール1、インストールパッケージを/usr/localの下またはあなたのnodeのインストールディレクトリ2に置いて、直接コマンドラインで使用できます.
    アンインストールモジュールがインストール可能であれば、モジュールをアンインストールする方法もあります.
    npm uninstall express
    アンインストールが終わったらこのモジュールが存在するか確認してください.
    npm ls
    モジュールを更新
    npm update express
    
    もっと多くの知識はNPMにありますが、本当にできますか?(二)で説明しますので、楽しみにしてください.