@omni-door/cli
Version:
A tool set for set up the standard JS project
10 lines (9 loc) • 6.24 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function default_1(config) {
var _a = config.srcDir, srcDir = _a === void 0 ? 'src' : _a, _b = config.outDir, outDir = _b === void 0 ? 'lib' : _b, _c = config.esmDir, esmDir = _c === void 0 ? 'es' : _c, configurationPath = config.configurationPath, _d = config.pkjFieldName, pkjFieldName = _d === void 0 ? 'omni' : _d, _e = config.configFileName, configFileName = _e === void 0 ? 'omni.config.js' : _e;
return "'use strict';\n\nconst path = require('path');\nconst { requireCwd } = require('@omni-door/utils');\nconst gulp = requireCwd('gulp');\nconst babel = requireCwd('gulp-babel');\nconst less = requireCwd('gulp-less', true);\nconst sass = requireCwd('gulp-sass', true)(requireCwd('sass', true));\nconst gulpif = requireCwd('gulp-if');\nconst alias = requireCwd('gulp-ts-alias');\nconst typescript = requireCwd('gulp-typescript');\nconst sourcemaps = requireCwd('gulp-sourcemaps');\nconst autoprefixer = requireCwd('gulp-autoprefixer');\nconst cssnano = requireCwd('gulp-cssnano');\nconst concat = requireCwd('gulp-concat');\nconst concatCss = requireCwd('gulp-concat-css');\nconst cleanCSS = requireCwd('gulp-clean-css');\nconst through2 = requireCwd('through2');\nconst replace = requireCwd('gulp-replace-path', true);\nconst vueSFC = requireCwd('@omni-door/gulp-plugin-vue-sfc', true);\n\nconst ppkj = requireCwd('./package.json');\nconst configFilePath = (ppkj && ppkj." + pkjFieldName + " && ppkj." + pkjFieldName + ".filePath) || './" + configFileName + "';\nconst configs = requireCwd(configFilePath);\n" + (configurationPath ? "const customConfig = require('" + configurationPath + "')\n" : '') + "\nconst { build } = configs || {};\nconst { configuration = ({ task }) => { const [compileCJS, compileES, compileSFC, ...rest] = task; return [gulp.series(compileCJS, compileES, compileSFC), ...rest]; } } = build || {};\nconst project = typescript && typescript.createProject('tsconfig.json');\n\nconst params = {\n dest: {\n lib: '" + outDir + "',\n es: '" + esmDir + "'\n },\n styles: [\n '" + srcDir + "/**/*.{css,less,scss,sass}',\n '!" + srcDir + "/**/{demo,__demo__,test,__test__,stories,__stories__}/*.{css,less,scss,sass}'\n ],\n scripts: [\n '" + srcDir + "/**/*.{ts,tsx,js,jsx}',\n '!" + srcDir + "/**/{demo,__demo__,test,__test__,stories,__stories__}/*.{ts,tsx,js,jsx}',\n '!" + srcDir + "/**/*.{demo,test,stories}.{ts,tsx,js,jsx}'\n ],\n vue: [\n '" + srcDir + "/**/*.vue',\n '!" + srcDir + "/**/{demo,__demo__,test,__test__,stories,__stories__}/*.{vue,ts,tsx,js,jsx}',\n '!" + srcDir + "/**/*.{demo,test,stories}.{vue,ts,tsx,js,jsx}'\n ]\n};\n\nfunction cssInjection (content) {\n return content\n .replace(/\\/style\\/?'/g, \"/style/css'\")\n .replace(/\\/style\\/?\"/g, '/style/css\"')\n .replace(/\\.(less|scss|sass)/g, '.css');\n}\n\nfunction compileScripts (babelEnv, destDir) {\n const { scripts } = params;\n process.env.BABEL_ENV = babelEnv;\n return gulp\n .src(scripts)\n .pipe((alias && project) ? alias({ configuration: project.config }) : through2.obj())\n .pipe(sourcemaps ? sourcemaps.init() : through2.obj())\n .pipe(project ? project() : through2.obj())\n .pipe(babel({ root: process.cwd() }))\n .pipe(replace ? replace(/\\.vue(\"|'){1}/g, '.js$1') : through2.obj())\n .pipe(\n through2.obj(function (file, encoding, next) {\n this.push(file.clone());\n if (file.path.match(/(\\/|\\\\)style(\\/|\\\\)index\\.js/)) {\n const content = file.contents.toString(encoding);\n file.contents = Buffer.from(cssInjection(content));\n file.path = file.path.replace(/index\\.js/, 'css.js');\n this.push(file);\n next();\n } else {\n next();\n }\n })\n )\n .pipe(sourcemaps ? sourcemaps.write({ sourceRoot: file => path.relative(path.join(file.cwd, file.path), file.base) }) : through2.obj())\n .pipe(gulp.dest(destDir));\n}\n\nfunction compileCJS () {\n const { dest } = params;\n return compileScripts('cjs', dest.lib);\n}\n\nfunction compileES () {\n const { dest } = params;\n return compileScripts('es', dest.es);\n}\n\nfunction compileSFC () {\n const { dest, vue } = params;\n return gulp\n .src(vue)\n .pipe(sourcemaps ? sourcemaps.init() : through2.obj())\n .pipe(vueSFC ? vueSFC.default({ ext: '.ts' }) : through2.obj())\n .pipe((alias && project) ? alias({ configuration: project.config }) : through2.obj())\n .pipe(project ? project() : through2.obj())\n .pipe(babel({ root: process.cwd() }))\n .pipe(replace ? replace(/\\.vue(\"|'){1}/g, '.js$1') : through2.obj())\n .pipe(sourcemaps ? sourcemaps.write({ sourceRoot: file => path.relative(path.join(file.cwd, file.path), file.base) }) : through2.obj())\n .pipe(gulp.dest(dest.lib))\n .pipe(gulp.dest(dest.es));\n}\n\nfunction copyStylesheet () {\n const { dest, styles } = params;\n return gulp\n .src(styles)\n .pipe(gulp.dest(dest.lib))\n .pipe(gulp.dest(dest.es));\n}\n\nfunction handleLess (file) {\n let result = false;\n if (!less) return result;\n if (file.path.match(/.less$/)) {\n result = true;\n }\n\n return result;\n}\n\nfunction handleSass (file) {\n let result = false;\n if (!sass) return result;\n if (file.path.match(/.(scss|sass)$/)) {\n result = true;\n }\n\n return result;\n}\n\nfunction trans2css() {\n const { dest, styles } = params;\n return gulp\n .src(styles)\n .pipe(gulpif(handleLess, less ? less() : through2.obj()))\n .pipe(gulpif(handleSass, sass ? sass() : through2.obj()))\n .pipe(autoprefixer())\n .pipe(cssnano({ zindex: false, reduceIdents: false }))\n .pipe(gulp.dest(dest.lib))\n .pipe(gulp.dest(dest.es))\n .pipe(concatCss('index.css'))\n .pipe(concat('index.css'))\n .pipe(cleanCSS())\n .pipe(gulp.dest(dest.lib))\n .pipe(gulp.dest(dest.es));\n}\n\nconst builds = " + (configurationPath
? 'customConfig'
: 'gulp.parallel.apply(gulp, configuration({ task: [compileCJS, compileES, compileSFC, copyStylesheet, trans2css], params }));') + "\n\nexports.build = builds;\n\nexports.default = builds;\n";
}
exports.default = default_1;