@luban-cli/cli-lib-service
Version:
A development runtime environment dependency for lib
135 lines • 5.29 kB
JavaScript
;
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