UNPKG

jarvis-react

Version:

React脚手架及命令行工具合集

55 lines (54 loc) 2.41 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.gulpTransform = void 0; const path_1 = require("path"); const vinyl_fs_1 = __importDefault(require("vinyl-fs")); const through2_1 = __importDefault(require("through2")); const fs_extra_1 = __importDefault(require("fs-extra")); const typescript_1 = __importDefault(require("typescript")); const gulp_less_1 = __importDefault(require("gulp-less")); const gulp_typescript_1 = __importDefault(require("gulp-typescript")); const gulp_if_1 = __importDefault(require("gulp-if")); const function_1 = require("../util/function"); const babel_1 = require("./babel"); function transformLess() { return gulp_if_1.default((file) => path_1.extname(file.path) === '.less', gulp_less_1.default()); } function transformType(buildType) { const tsconfig = typescript_1.default.readConfigFile(function_1.resolveProjectFile('tsconfig.json'), (path) => fs_extra_1.default.readFileSync(path, { encoding: 'utf-8' })).config; return gulp_if_1.default((file) => ['.tsx', '.ts'].includes(path_1.extname(file.path)) && !file.path.endsWith('.d.ts') && buildType === 'esm', gulp_typescript_1.default({ ...tsconfig.compilerOptions, declaration: true, })); } function transformJS(options) { const babelConfig = babel_1.getBabelConfig(options); return through2_1.default.obj((file, env, callback) => { if (['.tsx', '.ts', '.jsx', '.js'].includes(path_1.extname(file.path)) && !file.path.endsWith('.d.ts')) { const code = babel_1.babelTransform(babelConfig, file); file.path = file.path.replace(path_1.extname(file.path), '.js'); file.contents = Buffer.from(code); } callback(null, file); }); } async function gulpTransform(options) { const { outDir = 'es', buildType = 'esm' } = options; vinyl_fs_1.default .src([function_1.resolveProjectFile('src/**/*')], { allowEmpty: true, base: function_1.resolveProjectFile('src'), }) .pipe(transformLess()) .pipe(transformType(buildType)) .pipe(transformJS(options)) .pipe(vinyl_fs_1.default.dest(outDir)); return Promise.resolve(); } exports.gulpTransform = gulpTransform;