Skip to content

Commit f478b92

Browse files
authored
Merge pull request #84 from kne-union/linzp
分离初始化模板到npm package
2 parents 9ce51bb + f7ee2e8 commit f478b92

File tree

4 files changed

+45
-8
lines changed

4 files changed

+45
-8
lines changed

lib/env.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@ Object.defineProperties(env, {
2828
}
2929
}, templateDir: {
3030
get() {
31-
return process.env.MODULES_DEV_TEMPLATE_DIR || path.resolve(__dirname, '../template');
31+
return process.env.MODULES_DEV_TEMPLATE_DIR;
3232
}
3333
}, templateLibsExampleDir: {
3434
get() {
35-
return process.env.MODULES_DEV_TEMPLATE_DIR || path.resolve(__dirname, '../template-libs-example');
35+
return process.env.MODULES_DEV_TEMPLATE_DIR;
3636
}
3737
}, componentsName: {
3838
get() {

lib/init-libs-example.js

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ const path = require('path');
55
const env = require('./env');
66
const fs = require('fs-extra');
77
const spawn = require('cross-spawn-promise');
8+
const {program} = require('commander');
9+
const downloadNpmPackage = require('@kne/fetch-npm-package');
10+
11+
program.option('--template <name-to-template>', 'specify a template for the created project');
12+
program.parse();
13+
const options = program.opts();
814

915
(async () => {
1016
const packageName = process.env.npm_package_name;
@@ -13,9 +19,22 @@ const spawn = require('cross-spawn-promise');
1319
const tempOptions = {
1420
name, packageName
1521
};
16-
await applyTemplate(env.templateLibsExampleDir, exampleDir, {
17-
name, packageName
18-
});
22+
23+
if (env.templateLibsExampleDir) {
24+
await applyTemplate(env.templateLibsExampleDir, exampleDir, {
25+
name, packageName
26+
});
27+
} else {
28+
const templatePackageName = options.template || '@kne-template/example';
29+
await downloadNpmPackage(templatePackageName, null, {
30+
callback: async (dir) => {
31+
await applyTemplate(dir, exampleDir, {
32+
name, packageName
33+
});
34+
}
35+
});
36+
}
37+
1938
if (await fs.exists(path.resolve(env.appDir, 'template-libs-example'))) {
2039
console.log('当前项目存在自定义模板,执行自定义模板覆盖');
2140
await applyTemplate(path.resolve(env.appDir, 'template-libs-example'), exampleDir, tempOptions);

lib/init-module.js

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ const applyTemplate = require('@kne/apply-template');
66
const path = require('path');
77
const env = require('./env');
88
const fs = require('fs-extra');
9+
const {program} = require('commander');
10+
const downloadNpmPackage = require('@kne/fetch-npm-package');
11+
12+
program.option('--template <name-to-template>', 'specify a template for the created project');
13+
program.parse();
14+
const options = program.opts();
915

1016
(async () => {
1117
const output = await inquirer.prompt([{
@@ -17,10 +23,20 @@ const fs = require('fs-extra');
1723
const tempOptions = {
1824
name, summary: output.summary, moduleAliasName: env.moduleAliasName
1925
};
20-
await applyTemplate(env.templateDir, outputDir, tempOptions);
26+
27+
if (env.templateDir) {
28+
await applyTemplate(env.templateDir, outputDir, tempOptions);
29+
} else {
30+
const templatePackageName = options.template || '@kne-template/example';
31+
await downloadNpmPackage(templatePackageName, null, {
32+
callback: async (dir) => {
33+
await applyTemplate(dir, outputDir, tempOptions);
34+
}
35+
});
36+
}
2137
if (await fs.exists(path.resolve(env.appDir, 'template'))) {
2238
console.log('当前项目存在自定义模板,执行自定义模板覆盖');
23-
await applyTemplate(env.templateDir, outputDir, tempOptions);
39+
await applyTemplate(path.resolve(env.appDir, 'template'), outputDir, tempOptions);
2440
}
2541
console.log('完成,请开始模块开发,拜拜👋');
2642
})().catch((e) => {

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@kne/modules-dev",
3-
"version": "2.0.33",
3+
"version": "2.1.0-alpha.0",
44
"description": "用于辅助在项目内启动一个规范化组件开发的环境",
55
"publishConfig": {
66
"source": "src/index.js",
@@ -36,11 +36,13 @@
3636
"@kne/craco-module-federation": "^1.1.5",
3737
"@kne/ensure-slash": "^0.1.0",
3838
"@kne/example-driver": "^0.1.11",
39+
"@kne/fetch-npm-package": "^0.1.1",
3940
"@kne/md-doc": "^0.1.13",
4041
"@kne/react-fetch": "^1.4.3",
4142
"ajv": "^8.14.0",
4243
"chokidar": "^3.5.3",
4344
"classnames": "^2.3.2",
45+
"commander": "^12.1.0",
4446
"cross-spawn-promise": "^0.10.2",
4547
"fs-extra": "^11.1.0",
4648
"highlight.js": "^11.7.0",

0 commit comments

Comments
 (0)