<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                包描述文件用于表達非代碼相關的信息,它是一個JSON格式的文件-package.json,位于包的根目錄下,是包的重要組成部分。而NPM的所有都與包描述文件的字段信息相關。由于CommonJS包規范尚處于草案階段,NPM在實踐中做了一定的取舍,具體細節在后面會介紹到。 CommonJS為package.json文件定義了如下一些必需的字段: * **name**。包名,規范定義它需要由小寫的字母和數字組成,包含.、_和-,但不允許出現空格。包名必須是唯一的,以免對外公布時產生重名沖突的誤解。除此之外,NPM還建議不要在包名中附帶上node或js來重復標識它是JavaScript或者Node模塊。 * **description**。包簡介。 * **version**。版本號。一個語義化的版本號,這在http://semver.org 上有詳細定義,通常為major.minor.revision格式。該版本號十分重要,常常用于一些版本控制的場合。 * **keywords**。關鍵詞數組,NPM中主要用來做分類搜索。一個好的關鍵詞數組有利于用戶快速找到你編寫的包。 * **maintainers**。包維護者列表。每個維護者由name、email、和web這3個屬性組成。示例如下:"maintainers":[{"name":"Jackson Tian","email":"shyvo1987@gmail.com","web":"http://html5ify.com"}] 。NPM通過該屬性進行權限認證。 * **contributors**。貢獻者列表。在開源社區中,為開源項目提供代碼是經常出現的事情,如果名字能出現在知名項目的contributors列表中,是件比較有榮譽感的事情。列表中的第一個貢獻者應當是包的作者本人。它的格式與維護者列表相同。 * **bugs**。一個可以反饋bug的網頁地址或郵件地址。 * **licenses**。當前包所使用的許可證列表,表示這個包可以在哪些許可證下使用。它的格式如下:"licenses":[{"type":"GPLv2","url":"http://www.example.com/licenses/gpl.html"}] 。 * **repositories**。托管源代碼的位置列表,表明可以通過哪些方式和地址訪問包的源代碼。 * **dependencies**。使用當前包所需要依賴的包列表。這個屬性十分重要,NPM會通過這個屬性幫助自動加載依賴的包。 除了必選字段外,規范還定義了一部分可選字段,具體如下所示: * homepage。當前包的網站地址。 * os。操作系統支持列表。這些操作系統的取值包括aix、freebsd、linux、macos、solaris、vxworks、windows。如果設置了列表為空,則不對操作系統做任何假設。 * cpu。CPU架構的支持列表,有效的架構名稱有arm、mips、ppc、sparc、x86和x86_64。同os一樣,如果列表為空,則不對CPU架構做任何假設。 * engine。支持的JavaScript引擎列表,有效的引擎取值包括ejs、flusspferd、gpsee、jsc、spidermonkey、narwhal、node和v8。 * builtin。標志當前包是否是內建在底層系統的標準組件。 * directories。包目錄說明。 * implements。實現規范的列表。標志當前包實現了CommonJS的哪些規范。 * scripts。腳本對象,它主要被包管理器用來安裝、編譯、測試和卸載包。示例如下: ~~~ "scripts":{ "install":"install.js", "uninstall":"uninstall.js", "build":"build.js", "doc":"make-doc.js", "test":"test.js" } ~~~ 包規范的定義可以幫助Node解決依賴包安裝的問題,而NPM正是基于該規范進行了實現。最初,NPM工具是由Isaac Z. Schlueter單獨創建,提供給Node服務的Node包管理器,需要單獨安裝。后來,在v0.6.3版本時集成進Node中作為默認包管理器,作為軟件包的一部分一起安裝。之后Isaac Z. Schlueter 也成為Node的掌門人。 在包描述文件的規范中,NPM實際需要的字段主要有name、version、description、keywords、repositories、author、bin、main、scripts、engine、dependencies、devDependencies。 與包規范的區別在于多了author、bin、main和devDependencies這4個字段。下面補充說明一下: * author。包作者。 * bin。一些包作者希望包可以作為命令行工具使用。配置好bin字段后,通過 npm install package_name -g 命令可以將腳本添加到執行路徑中,之后可以在命令行中直接執行。前面的node-gyp即是這樣安裝的。通過-g命令安裝的模塊包稱為全局模式。 * main。模塊引入方法require()在引入包時,會優先檢查這個字段,并將其作為包中其余模塊的入口。如果不存在這個字段,require()方法會查找包目錄下的index.js、index.node、index.json文件作為默認入口。 * devDependencies。一些模塊只在開發時需要依賴。配置這個屬性,可以提示包的后續開發者安裝依賴包。 下面是知名框架express項目的package.json文件,具有一定的參考意義: ~~~ { "name":"express", "description":"Sinatra inspired web development framework", "version":"3.3.4", "author":"TJ Holowaychuk <tj@vision-media.ca>", "contributors":[ { "name":"TJ Holowaychuk", "email":"tj@vision-media.ca" }, { "name":"Aaron Heckmann", "email":"aaron.heckmann+github@gmail.com" }, { "name":"Ciaran Jessup", "email":"ciaranj@gmail.com" }, { "name":"Guillermo Rauch", "email":"rauchg@gmail.com" } ], "dependencies":{ "connect":"2.8.4", "commander":"1.2.0", "range-parser":"0.0.4", "mkdirp":"0.3.5", "cookie":"0.1.0", "buffer-crc32":"0.2.1", "fresh":"0.1.0", "methods":"0.0.1", "send":"0.1.3", "cookie-signature":"1.0.1", "debug":"*" }, "devDependencies":{ "ejs":"*", "mocha":"*", "jade":"0.30.0", "hjs":"*", "stylus":"*", "should":"*", "connect-redis":"*", "marked":"*", "supertest":"0.6.0" }, "keywords":[ "express", "framework", "sinatra", "web", "rest", "restful", "router", "app", "api" ], "repository":"git://github.com/visionmedia/express", "main":"index", "bin":{ "express":"./bin/express" }, "scripts":{ "prepublish":"npm prune", "test":"make test" }, "engines":{ "node":"*" } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看