npm專案建立打包釋出
阿新 • • 發佈:2018-12-26
作業系統:windows 7
前提是已經安裝了nodejs和npm。當前nodejs版本:v10.2.0;npm版本:6.1.0。
本示例工具使用Visual Studio Code 1.20.1(vs code),也可以使用其它工具
下面開始操作
- 在某個磁碟分割槽下建立專案目錄:my-npm-project。例如:E:\Workspace\my-npm-project
- 啟動vs code
- 點選vs code左上角“檔案” ->“開啟資料夾”,開啟“E:\Workspace\my-npm-project”
- 快捷鍵ctrl+`開啟“終端”(如果已經是開啟狀態的忽略此步驟)
- 在終端視窗中輸入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:許可證書 - 在專案根目錄下建立src資料夾和index.js檔案。src存放原始檔;index.js為包入口;目前專案結構如下:
- index.js中輸入下面內容
module.exports = require('./lib/HelloWorld.js')這裡使用的是lib而不是src,是因為我們打算使用es6語法,為了使依賴此專案的專案的不必須使用es6,準備使用bable把src裡的原始檔打包編譯到lib中 - 在src建立HelloWorld.js檔案,內容如下
/** 測試類 */class HelloWorld { /** * 在頁面中顯示hello world */ say() { let div = document.createElement('div') div.innerHTML = 'hello world' document.body.appendChild(div) }} - 現在準備使用bable進行打包,安裝bable相關功能和rimraf,rimraf用來清理檔案,在命令列中輸入
npm install rimraf babel-cli babel-preset-es2015 --save-dev - 開啟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前執行 - 在專案根目錄建立.babelrc檔案,內容如下
{ "presets": [ "es2015" ]}配置bable對es6(es2015)進行轉換 - 當前專案結構:
- 程式碼已經準備好了,還需要一個npm的帳號,到npm官網或使用npm adduser命令新增帳號,注意需要郵箱裡驗證一下。還要注意如果使用過淘寶或其它的npm映象,要換成官方庫,在命令列執行下面命令
npm config set registry http://registry.npmjs.org(這句是有坑的,看後面)
然後執行npm adduser如下 - 終於可以釋出了,在命令列執行npm publish
很坑爹,沒有釋出成功,也沒有錯誤提示。只需要把http://registry.npmjs.org換成https://registry.npmjs.org,在命令列執行npm config set registry https://registry.npmjs.org - 再次執行npm publish
有異常提示就好辦了,因為與別人的專案同名了 - 到package.json裡改個名字
執行npm publih
還是不行,因為名字引發了垃圾郵件檢測,不放棄繼續改 - 名字改為npm-project2328,執行npm publish
終於成功了,收到一封來自npm的郵件: - 去npm網站上看下
- 在其它專案中就可以npm install npm-project2328使用這個包了