Der Autor ist normalerweise ein wenig beschäftigt. Wenn Schüler an diesem Projekt interessiert sind, können sie es gemeinsam pflegen und weiterentwickeln.
Derzeit bereitgestellt:
Hinweis: Benutzerdefinierte Anweisungen können mit Release-Hooks verwendet werden, um interessantere Dinge zu tun, z. B. Umgebungsvariablen in der Konfigurationsdatei unten zu ändern , Versions-Commits zu übermitteln usw.
Wenn Sie es nützlich finden, hoffe ich, dass Sie ihm einen Stern geben können ~ ???
Global mit npm installieren
npm install -g xdk-cli
Nach erfolgreicher Installation können Sie damit die aktuelle Versionsnummer einsehen.
xdk-cli -v
Verwenden Sie -h, um die aktuell bereitgestellte Funktionseinführung anzuzeigen
xdk-cli -h
# 目录结构
- app(小程序目录)
- pages
- app.js
- app.json
- project.config.json
- template
- page
- page.js
- page.json
- page.wxml
- page.wxss
- component
- component.js
...
- xdk.config.js
- xdk.verison.json
# xdk.config.js 设置
module.exports = {
entry: './app'
}
# 目录结构
- dist
- src(小程序目录)
- pages
- app.js
- app.json
- project.config.json
- template
- page
...
- component
...
- xdk.config.js
- xdk.verison.json
# xdk.config.js 设置
module.exports = {
entry: './src',
output: './dist'
}
xdk.config.js muss im Projektverzeichnis erstellt werden
module.exports = {
// 小程序路径(可选,默认当前目录)
entry: './src',
// 小程序输出文件(可选,默认等于entry)
// 使用gulp,webpack等打包工具开发会导致开发者编辑文件目录和微信编辑器使用目录不同,需要手动进行指定
output: './dist'
// 模版文件夹目录(可选,默认使用cli默认模版,使用默认模版情况下false即可)
template: './template',
// 发布体验版功能的钩子
publishHook: {
// 发布之前(注:必须返回一个Promise对象)
// 参数answer 为之前回答一系列问题的结果
before(answer) {
this.spawnSync('gulp', [`--env=${answer.isRelease ?'online' : 'stage'}`]);
return Promise.resolve();
},
// 发布之后(注:必须返回一个Promise对象)
after(answer) {
// 是否提交git commit
let {isCommitGitLog} = await inquirerGitCommit.call(this);
// 当为正式版本时进行的操作
if (!!answer.isRelease) {
// 修改本地version code
await rewriteVersionCode.call(this);
// 提交git log
!!isCommitGitLog && await commitGitLog.call(this);
}
return Promise.resolve();
}
},
// 自定义命令
// 自定义指令需要用 run 来执行,例如 xdk-cli run dev
customScripts: [
{
name: 'dev',
desc: '开发模式',
async callback() {
let {env} = await inquirerEnvAsync.call(this);
this.spawn('gulp', [`--env=${env}`, '--watch']);
return Promise.resolve();
}
},
{
name: 'sassDoc',
desc: '生成sass文档',
async callback() {
// 生成文档
await sassdoc([`./src/stylesheets/**/*.scss`, `./src/stylesheets/*.scss`], {
dest: './sassdoc',
verbose: true,
display: {
access: ['public'],
alias: true,
},
autofill: ["requires", "throws", "content"],
});
// 自动打开文件
if (process.platform === 'darwin'){
this.spawnSync('open', [`./sassdoc/index.html`]);
}else {
this.log(`目前自动打开浏览器功能只支持darwin内核, 当前内核为: ${process.platform}`);
this.log(`请打开当前路径下html,路径:./sassdoc/index.html`);
}
return Promise.resolve();
}
}
],
};
// 询问是否提交git记录
function inquirerGitCommit() {
return this.inquirer.prompt([
{
type: 'confirm',
name: 'isCommitGitLog',
message: '是否提交git log ?'
}
])
}
// 提交git commit 到log
function commitGitLog() {
return new Promise((resolve, reject) => {
this.spawnSync('git', ['add', '.']);
this.spawnSync('git', ['commit', '-m', `docs: 更改版本号为${versionConf.version}`]);
resolve();
});
}
Bietet die Funktion, Unterverträge und Seiten automatisch zu identifizieren und zu app.json, ${page}.json hinzuzufügen
# 输入创建命令
xdk-cli create
# 选择创建模式
? 选择你想生成的模版类型:(Use arrow keys)
❯ page
component
# 输入页面名称
? 设置 page 的名字 (例如: index):
# 选择所属分包(none为主包)
? 设置页面所属的分包 (Use arrow keys or type to search)
# 创建成功
>> createPage success
# 输入组件名称
? 设置 component 的名字 (例如: swiper-card):
# 选择组件所属范围
? 设置组件所属的作用域 (Use arrow keys)
❯ global
module
page
# 选择所属页面/分包/全局范围
?设置组件所属的页面
❯ index
logs
user
# 创建成功
>> createComponent success
Für jedes Projekt sind möglicherweise unterschiedliche Vorlagen erforderlich. xdk-cli bietet einen Ordnerslot, um die Anpassung der zu verwendenden Vorlagen zu erleichtern.
// 在xcli.config.js 中配置模版目录
module . exports = {
// 模版文件夹
template : './template'
} ;
Einzelheiten zur Verzeichnisstruktur des Miniprogramms finden Sie oben unter [ Projektverzeichnisstruktur ].
Derzeit wird nur die Mac-Version unterstützt. Dem Autor fehlt eine Windows-Entwicklungsumgebung (relativ faul, weitere hinzuzufügen).
{
"version" : " 0.1.9 " ,
"versionDesc" : "版本描述"
}
xdk-cli publish
ein # 正式版本会修改本地的xdk.config.json文件, 非正式版本不会,且体验版版本号默认为0.0.0
? 是否为正式发布版本? Yes
# 设置版本号
? 设置上传的版本号 (当前版本号: 0.1.9.4): raise alter: 0.1.9
# 设置版本描述
? 写一个简单的介绍来描述这个版本的改动过: 提交了一个正式版
Initializing...
idePortFile: /Users/xuan/Library/Application Support/微信开发者工具/Default/.ide
IDE server has started, listening on http://127.0.0.1:27563
initialization finished
uploading project...
upload success
>> 上传体验版成功, 登录微信公众平台 https://mp.weixin.qq.com 获取体验版二维码
wenn fehlgeschlagen
xdk.config.js
Einstellungen vornehmen publishHook : {
// 发布之前(注:必须返回一个Promise对象)
before ( answer ) {
console . log ( '要开始发布了' ) ;
return Promise . resolve ( ) ;
} ,
// 发布之后(注:必须返回一个Promise对象)
after ( answer ) {
console . log ( '发布结束了' ) ;
return Promise . resolve ( ) ;
}
} ,
Die This-Punkte in allen Funktionskörpern erben einige grundlegende Methoden innerhalb der CLI.
// this.spawn
// @param - String 命令行
// @param - Args 参数
// @param - Any 默认'ingerit' ['inherit' | null ]
publishHook: {
before ( answer ) {
this . spawn ( 'gulp' , [ `--env= ${ env } ` , '--watch' ] ) ;
return Promise . resolve ( ) ;
} ,
}
// this.spawnSync
// @param - String 命令行
// @param - Args 参数
// @param - Any 默认'ingerit' ['inherit' | null ]
publishHook: {
before ( answer ) {
this . spawnSync ( 'git' , [ 'add' , '.' ] ) ;
this . spawnSync ( 'git' , [ 'commit' , '-m' , `docs: 更改版本号为${ versionConf . version } ` ] ) ;
return Promise . resolve ( ) ;
} ,
}
// this.log
// @param - String 文本内容
// @param - String 类型 success | error
publishHook: {
after ( answer ) {
this . log ( '成功了~' ) ;
this . log ( '成功了~' , 'error' ) ;
return Promise . resolve ( ) ;
} ,
}
Weitere Informationen finden Sie unter https://github.com/SBoudrias/Inquirer.js
publishHook: {
async after ( answer ) {
// 是否提交git commit
let { isCommitGitLog } = await inquirerGitCommit . call ( this ) ;
return Promise . resolve ( ) ;
}
}
function inquirerEnvAsync ( ) {
return this . inquirer . prompt ( [
{
type : 'list' ,
name : 'env' ,
message : '选择当前所使用的环境:' ,
choices : [
'online' ,
'stage' ,
] ,
}
] ) ;
}
Wenn Sie gute Kommentare oder Vorschläge haben, scannen Sie bitte den folgenden QR-Code, um mit uns zu kommunizieren.