重點(diǎn)闡述 npm 包發(fā)布前后所踩坑~
踩坑札記
https
若 npm 包中 method 含協(xié)議類型為 http 的 請求(可跨域請求),但調(diào)用服務(wù)協(xié)議類型為 https尚蝌,將報錯:
[blocked] The page at https://XXX was not allowed to display insecure content from http://XXX
請將接口服務(wù)升級 https,url 書寫方案:
https://XXX:http 服務(wù)請求 https 接口 無報錯充尉;https 服務(wù)請求 https 接口 無報錯飘言。
//XXX:請求協(xié)議類型隨服務(wù)協(xié)議類型 自動轉(zhuǎn)化。
環(huán)境變量
若 npm 包中 method 執(zhí)行需區(qū)分服務(wù)環(huán)境驼侠,通過 process.env.NODE_ENV 獲取 環(huán)境變量 是否準(zhǔn)確(node npm 包無上述準(zhǔn)確性問題)姿鸿?即便準(zhǔn)確,命名規(guī)范也 未統(tǒng)一倒源,如生產(chǎn)環(huán)境可由 prod苛预、production 等指代∷癜荆可考慮傳參 約定的 環(huán)境變量热某。
轉(zhuǎn)碼
轉(zhuǎn)碼即將 ES6、ES7 轉(zhuǎn) ES5胳螟,先附贈 Babel 轉(zhuǎn)碼教程昔馋,再科普忽視轉(zhuǎn)碼的危害:
- 未轉(zhuǎn)碼 前端包 引用于 低版本瀏覽器 不兼容。
另外糖耸,含未轉(zhuǎn)碼片段的 vendor.js(通常將所依賴 node_modules 模塊打包至 vendor.js)若先于 app.js 執(zhí)行將直接導(dǎo)致較低版本瀏覽器 白屏秘遏。
- 未轉(zhuǎn)碼 node 包 引用于 低版本 node 服務(wù) 拋異常。
若服務(wù)器所安裝 node 版本較低嘉竟,引用未轉(zhuǎn)碼包將導(dǎo)致接口 拋異常邦危。更糟糕的是若被頁面加載前置中間件依賴,直接引發(fā) 白屏舍扰。
此刻或許有同學(xué)考慮植入 babel-polyfill...
請求
含請求的 npm method铡俐,采用 Axios 等第三方 HTTP 庫將受業(yè)務(wù)對 Axios Request 攔截的影響。建議使用原生 XMLHttpRequest 對象封裝妥粟。
附贈科普如何發(fā)布 npm 包~
發(fā)布流程
注冊賬號
開啟終端輸入:
npm adduser
根據(jù)提示輸入 username审丘、password、email 即刻注冊成功勾给,已注冊用戶請忽略上述步驟滩报。登錄請直接:
npm login
初始化包
新建一文件夾如 bridge锅知,而后:
cd bridge
npm init
依提示完成初始化并完善目錄:
.eslintrc、.gitignore脓钾、package.json售睹、node_modules 不必過多解釋,各位前端大大知曉可训。src 內(nèi)為未經(jīng) Babel 轉(zhuǎn)碼 的源代碼昌妹,轉(zhuǎn)碼后置于 bridge 根目錄,Babel 通過 .babelrc 配置握截。至于 README.md飞崖,共享包說明書必不可少。
發(fā)布包
首先設(shè)置版本號谨胞,規(guī)則請參考 Semver固歪,而后:
npm publish
理想情況下,包已成功發(fā)布至 npm胯努,下述為非理想情況:
- 命名問題
npm ERR! you do not have permission to publish XXX. Are you logged in as the correct user?
檢查 npm name 是否被占用牢裳,若被占用請更改后重新發(fā)布。
- 版本號問題
npm ERR! forbidden cannot modify pre-existing version: 1.0.9: XXX
當(dāng)前版本已發(fā)布叶沛,請更新版本號蒲讯。
- 鏡像配置問題
npm ERR! no_perms Private mode enable, only admin can publish this module: XXX
為加速 npm 部分同學(xué)利用淘寶鏡像代理,請恢復(fù)原配置:
npm config set registry=http://registry.npmjs.org
作者:呆戀小喵
我的后花園:https://sunmengyuan.github.io/garden/
我的 github:https://github.com/sunmengyuan
原文鏈接:https://sunmengyuan.github.io/garden/2018/12/18/npm.html