1. 程式人生 > >npm專案建立打包釋出

npm專案建立打包釋出

作業系統:windows 7

前提是已經安裝了nodejs和npm。當前nodejs版本:v10.2.0;npm版本:6.1.0。

本示例工具使用Visual Studio Code 1.20.1(vs code),也可以使用其它工具

下面開始操作

  1. 在某個磁碟分割槽下建立專案目錄:my-npm-project。例如:E:\Workspace\my-npm-project
  2. 啟動vs code
  3. 點選vs code左上角“檔案” ->“開啟資料夾”,開啟“E:\Workspace\my-npm-project”
  4. 快捷鍵ctrl+`開啟“終端”(如果已經是開啟狀態的忽略此步驟)
  5. 在終端視窗中輸入npm init --yes,顯示下面資訊

    這個過程就是在當前目錄(E:\Workspace\my-npm-project)建立了一個名稱為package.json的檔案,並寫入下面的資訊
    { "name": "my-npm-project", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "langfutao2018", "license": "ISC"
    }

    name:包名
    version:版本,第一個數字一般為版本不相容改動,第二個數字為版本相容的功能修改,第三個為版本相容的bug修復
    description:包的說明
    main:入口檔案
    scripts:可執行的指令碼命令
    keywords:關鍵字
    author:作者
    license:許可證書
  6. 在專案根目錄下建立src資料夾和index.js檔案。src存放原始檔;index.js為包入口;目前專案結構如下:

  7. index.js中輸入下面內容
    module.exports = require('./lib/HelloWorld.js')這裡使用的是lib而不是src,是因為我們打算使用es6語法,為了使依賴此專案的專案的不必須使用es6,準備使用bable把src裡的原始檔打包編譯到lib中
  8. 在src建立HelloWorld.js檔案,內容如下
    /** 測試類 */class HelloWorld { /** * 在頁面中顯示hello world */ say() { let div = document.createElement('div') div.innerHTML = 'hello world' document.body.appendChild(div) }}
  9. 現在準備使用bable進行打包,安裝bable相關功能和rimrafrimraf用來清理檔案,在命令列中輸入
    npm install rimraf babel-cli babel-preset-es2015 --save-dev
  10. 開啟package.json在scrips中加入cleanLib,bableBuild,prepublish。如下:
    "cleanLib": "./node_modules/.bin/rimraf lib"
    "bableBuild": "./node_modules/.bin/babel src --out-dir lib",
    "prepublish":"npm run cleanLib && npm run bableBuild"

    cleanLib 用來清理lib中已有的內容
    bableBuild 用bable把src中的檔案打包編譯到lib中
    prepublish 執行上面兩個指令碼,prepublish會在npm publish前執行
  11. 在專案根目錄建立.babelrc檔案,內容如下
    { "presets": [ "es2015" ]}配置bable對es6(es2015)進行轉換
  12. 當前專案結構:

  13.  程式碼已經準備好了,還需要一個npm的帳號,到npm官網或使用npm adduser命令新增帳號,注意需要郵箱裡驗證一下。還要注意如果使用過淘寶或其它的npm映象,要換成官方庫,在命令列執行下面命令
    npm config set registry http://registry.npmjs.org(這句是有坑的,看後面)
    然後執行npm adduser如下
  14. 終於可以釋出了,在命令列執行npm publish

    很坑爹,沒有釋出成功,也沒有錯誤提示。只需要把http://registry.npmjs.org換成https://registry.npmjs.org,在命令列執行npm config set registry https://registry.npmjs.org
  15. 再次執行npm publish
    有異常提示就好辦了,因為與別人的專案同名了
  16. 到package.json裡改個名字

    執行npm publih

    還是不行,因為名字引發了垃圾郵件檢測,不放棄繼續改
  17. 名字改為npm-project2328,執行npm publish
    終於成功了,收到一封來自npm的郵件:

  18. 去npm網站上看下
  19. 在其它專案中就可以npm install npm-project2328使用這個包了