mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-20 04:14:21 +08:00
chore(gulp): update gulp scripts
This commit is contained in:
committed by
Adam Bradley
parent
17fe72e4bc
commit
12c9fd12bd
175
scripts/gulp/util.ts
Normal file
175
scripts/gulp/util.ts
Normal file
@ -0,0 +1,175 @@
|
||||
import { COMMONJS_MODULE, ES_MODULE, NODE_MODULES_ROOT, PROJECT_ROOT, SRC_ROOT, SRC_COMPONENTS_ROOT } from './constants';
|
||||
import { src, dest } from 'gulp';
|
||||
import * as path from 'path';
|
||||
import * as fs from 'fs';
|
||||
|
||||
export function mergeObjects(obj1: any, obj2: any ) {
|
||||
if (! obj1) {
|
||||
obj1 = {};
|
||||
}
|
||||
if (! obj2) {
|
||||
obj2 = {};
|
||||
}
|
||||
var obj3 = {};
|
||||
for (var attrname in obj1) {
|
||||
(<any>obj3)[attrname] = obj1[attrname];
|
||||
}
|
||||
for (var attrname in obj2) {
|
||||
(<any>obj3)[attrname] = obj2[attrname];
|
||||
}
|
||||
return obj3;
|
||||
}
|
||||
|
||||
function getRootTsConfig(): any {
|
||||
const json = fs.readFileSync(`${PROJECT_ROOT}/tsconfig.json`);
|
||||
|
||||
let tsConfig = JSON.parse(json.toString());
|
||||
return tsConfig;
|
||||
}
|
||||
|
||||
export function createTempTsConfig(includeGlob: string[], moduleType: String, pathToWriteFile: string): any {
|
||||
let config = getRootTsConfig();
|
||||
if (!config.compilerOptions) {
|
||||
config.compilerOptions = {};
|
||||
}
|
||||
// for now, we only compiling to same directory (no outdir)
|
||||
if (config.compilerOptions && config.compilerOptions.outDir) {
|
||||
delete config.compilerOptions.outDir;
|
||||
}
|
||||
if (config.compilerOptions) {
|
||||
config.compilerOptions.module = moduleType;
|
||||
}
|
||||
config.include = includeGlob;
|
||||
let json = JSON.stringify(config, null, 2);
|
||||
fs.writeFileSync(pathToWriteFile, json);
|
||||
}
|
||||
|
||||
export function copySourceToDest(destinationPath: string, excludeSpecs: boolean = true, excludeE2e: boolean = true) {
|
||||
let glob = [`${SRC_ROOT}/**/*.ts`];
|
||||
if (excludeSpecs) {
|
||||
glob.push(`!${SRC_ROOT}/**/*.spec.ts`);
|
||||
} else {
|
||||
glob.push(`${SRC_ROOT}/**/*.spec.ts`);
|
||||
}
|
||||
if (excludeE2e) {
|
||||
glob.push(`!${SRC_ROOT}/components/*/test/*/*.ts`);
|
||||
}
|
||||
return src(glob)
|
||||
.pipe(dest(destinationPath));
|
||||
}
|
||||
|
||||
export function copyGlobToDest(sourceGlob: string[], destPath: string) {
|
||||
return src(sourceGlob).pipe(dest(destPath));
|
||||
}
|
||||
|
||||
export function copyFonts(destinationPath: string) {
|
||||
return src([
|
||||
'src/fonts/*.+(ttf|woff|woff2)',
|
||||
'node_modules/ionicons/dist/fonts/*.+(ttf|woff|woff2)'
|
||||
])
|
||||
.pipe(dest(destinationPath));
|
||||
}
|
||||
|
||||
export function compileSass(destinationPath: string) {
|
||||
let sass = require('gulp-sass');
|
||||
let autoprefixer = require('gulp-autoprefixer');
|
||||
let cleanCSS = require('gulp-clean-css');
|
||||
let rename = require('gulp-rename');
|
||||
let buildConfig = require('../build/config');
|
||||
|
||||
let ioniconsPath = path.join(NODE_MODULES_ROOT, 'ionicons/dist/scss/');
|
||||
|
||||
return src([
|
||||
path.join(SRC_ROOT, 'themes/ionic.build.default.scss'),
|
||||
path.join(SRC_ROOT, 'themes/ionic.build.dark.scss')
|
||||
])
|
||||
.pipe(sass({
|
||||
includePaths: [ioniconsPath]
|
||||
}).on('error', sass.logError)
|
||||
)
|
||||
.pipe(autoprefixer(buildConfig.autoprefixer))
|
||||
|
||||
.pipe(rename(function (path) {
|
||||
path.basename = path.basename.replace('.default', '');
|
||||
path.basename = path.basename.replace('.build', '');
|
||||
}))
|
||||
|
||||
.pipe(dest(destinationPath))
|
||||
|
||||
.pipe(cleanCSS())
|
||||
|
||||
.pipe(rename({
|
||||
extname: '.min.css'
|
||||
}))
|
||||
|
||||
.pipe(dest(destinationPath));
|
||||
}
|
||||
|
||||
export function setSassIonicVersion(version: string) {
|
||||
fs.writeFileSync(path.join(SRC_ROOT, 'themes/version.scss'), `$ionic-version: "${version}";`);
|
||||
}
|
||||
|
||||
export function copyFile(srcPath: string, destPath: string) {
|
||||
const sourceData = fs.readFileSync(srcPath);
|
||||
fs.writeFileSync(destPath, sourceData);
|
||||
}
|
||||
|
||||
export function copySwiperToPath(distPath: string, moduleType: string) {
|
||||
copyFile(`${SRC_COMPONENTS_ROOT}/slides/swiper-widget.d.ts`, `${distPath}/swiper-widget.d.ts`);
|
||||
if (!moduleType || moduleType === COMMONJS_MODULE) {
|
||||
copyFile(`${SRC_COMPONENTS_ROOT}/slides/swiper-widget.js`, `${distPath}/swiper-widget.js`);
|
||||
} else if (moduleType === ES_MODULE) {
|
||||
copyFile(`${SRC_COMPONENTS_ROOT}/slides/swiper-widget.es2015.js`, `${distPath}/swiper-widget.js`);
|
||||
} else {
|
||||
copyFile(`${SRC_COMPONENTS_ROOT}/slides/swiper-widget.system.js`, `${distPath}/swiper-widget.system.js`);
|
||||
}
|
||||
}
|
||||
|
||||
export function runNgc(pathToConfigFile: string, done: Function) {
|
||||
let exec = require('child_process').exec;
|
||||
var shellCommand = `node --max_old_space_size=8096 ${PROJECT_ROOT}/node_modules/.bin/ngc -p ${pathToConfigFile}`;
|
||||
|
||||
exec(shellCommand, function(err, stdout, stderr) {
|
||||
console.log(stdout);
|
||||
console.log(stderr);
|
||||
done(err);
|
||||
});
|
||||
}
|
||||
|
||||
export function runTsc(pathToConfigFile: string, done: Function) {
|
||||
let exec = require('child_process').exec;
|
||||
var shellCommand = `node --max_old_space_size=8096 ${PROJECT_ROOT}/node_modules/.bin/tsc -p ${pathToConfigFile}`;
|
||||
|
||||
exec(shellCommand, function(err, stdout, stderr) {
|
||||
console.log(stdout);
|
||||
console.log(stderr);
|
||||
done(err);
|
||||
});
|
||||
}
|
||||
|
||||
export function runWebpack(pathToWebpackConfig: string, done: Function) {
|
||||
let exec = require('child_process').exec;
|
||||
let shellCommand = `node --max_old_space_size=8096 ./node_modules/.bin/webpack --config ${pathToWebpackConfig} --display-error-details`;
|
||||
|
||||
exec(shellCommand, function(err, stdout, stderr) {
|
||||
console.log(stdout);
|
||||
console.log(stderr);
|
||||
done(err);
|
||||
});
|
||||
}
|
||||
|
||||
export function deleteFiles(glob: string[], done: Function) {
|
||||
let del = require('del');
|
||||
del.sync(glob);
|
||||
done();
|
||||
}
|
||||
|
||||
export function createTimestamp() {
|
||||
// YYYYMMDDHHMM
|
||||
var d = new Date();
|
||||
return d.getUTCFullYear() + // YYYY
|
||||
('0' + (d.getUTCMonth() + 1)).slice(-2) + // MM
|
||||
('0' + (d.getUTCDate())).slice(-2) + // DD
|
||||
('0' + (d.getUTCHours())).slice(-2) + // HH
|
||||
('0' + (d.getUTCMinutes())).slice(-2); // MM
|
||||
}
|
||||
Reference in New Issue
Block a user