首先打开工具-详情-勾选使用npm模块

在小程序 package.json 所在的目录中执行命令安装 npm 包:
npm install
此处要求参与构建 npm 的 package.json 需要在 project.config.json 定义的 miniprogramRoot 之内。
tips:开发者工具 v1.02.1811150 版本开始,调整为根据 package.json 的 dependencies 字段构建,所以声明在 devDependencies 里的包也可以在开发过程中被安装使用而不会参与到构建中。如果是这之前的版本,则建议使用
--production选项,可以减少安装一些业务无关的 npm 包,从而减少整个小程序包的大小。
tips: miniprogramRoot 字段不存在时,miniprogramRoot 就是 project.config.js 所在的目录
点击开发者工具中的菜单栏:工具 --> 构建 npm

js 中引入 npm 包:
- const myPackage = require('packageName')
- const packageOther = require('packageName/other')
使用 npm 包中的自定义组件:
- {
- "usingComponents": {
- "myPackage": "packageName",
- "package-other": "packageName/other"
- }
- }
tips:此处使用 npm 包时如果只引入包名,则默认寻找包名下的 index.js 文件或者 index 组件。
这里要发布的 npm 包是特指专为小程序定制的 npm 包(下称小程序 npm 包)。因为小程序自定义组件的特殊性,原有的 npm 包机制无法满足我们的需求,所以这里需要对小程序 npm 包做一些约束:
- {
- "name": "miniprogram-custom-component",
- "version": "1.0.0",
- "description": "",
- "miniprogram": "dist",
- "devDependencies": {},
- "dependencies": {}
- }
.npmignore文件来避免将一些非业务代码文件发布到 npm 中。如果是已经发布过的一些 npm 包,因为一些原因无法改造成小程序 npm 包的结构的话,也可以通过微调后被使用,但是请确保遵循以下几点:
- const addon = require('./addon.node'); // 不支持!
- const http = require('http'); // 不支持!
tips:对于一些纯 js 实现的 nodejs 内置库(如 path 模块),可以通过额外安装其他开发者实现的 npm 包来支持。
- // 不允许将 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 平台了。
tips:一些开发者在开发过程中可能修改过 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
tips:打包生成的代码在同级目录下会生成 source map 文件,方便进行逆向调试。