从小程序基础库版本 2.2.1 或以上、及开发者工具 1.02.1808300 或以上开始,小程序支持使用 npm 安装第三方包。
此文档要求开发者们对 npm 有一定的了解,因此不会再去介绍 npm 的基本功能。如若之前未接触过 npm,请翻阅官方 npm 文档进行学习。
npm install --production
此处并没有强制要求 node_modules 必须在小程序根目录下(即 project.config.js 中的 miniprogramRoot 字段),也可以存在于小程序根目录下的各个子目录中。但是不允许 node_modules 在小程序根目录外。
PS:此处请务必使用--production选项,可以减少安装一些业务无关的 npm 包,从而减少整个小程序包的大小。
js 中引入 npm 包:
const package = require("packageName")
const packageOther = require("packageName/other")
使用 npm 包中的自定义组件:
{
"usingComponents": {
"package": "packageName",
"package-other": "packageName/other"
}
}
PS:此处使用 npm 包时如果只引入包名,则默认寻找包名下的 index.js 文件或者 index 组件。
这里要发布的 npm 包是特指专为小程序定制的 npm 包(下称小程序 npm 包)。因为小程序自定义组件的特殊性,原有的 npm 包机制无法满足我们的需求,所以这里需要对小程序 npm 包做一些约束:
{
"name": "miniprogram-custom-component",
"version": "1.0.0",
"description": "",
"miniprogram": "dist",
"devDependencies": {},
"dependencies": {}
}
如果是已经发布过的一些 npm 包,因为一些原因无法改造成小程序 npm 包的结构的话,也可以通过微调后被使用,但是请确保遵循以下几点:
const addon = require("./addon.node"); // 不支持!
const http = require("http"); // 不支持!
// 不允许将 require 赋值给其他变量后再使用,以下代码不会去解析出具体依赖
let r;
r = require;
r("testa");
let r2 = require;
r2("testa");
// 不允许 require 一个变量,以下代码依赖运行时,无法解析出具体依赖
let m = "testa";
require(m);
发布 npm 包的流程简述如下:
npm adduser
或者
npm login
npm publish
到此,npm 包就成功发布到 npm 平台了。
PS:一些开发者在开发过程中可能修改过 npm 的源,所以当进行登录或发布时需要注意要将源切回 npm 的源。
为了帮助大家更好的理解发布 npm 包中提到的各种要求,这里简单介绍一下原理:
|--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
构建之后的结构:
|--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:打包生成的代码在同级目录下会生成 source map 文件,方便进行逆向调试。
以下为官方提供的 js 模块,可以参考并使用:
请查阅开发第三方自定义组件文档。
VS Code 当中的自动补全内容,其实是由语言服务来提供的。本文介绍VS Code自动补全功能和VS Code自动补全设置。VS Code 为编程语...
interlnk.exe 重新定向对于客户驱动器或打印接口的请求到另外的服务器驱动器或打印机.语法:config.sys 中加入:device=c:dosinter...
/c显示所有内存驻留程序的占用情况,分为conventional常规内存和uppermemory高端内存占用,并显示总的占用情况(常规 高端 保留 扩...
附:批处理命令与变量1:for命令及变量 基本格式:FOR /参数 %variable IN (set) DO command [command_parameters] %variable:指...
在使用 -d 参数时,容器启动后会进入后台。 某些时候需要进入容器进行操作,有很多种方法,包括使用 docker attach 命令或 nsent...
Docker 1.2.0 开始支持在运行中的容器里编辑 /etc/hosts, /etc/hostname 和 /etc/resolve.conf 文件。但是这些修改是临时的,只...