Commit 6c1acc48 authored by lipengcheng 's avatar lipengcheng

editpkg

parent 62ff5eb2
......@@ -108,7 +108,7 @@ module.exports = class Creator {
// const source = path.resolve(__dirname, '../tpl/testgit')
await generate(this.tmpTarget, this.targetDir, this.meta)
// 移除临时目录
await fse.remove(this.tmpTarget)
// await fse.remove(this.tmpTarget)
// 进入项目初始化git
// 。。
......
......@@ -6,11 +6,22 @@ const render = require('consolidate').ejs.render; // 统一所有的模板引擎
const renderPro = promisify(render);
const ncp = require('ncp');
const ncpPro = promisify(ncp);
const editPkg = require('../utils/editPkg')
async function generate(source, target, meta) {
console.log(`source==:`,source);
console.log(`target:`,target);
console.log(`meta:`,meta);
console.log(`meta:`, meta);
const extra = {
name: meta.pkgName,
}
try {
await editPkg(`${source}/package.json`, extra)
} catch (err) {
console.log(`err:`,err);
}
let result = await new Promise((resolve, reject) => {
Metalsmith(source)
.metadata(meta)
......@@ -39,6 +50,7 @@ async function generate(source, target, meta) {
err ? reject(false) : resolve(true)
})
}).catch(err => console.log(`err:`, err))
return result
}
......
/*
* @Date: 2021-03-31 17:53:31
* @LastEditors: OBKoro1
* @LastEditTime: 2021-03-31 17:53:31
* @FilePath: /lib/ask.js
* @Description: 描述
* @Author: huacong
*
*/
const { execSync } = require('child_process')
module.exports = function askCreator(template = '') {
let user = execSync('git config --global user.name', { encoding: 'utf-8' });
let email = execSync('git config --global user.email', { encoding: 'utf-8' });
console.log(`user:`,user);
user = user.trim();
email = email.trim();
console.log(`user:`,user);
return [
{
type: 'confirm',
name: 'private',
message: 'Is the project private ?'
},
{
type: 'input',
name: 'pkgName',
message: 'package name',
default: 'default pkgName',
// validate(input) {
// if (input.trim().length === 0) {
// return;
// }
// }
},
{
type: 'input',
name: 'port',
message: 'project port',
// validate(input) {
// if (input.trim().length === 0) {
// return;
// }
// }
},
{
type: 'input',
name: 'description',
message: 'description'
},
// {
// type: 'list',
// name: 'license',
// message: 'license',
// choices: ['MIT', "BSD 2-clause 'Simplified'", 'Apache 2.0', 'GNU General Public v3.0', 'BSD 3-clause', 'Eclipse Public 1.0', 'GNU Affero General Public v3.0', 'GNU General Public v2.0', 'GNU Lesser General Public v2.1', 'GNU Lesser General Public v3.0', 'Mozilla Public 2.0', 'The Unlicense']
// },
{
type: 'input',
name: 'author',
message: 'author',
default: user
},
];
}
console.log(`11:`,11);
`mikeee`
\ No newline at end of file
const Metalsmith = require('metalsmith')
const Handlebars = require('handlebars')
const { promisify } = require('util');
const render = require('consolidate').ejs.render; // 统一所有的模板引擎
const path = require('path');
const ncp = require('ncp');
const ncpPro = promisify(ncp);
const renderPro = promisify(render);
console.log(`__dirname:`,__dirname);
console.log(`__filename:`,__filename);
console.log(`process.cwd():`,process.cwd());
async function ttt() {
let res = await new Promise( (resolve, reject) => {
let m = Metalsmith(path.resolve(__dirname, 'tpl'))
m.metadata({age: 34})
m.source(path.resolve(__dirname, 'tpl'))
.destination(path.resolve(__dirname, 'build'))
.use(async (files, metal, done) => {
console.log(`files:`, files);
const m = metal.metadata();
Object.assign(m, { author: 'mikeee' });
done()
})
.use((files, metal, done) => {
const meta = metal.metadata();
console.log(`meta:`, meta);
Object.keys(files).forEach(async (file) => {
let c = files[file].contents.toString();
// 只有js和json文件才去做处理
if (file.includes('js') || file.includes('json')) {
// 判断是否是模板 可用正则匹配
if (c.includes('<%')) {
c = await renderPro(c, meta);
files[file].contents = Buffer.from(c);
}
}
})
done()
})
.build((err) => {
err ? reject(1) : resolve(2)
})
})
console.log(`res:`, res);
}
ttt()
console.log(`11:`,11);
`<%= author %>`
\ No newline at end of file
const fse = require('fs-extra')
const _ = require('lodash');
/**
* 修改package.json
* @param {string} source 需要修改的package.json地址
* @param {object} extra 需要添加的属性对象
* @param {string} target 修改后的pkg地址,如果不填则是在源文件上修改
*/
module.exports = async function (source, extra, target) {
let pkg = await fse.readJSON(source, {});
pkg = _.merge(pkg, extra);
await fse.outputJson(target || source, pkg, { spaces: 4 });
}
\ No newline at end of file
......@@ -958,8 +958,8 @@ leven@^3.1.0:
lodash@^4.17.21:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.21.tgz?cache=0&sync_timestamp=1613835838133&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=
log-symbols@^4.1.0:
version "4.1.0"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment