代码拉取完成,页面将自动刷新
const gulp = require('gulp');//定义执行任务
const path = require('path');//处理路径
const rimraf = require('rimraf');//删除跑路的 rm -rf
const ts = require('gulp-typescript');
const babel = require('gulp-babel');
const merge2 = require('merge2');//Promise.all
const {compilerOptions} = require('./tsconfig.json');
const tsConfig = {
noUnusedParameters: true,//不能有未使用的参数
noUnusedLocals: true,//不能有未使用的本地变量
strictNullChecks: true,//严格的Null检查
target: 'es6',//编译 的目标
jsx: 'react',//jsx如何处理preserve 保留不处理 react变成React.createElement()
moduleResolution: 'node',//模块的查找规则 node
declaration: true,//生成声明文件 d.ts
allowSyntheticDefaultImports: true,//允许 默认导入
...compilerOptions,
}
const babelConfig = require('./babel.config');
//准备好要编译 的文件
//glob 文件匹配模板,类似于正则
const source = [
'components/**/*.{js,ts,jsx,tsx}',
'!components/**/*.stories.{js,ts,jsx,tsx}',
'!components/**/e2e/*',
'!components/**/unit/*',
];
//C:\aproject\antd\components
const base = path.join(process.cwd(), 'components');
function getProjectPath(filePath) {
return path.join(process.cwd(), filePath);
}
//C:\aproject\antd\lib
const libDir = getProjectPath('lib');
//C:\aproject\antd\es
const esDir = getProjectPath('es');
/**
* 执行编译
* @param {*} modules 是否要转换模块
*/
function compile(modules) {
const targeDir = modules===false?esDir:libDir;
rimraf.sync(targeDir);//删除老的内容 rm -rf
//把文件匹配模式传给gulp,gulp会按这个模式把文件匹配了出来
//ts转译后会生成二个流,一个流是JS一个流是类型声明d.ts
const {js,dts} = gulp.src(source,{base}).pipe(ts(tsConfig));
const dtsStream = dts.pipe(gulp.dest(targeDir));
let jsStream = js;
if(modules){//如果要转成ES5,就用babel进行转义
jsStream=js.pipe(babel(babelConfig));
}
jsStream=jsStream.pipe(gulp.dest(targeDir));
return merge2([jsStream,dtsStream]);
}
gulp.task('compile-with-es',(done)=>{
console.log('compile to es');
compile(false).on('finish',done);
});
gulp.task('compile-with-lib',(done)=>{
console.log('compile to js');
compile().on('finish',done);
});
gulp.task('compile',gulp.parallel('compile-with-es','compile-with-lib'));
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。