47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
let fs = require('fs')
|
|
let path = require('path')
|
|
|
|
let plugins = fs.readdirSync(fromRootPath('plugins'))
|
|
|
|
for (let plugin of plugins) {
|
|
// Cleanup
|
|
let pluginDest = fromRootPath(plugin)
|
|
if (fs.existsSync(pluginDest)) {
|
|
fs.rmdirSync(pluginDest, { recursive: true })
|
|
}
|
|
|
|
// Copy plugin over
|
|
copyFolder(fromRootPath('plugins', plugin), pluginDest, (file) => {
|
|
// Ignore test files
|
|
if (file.endsWith('.test.js')) return false
|
|
// Ignore postcss7 files
|
|
if (file.endsWith('.postcss7.js')) return false
|
|
// Ignore postcss8 files
|
|
if (file.endsWith('.postcss8.js')) return false
|
|
|
|
return true
|
|
})
|
|
}
|
|
|
|
// ---
|
|
|
|
function fromRootPath(...paths) {
|
|
return path.resolve(process.cwd(), ...paths)
|
|
}
|
|
|
|
function copy(fromPath, toPath) {
|
|
fs.mkdirSync(path.dirname(toPath), { recursive: true }) // Ensure folder exists
|
|
fs.copyFileSync(fromPath, toPath)
|
|
}
|
|
|
|
function copyFolder(fromPath, toPath, shouldCopy = () => true) {
|
|
let stats = fs.statSync(fromPath)
|
|
if (stats.isDirectory()) {
|
|
let filesAndFolders = fs.readdirSync(fromPath)
|
|
for (let file of filesAndFolders) {
|
|
copyFolder(path.resolve(fromPath, file), path.resolve(toPath, file), shouldCopy)
|
|
}
|
|
} else if (shouldCopy(fromPath)) {
|
|
copy(fromPath, toPath)
|
|
}
|
|
}
|