UNPKG

2.36 kBJavaScriptView Raw
1const gulp = require('gulp');
2const less = require('gulp-less');
3const transform = require('gulp-transform');
4const rncss = require('./src/react-native-css');
5const {
6 processStyleobject
7} = require('./src/index');
8const rename = require("gulp-rename");
9
10const sourceDir = './example';
11gulp.task('css', function () {
12 return gulp.src([`${sourceDir}/**/*.less`], {
13 base: sourceDir
14 })
15 .pipe(less({}))
16 .pipe(transform('utf8', (code) => {
17 try {
18 code = JSON.stringify(rncss(code), false, 4);
19 } catch (e) {
20 console.log(e);
21 }
22 return code;
23 }))
24 .pipe(transform('utf8', (code) => {
25 try {
26 code = processStyleobject({
27 code,
28 hierarchy: false,
29 custom: function ({
30 root,
31 traverseProperty,
32 traverseStyle,
33 traverseChunk
34 }) {
35 // font-size:10 -> fontSize:Theme.font10
36 traverseProperty(root, function ({ value, property, selector }) {
37 if (property === 'fontSize') {
38 return `Theme.font${value}`;
39 }
40 });
41
42 // sort the keys
43 traverseStyle(root, function ({ style, selector, chunk, component }) {
44 const ret = {};
45 Object.keys(style).sort().forEach((key) => {
46 ret[key] = style[key];
47 });
48 return ret;
49 });
50
51 //print the chunks
52 traverseChunk(root, function ({ chunk, styleName, component }) {
53 console.log(chunk);
54 });
55 }
56 });
57 } catch (e) {
58 console.log(e);
59 }
60 return code;
61 }))
62 .pipe(rename({
63 extname: '.less.js'
64 }))
65 .pipe(gulp.dest(sourceDir));
66});
67
68gulp.task('default', (() => {
69 gulp.start(['css']);
70}));
71gulp.watch(`${sourceDir}/**/*.less`, ['css']);