2020-02-12 16:21:42 +08:00
|
|
|
const sass = require('node-sass')
|
|
|
|
const fs = require('fs')
|
|
|
|
const path = require('path')
|
|
|
|
const postcss = require('postcss')
|
|
|
|
const postcssConfig = require('../postcss.config')
|
|
|
|
const ncp = require('ncp')
|
|
|
|
|
|
|
|
const styleFiles = fs
|
2020-05-16 21:08:06 +08:00
|
|
|
.readdirSync(path.resolve(__dirname, '../src/_styles'))
|
2020-02-12 16:21:42 +08:00
|
|
|
.filter(fileName => fileName.endsWith('.scss'))
|
|
|
|
|
2020-06-01 12:38:10 +08:00
|
|
|
const fontStyleFiles = fs
|
|
|
|
.readdirSync(path.resolve(__dirname, '../src/_styles/fonts'))
|
|
|
|
.filter(fileName => {
|
|
|
|
return ['Lato.scss', 'FiraSans.scss', 'FiraCode.scss'].includes(fileName)
|
|
|
|
})
|
|
|
|
|
2020-02-12 16:21:42 +08:00
|
|
|
function createDirIfNotExists (...args) {
|
|
|
|
if (!fs.existsSync(path.resolve(...args))) {
|
|
|
|
fs.mkdirSync(path.resolve(...args))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
createDirIfNotExists(__dirname, '../lib')
|
|
|
|
createDirIfNotExists(__dirname, '../lib', 'styles')
|
2020-06-01 12:38:10 +08:00
|
|
|
createDirIfNotExists(__dirname, '../lib', 'styles', 'fonts')
|
2020-02-12 16:21:42 +08:00
|
|
|
createDirIfNotExists(__dirname, '../lib', 'styles', 'resources')
|
|
|
|
createDirIfNotExists(__dirname, '../es')
|
|
|
|
createDirIfNotExists(__dirname, '../es', 'styles')
|
2020-06-01 12:38:10 +08:00
|
|
|
createDirIfNotExists(__dirname, '../es', 'styles', 'fonts')
|
2020-02-12 16:21:42 +08:00
|
|
|
createDirIfNotExists(__dirname, '../es', 'styles', 'resources')
|
|
|
|
|
2020-06-01 12:38:10 +08:00
|
|
|
function createStyleGenerator (
|
|
|
|
srcPath,
|
|
|
|
targetPath
|
|
|
|
) {
|
|
|
|
return fileName => {
|
|
|
|
sass.render({
|
|
|
|
file: path.resolve(__dirname, '../src/' + srcPath, fileName),
|
|
|
|
outputStyle: 'expanded'
|
|
|
|
}, function (err, sassResult) {
|
|
|
|
if (err) console.error(err)
|
|
|
|
postcss(postcssConfig.plugins)
|
|
|
|
.process(sassResult.css, {
|
|
|
|
from: undefined
|
|
|
|
})
|
|
|
|
.then(result => {
|
|
|
|
fs.writeFile(
|
|
|
|
path.resolve(__dirname, '../lib/' + targetPath, fileName.replace(/\.scss/, '.css')),
|
|
|
|
result.css,
|
|
|
|
err => {
|
|
|
|
if (err) console.error(err)
|
|
|
|
}
|
|
|
|
)
|
|
|
|
fs.writeFile(
|
|
|
|
path.resolve(__dirname, '../es/' + targetPath, fileName.replace(/\.scss/, '.css')),
|
|
|
|
result.css,
|
|
|
|
err => {
|
|
|
|
if (err) console.error(err)
|
|
|
|
}
|
|
|
|
)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
styleFiles.forEach(createStyleGenerator('_styles', 'styles'))
|
|
|
|
fontStyleFiles.forEach(createStyleGenerator('_styles/fonts', 'styles/fonts'))
|
2020-02-12 16:21:42 +08:00
|
|
|
|
|
|
|
ncp(
|
2020-05-16 21:08:06 +08:00
|
|
|
path.resolve(__dirname, '../src/_styles/resources'),
|
2020-02-12 16:21:42 +08:00
|
|
|
path.resolve(__dirname, '../lib/styles/resources')
|
|
|
|
)
|
2020-05-16 21:08:06 +08:00
|
|
|
|
|
|
|
ncp(
|
|
|
|
path.resolve(__dirname, '../src/_styles/resources'),
|
|
|
|
path.resolve(__dirname, '../es/styles/resources')
|
|
|
|
)
|