连续复制
一键复制
一键打包
uniapp 生成路径+添加到router
const path = require('path')
const fs = require('fs')
/**
* 获取vue模板
* @param name
* @return {string}
*/
function getVue(name) {
const vtpl = `<template>
<view class="${name}">
</view>
</template>
<script>
export default {
name: "${name}",
data() {
return {};
},
computed:{
},
watch:{
},
onLoad(){},
onShow(){},
onReady(){},
onHide(){},
beforeMount() {
},
mounted() {
},
methods: {}
};
</script>
<style lang="scss" scoped>@import "${name}";</style>
`
return vtpl
}
/**
* 获取scss模板
* @param name
* @returns {string}
*/
function getScss(name) {
const scss = `.${name}{
}`
return scss
}
// 从参数里面获取表名
function getValueArgv(argv, param) {
let val = ''
const index = argv.findIndex((item) => item.toLowerCase().startsWith(param))
if (index > -1) {
val = argv[index].slice(5)
}
return val
}
async function run() {
const page = getValueArgv(process.argv, 'page')
const mode = getValueArgv(process.argv, 'mode') || 'single'
console.log('示例:\nnode code.js mode=single|all page=pages/index/index\n')
if (mode == 'single') {
if (!page) {
console.log('缺少page\n')
return
}
const pages = fs.readFileSync(__dirname + '/pages.json')
const pagesStr = JSON.parse(pages)
if (pagesStr.pages.filter((v) => v.path == page).length > 0) {
console.log('页面已经存在')
return
}
genPage(page)
pagesStr.pages.push({
path: page,
style: { navigationBarTitleText: '标题文件' },
auth: true
})
fs.writeFileSync(path.join(__dirname, '/pages.json'), JSON.stringify(pagesStr), 'utf8')
} else {
let pages = fs.readFileSync(__dirname + '/pages.json')
pages = JSON.parse(pages).pages
pages.map((item) => {
genPage(item.path, item)
})
}
}
/**
*
* @param {String} page 生成页面
* @param {Object} router 路由信息
*/
function genPage(page, router) {
const rootPath = './'
const folder = path.join(__dirname, rootPath)
const pageArr = page.split('/')
console.log(page)
const pageName = pageArr.pop()
const finalPath = path.join(folder, pageArr.join('/'))
// 创建文件夹
mkdirsSync(finalPath)
// 创建页面文件
if (!fs.existsSync(finalPath + '/' + pageName + '.vue')) {
console.log('生成 ' + finalPath + '/' + pageName + '.vue 成功')
writeFile(finalPath + '/' + pageName + '.vue', getVue(pageName))
} else {
console.log(finalPath + '/' + pageName + '.vue 已存在')
}
// 创建scss文件
if (!fs.existsSync(finalPath + '/' + pageName + '.scss')) {
writeFile(finalPath + '/' + pageName + '.scss', getScss(pageName))
console.log('生成 ' + finalPath + '/' + pageName + '.scss' + ' 成功')
} else {
console.log('生成 ' + finalPath + '/' + pageName + '.scss 失败')
}
}
/**
* 文件同步写入
* @param {文件名} file 文件名
* @param {文件内容} fileContent 写入文件内容
*/
function writeFile(file, fileContent) {
fs.writeFileSync(file, fileContent)
}
/**
* 创建目录
* @param dirname
* @return {boolean}
*/
function mkdirsSync(dirname) {
console.log(dirname)
if (fs.existsSync(dirname)) {
return true
} else {
if (mkdirsSync(path.dirname(dirname))) {
fs.mkdirSync(dirname)
return true
}
}
}
run()
评论已关闭