123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- import fs from 'fs'
- import path from 'path'
- import gulp from 'gulp'
- import babel from 'gulp-babel'
- import uglify from 'gulp-uglify'
- import less from 'gulp-less'
- import cleanCSS from 'gulp-clean-css'
- import rename from 'gulp-rename'
- import postcss from 'gulp-postcss'
- import cssnano from 'gulp-cssnano'
- import autoprefixer from 'autoprefixer'
- import del from 'del'
- import px2Rpx from './px2Rpx'
- import getConfig from './get-core-config'
- import { generateScript, generateStyle, generateColor, getModifyVars, getFilesByNames, mkdirs } from './generate'
- export const config = getConfig()
- export const files = getFilesByNames(config.components || [])
- export const modifyVars = getModifyVars(config.themes || {})
- export const tplPath = path.join(__dirname, '../src/index.js.tpl')
- /**
- * Generate config.json
- */
- export const generateConfig = (dest) => (cb) => {
- mkdirs(dest, () => {
- fs.writeFile(`${dest}/config.json`, JSON.stringify(config, null, 4), (err) => {
- if (cb) cb()
- if (err) console.error(err)
- })
- })
- }
- /**
- * Generate index.js
- */
- export const generateFiles = (dest, compress) => {
- if (!compress) {
- return () => (
- gulp.src(tplPath)
- .pipe(generateScript(files))
- .pipe(rename({ basename: 'index', extname: '.js' }))
- .pipe(gulp.dest(dest))
- )
- }
- return () => (
- gulp.src(tplPath)
- .pipe(generateScript(files))
- .pipe(babel())
- .pipe(uglify())
- .pipe(rename({ basename: 'index', extname: '.js' }))
- .pipe(gulp.dest(dest))
- )
- }
- /**
- * Generate colors.js
- */
- export const generateColors = (paths, base, compress) => {
- if (!compress) {
- return () => (
- gulp.src(paths.src, { base })
- .pipe(generateColor(modifyVars))
- .pipe(gulp.dest(paths.dest))
- )
- }
- return () => (
- gulp.src(paths.src, { base })
- .pipe(generateColor(modifyVars))
- .pipe(babel())
- .pipe(uglify())
- .pipe(gulp.dest(paths.dest))
- )
- }
- /**
- * Customized theme
- */
- export const themes = (paths, base) => () => (
- gulp
- .src(paths.src, { base })
- .pipe(generateStyle(modifyVars))
- .pipe(gulp.dest(paths.dest))
- )
- /**
- * Clean files
- */
- export const clean = (dest) => () => del([dest])
- /**
- * Build styles
- */
- export const styles = (paths, base, format) => () => (
- gulp
- .src(paths.src, { base })
- .pipe(less({ modifyVars }))
- .pipe(px2Rpx())
- .pipe(postcss())
- .pipe(cleanCSS({ format: format ? false : 'beautify' }))
- // .pipe(
- // cssnano({
- // zindex: false,
- // autoprefixer: false,
- // discardComments: { removeAll: true },
- // })
- // )
- .pipe(rename({ extname: '.wxss' }))
- .pipe(gulp.dest(paths.dest))
- )
- /**
- * Build scripts
- */
- export const scripts = (paths, base) => () => (
- gulp.src(paths.src, { base })
- .pipe(babel())
- .pipe(uglify())
- .pipe(gulp.dest(paths.dest))
- )
- /**
- * Copy files
- */
- export const copy = (paths, base) => () => (
- gulp
- .src(paths.src, { base })
- .pipe(gulp.dest(paths.dest))
- )
|