gulp脚本
可以使用async/await
typescript被编译成es6,再编译成es5
let gulp = require('gulp');
let gulp_clean = require('gulp-clean');
let gulp_ts = require('gulp-typescript');
let gulp_babel = require('gulp-babel');
// require('shelljs/global');
let watch_files = [
"app/**/*.ts",
"logic/**/*.ts"
];
gulp.task('clean', function() {
return gulp.src(['release/**/*.js', 'dist/**/*.js'], {
read: false
})
.pipe(gulp_clean());
});
gulp.task('tsc', (cb) => {
let tsProject = gulp_ts.createProject('tsconfig.json');
var tsResult = tsProject.src() // or tsProject.src()
.pipe(tsProject());
return tsResult.js.pipe(gulp.dest('release'));
});
gulp.task('babel', cb => {
let opts = {
presets: ['es2015', 'es2016', 'es2017'],
plugins: [
["transform-runtime", {
"polyfill": false,
"regenerator": true
}]
]
};
return gulp.src('release/**/*.js')
.pipe(gulp_babel(opts))
.pipe(gulp.dest('dist/'));
});
// gulp.task('run_server',(cb)=>{
// let exec = require('child_process').exec;
// exec('node app');
// cb();
// });
gulp.task('build', gulp.series('clean', 'tsc','babel'), (cb) => {
console.log(new Date().toString());
console.log('build done');
cb();
});
gulp.task('watch',cb=>{
gulp.watch(watch_files,gulp.series('build'));
cb();
} );
gulp.task('default', gulp.series('build','watch'), () => {
console.log('default done');
});
// gulp.task('clean',(cb)=>{
// rm('-rf' ,'dist');
// cb();
// });
package.json
{
"name": "marsQuestion",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/tongjinle/marsQuestion.git"
},
"keywords": [],
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/tongjinle/marsQuestion/issues"
},
"homepage": "https://github.com/tongjinle/marsQuestion#readme",
"dependencies": {
"@types/async": "^2.0.32",
"@types/body-parser": "0.0.33",
"@types/cookie-parser": "^1.3.30",
"@types/express": "^4.0.33",
"@types/express-session": "0.0.32",
"@types/jasmine": "^2.5.35",
"@types/mongoose": "^4.5.38",
"@types/node": "^6.0.45",
"@types/underscore": "^1.7.36",
"async": "^2.1.2",
"body-parser": "^1.15.2",
"cookie-parser": "^1.4.3",
"express": "^4.14.0",
"express-session": "^1.15.0",
"jasmine": "^2.5.2",
"mongoose": "^4.6.4",
"underscore": "^1.8.3"
},
"devDependencies": {
"babel-plugin-transform-runtime": "^6.12.0",
"babel-preset-es2015": "^6.13.2",
"babel-preset-es2016": "^6.11.3",
"babel-preset-es2017": "^6.14.0",
"gulp": "github:gulpjs/gulp#4.0",
"gulp-babel": "^6.1.2",
"gulp-clean": "^0.3.2",
"gulp-typescript": "^3.1.4",
"typescript": "^2.1.5"
}
}