W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
從小程序基礎(chǔ)庫版本 2.2.1 或以上、及開發(fā)者工具 1.02.1808300 或以上開始,小程序支持使用 npm 安裝第三方包。
此文檔要求開發(fā)者們對(duì) npm 有一定的了解,因此不會(huì)再去介紹 npm 的基本功能。如若之前未接觸過 npm,請(qǐng)翻閱官方 npm 文檔進(jìn)行學(xué)習(xí)。
npm install --production
此處并沒有強(qiáng)制要求 node_modules 必須在小程序根目錄下(即 project.config.js 中的 miniprogramRoot 字段),也可以存在于小程序根目錄下的各個(gè)子目錄中。但是不允許 node_modules 在小程序根目錄外。
PS:此處請(qǐng)務(wù)必使用--production選項(xiàng),可以減少安裝一些業(yè)務(wù)無關(guān)的 npm 包,從而減少整個(gè)小程序包的大小。
js 中引入 npm 包:
const package = require('packageName')
const packageOther = require('packageName/other')
使用 npm 包中的自定義組件:
{
"usingComponents": {
"package": "packageName",
"package-other": "packageName/other"
}
}
PS:此處使用 npm 包時(shí)如果只引入包名,則默認(rèn)尋找包名下的 index.js 文件或者 index 組件。
這里要發(fā)布的 npm 包是特指專為小程序定制的 npm 包(下稱小程序 npm 包)。因?yàn)樾〕绦蜃远x組件的特殊性,原有的 npm 包機(jī)制無法滿足我們的需求,所以這里需要對(duì)小程序 npm 包做一些約束:
{
"name": "miniprogram-custom-component",
"version": "1.0.0",
"description": "",
"miniprogram": "dist",
"devDependencies": {},
"dependencies": {}
}
如果是已經(jīng)發(fā)布過的一些 npm 包,因?yàn)橐恍┰驘o法改造成小程序 npm 包的結(jié)構(gòu)的話,也可以通過微調(diào)后被使用,但是請(qǐng)確保遵循以下幾點(diǎn):
const addon = require('./addon.node'); // 不支持!
const http = require('http'); // 不支持!
// 不允許將 require 賦值給其他變量后再使用,以下代碼不會(huì)去解析出具體依賴
let r;
r = require;
r('testa');
let r2 = require;
r2('testa');
// 不允許 require 一個(gè)變量,以下代碼依賴運(yùn)行時(shí),無法解析出具體依賴
let m = 'testa';
require(m);
發(fā)布 npm 包的流程簡(jiǎn)述如下:
npm adduser
或者
npm login
npm publish
到此,npm 包就成功發(fā)布到 npm 平臺(tái)了。
PS:一些開發(fā)者在開發(fā)過程中可能修改過 npm 的源,所以當(dāng)進(jìn)行登錄或發(fā)布時(shí)需要注意要將源切回 npm 的源。
為了幫助大家更好的理解發(fā)布 npm 包中提到的各種要求,這里簡(jiǎn)單介紹一下原理:
|--node_modules
| |--testComp // 小程序 npm 包
| | |--package.json
| | |--src
| | |--miniprogram_dist
| | |-index.js
| | |-index.json
| | |-index.wxss
| | |-index.wxml
| |--testa // 其他 npm 包
| |--package.json
| |--lib
| | |--entry.js
| |--node_modules
| |--testb
| |--package.json
| |--main.js
|--pages
|--app.js
|--app.wxss
|--app.json
|--project.config.js
構(gòu)建之后的結(jié)構(gòu):
|--node_modules
|--miniprogram_npm
| |--testComp // 小程序 npm 包
| | |-index.js
| | |-index.json
| | |-index.wxss
| | |-index.wxml
| |--testa // 其他 npm 包
| |--index.js // 打包后的文件
| |--miniprogram_npm
| |--testb
| |--index.js // 打包后的文件
| |--index.js.map
|--pages
|--app.js
|--app.wxss
|--app.json
|--project.config.js
PS:打包生成的代碼在同級(jí)目錄下會(huì)生成 source map 文件,方便進(jìn)行逆向調(diào)試。
以下為官方提供的 js 模塊,可以參考并使用:
請(qǐng)查閱開發(fā)第三方自定義組件文檔。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: