@finclip/applet-builder-ci
是一个 Node.js 库,提供了与编译、上传、审核和发布小程序相关的功能。该库的目标是简化小程序开发和部署的流程。
首先,确保你的 Node.js 环境已经安装了所需的依赖,包括 @finclip/applet-builder-ci
库。你可以使用以下命令来安装这个库:
npm install @finclip/applet-builder-ci
然后,你可以使用 @finclip/applet-builder-ci 提供的功能。
const { Project } = require("@finclip/applet-builder-ci");
(async () => {
// 项目配置
const projectConfig = {
appid: "your_app_id", // 你的小程序AppID
projectPath: "your_project_path", // 你的小程序项目路径
output: "output_directory", // 编译结果的输出目录
userInfo: {
openAPISecret: "your_api_secret", // 你的OpenAPI密钥
url: "your_server_url", // 你的服务器URL
},
};
const myProject = new Project(projectConfig);
// 编译配置
const buildOptions = {
zip: true, // 是否输出 zip 包
obfuscate: true, // 是否做代码混淆
DSL: {
// 控制文件后缀名与前缀
alias: [],
prefix: "ft", // wx.修改为ft
wxml: "fxml", // .wxml为.fxml
wxss: "ftss",
wxs: "fts",
finClipConf: "FinClipConf.js",
},
modifyCss: {
// 替换全局样式: modifyCss.md
builtCss: [],
},
exclude: [], //打包时需要忽略的目录与文件 支持glob与正则
trimText: false, //单行文本内容不换行
compileSettings: {
es6: true, // es6转es5
minify: true, // 上传时自动压缩脚本
minifyWXSS: true, // 上传时自动压缩样式
autoPrefixWXSS: true, // 上传时样式自动补全
sourceMap: true, // 开启 sourceMap
},
};
// 编译小程序
await myProject.build(buildOptions);
console.log("小程序编译完成");
/**
* 一键发布
* @param {string} version 版本号
* @param {string} versionDesc 版本描述 不能为空,否则会造成签名失败
*/
const response = await myProject.publish("0.0.1", "version_desc");
console.log("发布成功:", response);
})();
一键发布主要做了三个事情:上传代码 -> 提交审核 -> 审核并发布
一般推荐使用上面代码的myProject.publish
接口直接发布,如果需要对每个步骤进行分别操作,则可以参考下面的示例:
(async () => {
const myProject = new Project(projectConfig);
/**
* 上传小程序
* @param {string} version 版本号
* @param {string} desc 版本描述 不能为空,否则会造成签名失败
*/
const uploadData = await myProject.upload("0.0.1", "version_desc");
/**
* 提交审核
* @param {string} appId 版本号
* @param {string} buildId 由上传接口返回
*/
const submitAuditData = await myProject.submitAudit({
appId: uploadData.appId,
buildId: uploadData.buildId,
});
/**
* 审核并发布
* @param {string} sequence 编译序列号,由提交审核接口返回
* @param {boolean} pass 是否通过
* @param {string} reason 驳回原因
*/
await myProject.audit(submitAuditData.sequence, pass, reason);
})();
const { packNpm } = require("@finclip/applet-builder-ci");
(async () => {
/**
*
* @param {string} project - 小程序路径
* @param {Object} options - 编译参数
* @param {[string]} options.ignores - 指定构建npm需要排除的规则
* @param {string} options.reporter - 构建回调信息
* @returns Promise
*/
// 在有需要的时候构建npm
await packNpm(project, {
ignores: ["pack_npm_ignore_list"],
reporter: (infos) => {
console.log(infos);
},
});
})();
const { packNpmManually } = require("@finclip/applet-builder-ci");
(async () => {
/**
*
* @param {Object} options - 编译参数
* @param {string} options.packageJsonPath - 希望被构建的node_modules 对应的 package.json 的路径
* @param {string} options.miniprogramNpmDistDir - 被构建 miniprogram_npm 的输出目标位置
* @param {[string]} options.ignores - 指定需要排除的规则
* @returns Promise
*/
// 在有需要的时候构建npm
await packNpmManually({
packageJsonPath: "./lib/package.json",
miniprogramNpmDistDir: "./miniprogram-project/miniprogram/",
});
})();