UNPKG

@luban-cli/cli-lib-service

Version:
135 lines 5.29 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.build = void 0; const gulp_1 = __importDefault(require("gulp")); const through2_1 = __importDefault(require("through2")); const gulp_typescript_1 = __importDefault(require("gulp-typescript")); const rimraf_1 = __importDefault(require("rimraf")); const gulp_babel_1 = __importDefault(require("gulp-babel")); const merge2_1 = __importDefault(require("merge2")); const webpack_1 = __importDefault(require("webpack")); const share_1 = require("./share"); const getTSCommonConfig_1 = require("./getTSCommonConfig"); const compileLess_1 = require("./compileLess"); const getBabelConfig_1 = require("./getBabelConfig"); const getWebpackConfig_1 = require("./getWebpackConfig"); const SOURCE_DIR = "components"; const libDir = share_1.getProjectPath("lib"); const esDir = share_1.getProjectPath("es"); function cssInjection(content) { return content .replace(/\/style\/?'/g, "/style/css'") .replace(/\/style\/?"/g, '/style/css"') .replace(/\.less/g, ".css"); } function dist(done) { rimraf_1.default.sync(share_1.getProjectPath("dist")); process.env.NODE_ENV = "PRODUCTION"; const webpackConfig = getWebpackConfig_1.getWebpackConfig(); webpack_1.default(webpackConfig, (err, stats) => { if (err) { console.error(err.stack || err); if (err.details) { console.error(err.details); } return; } const info = stats.toJson(); if (stats.hasErrors()) { console.error(info.errors); } if (stats.hasWarnings()) { console.warn(info.warnings); } const buildInfo = stats.toString({ colors: true, children: true, chunks: false, modules: false, chunkModules: false, hash: false, version: false, }); console.log(buildInfo); done(null); }); } function babelify(js, isCommonJsModule) { const babelConfig = getBabelConfig_1.getBabelConfig(isCommonJsModule); if (isCommonJsModule === false && babelConfig.plugins) { babelConfig.plugins.push(share_1.replaceLib); } const stream = js.pipe(gulp_babel_1.default(babelConfig)).pipe(through2_1.default.obj(function z(file, encoding, next) { this.push(file.clone()); if (file.path.match(/(\/|\\)style(\/|\\)index\.js/)) { const content = file.contents.toString(encoding); file.contents = Buffer.from(cssInjection(content)); file.path = file.path.replace(/index\.js/, "css.js"); this.push(file); next(); } else { next(); } })); return stream.pipe(gulp_1.default.dest(isCommonJsModule === false ? esDir : libDir)); } function compile(isCommonJsModule) { rimraf_1.default.sync(isCommonJsModule !== false ? libDir : esDir); const less = gulp_1.default.src([`${SOURCE_DIR}/**/*.less`]) .pipe(through2_1.default.obj(function (file, _encoding, next) { this.push(file.clone()); if (file.path.match(/(\/|\\)style(\/|\\)index\.less$/)) { compileLess_1.compileLess(file.path) .then((css) => { file.contents = Buffer.from(css); file.path = file.path.replace(/\.less$/, ".css"); this.push(file); next(); }) .catch((e) => { console.error(e); }); } else { next(); } })) .pipe(gulp_1.default.dest(isCommonJsModule === false ? esDir : libDir)); const assets = gulp_1.default.src([`${SOURCE_DIR}/**/*.@(png|svg)`]).pipe(gulp_1.default.dest(isCommonJsModule === false ? esDir : libDir)); const source = [ `${SOURCE_DIR}/**/*.tsx`, `${SOURCE_DIR}/**/*.ts`, "typings/**/*.d.ts", `!${SOURCE_DIR}/**/__tests__/**`, ]; const compilerOptions = getTSCommonConfig_1.getTsConfig(isCommonJsModule); if (compilerOptions.allowJs) { source.unshift(`${SOURCE_DIR}/**/*.jsx`); } const tsResult = gulp_1.default.src(source).pipe(gulp_typescript_1.default(compilerOptions)); const tsFilesStream = babelify(tsResult.js, isCommonJsModule); const tsd = tsResult.dts.pipe(gulp_1.default.dest(isCommonJsModule === false ? esDir : libDir)); return merge2_1.default([less, tsFilesStream, tsd, assets]); } gulp_1.default.task("dist", (done) => { console.log("Building UMD..."); dist(done); }); gulp_1.default.task("compile-with-es", (done) => { console.log("[Parallel] Compile to es..."); compile(false).on("finish", done); }); gulp_1.default.task("compile-with-lib", (done) => { console.log("[Parallel] Compile to js..."); compile(true).on("finish", done); }); gulp_1.default.task("build", gulp_1.default.series(gulp_1.default.parallel("compile-with-es", "compile-with-lib"), "dist")); function build() { gulp_1.default.task("build")(() => null); } exports.build = build; //# sourceMappingURL=gulpfile.js.map