1 | const gulp = require('gulp');
|
2 | const less = require('gulp-less');
|
3 | const transform = require('gulp-transform');
|
4 | const rncss = require('./src/react-native-css');
|
5 | const {
|
6 | processStyleobject
|
7 | } = require('./src/index');
|
8 | const rename = require("gulp-rename");
|
9 |
|
10 | const sourceDir = './example';
|
11 | gulp.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 |
|
36 | traverseProperty(root, function ({ value, property, selector }) {
|
37 | if (property === 'fontSize') {
|
38 | return `Theme.font${value}`;
|
39 | }
|
40 | });
|
41 |
|
42 |
|
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 |
|
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 |
|
68 | gulp.task('default', (() => {
|
69 | gulp.start(['css']);
|
70 | }));
|
71 | gulp.watch(`${sourceDir}/**/*.less`, ['css']);
|