37 lines
1.4 KiB
JavaScript
37 lines
1.4 KiB
JavaScript
import path, { resolve } from 'node:path'
|
|
import url from 'node:url'
|
|
import fs from 'node:fs'
|
|
import { exec } from 'node:child_process'
|
|
|
|
const blocksDir = resolve(path.dirname(url.fileURLToPath(import.meta.url)), 'src/blocks')
|
|
let blockPath = process.argv[process.argv.length - 1]
|
|
blockPath.slice(-1) === '/' ? blockPath = blockPath.slice(0, -1) : ''
|
|
const blockName = blockPath.split('/').pop()
|
|
|
|
fs.mkdir(`${blocksDir}/${blockPath}`, { recursive: true }, () => {
|
|
let error = false
|
|
if (fs.existsSync(`${blocksDir}/${blockPath}/${blockName}.pug`)) {
|
|
error = true
|
|
console.log('Файл шаблона уже существует')
|
|
} else {
|
|
fs.writeFileSync(`${blocksDir}/${blockPath}/${blockName}.pug`,
|
|
`mixin ${blockName}(mods)
|
|
-
|
|
const allMods = mods ? mods.split(',').map(mod => mod.trim()[0] === '-' ? \`${blockName}\${mod.trim()}\` : \`\${mod.trim()}__${blockName}\`).join(' ').trim() : ''
|
|
|
|
.${blockName}(class=allMods)&attributes(attributes)
|
|
block`
|
|
)
|
|
}
|
|
if (fs.existsSync(`${blocksDir}/${blockPath}/${blockName}.scss`)) {
|
|
error = true
|
|
console.log('Файл стилей уже существует')
|
|
} else {
|
|
fs.writeFileSync(`${blocksDir}/${blockPath}/${blockName}.scss`, `.${blockName} {\n position: relative;\n}\n`)
|
|
}
|
|
if (error === false) {
|
|
console.log('Блок успешно создан')
|
|
}
|
|
})
|
|
exec('node .create-mixins.js')
|