compile.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // v1.0.0
  2. //是否使用IDE自带的node环境和插件,设置false后,则使用自己环境(使用命令行方式执行)
  3. let useIDENode = process.argv[0].indexOf("LayaAir") > -1 ? true : false;
  4. //获取Node插件和工作路径
  5. let ideModuleDir = useIDENode ? process.argv[1].replace("gulp\\bin\\gulp.js", "").replace("gulp/bin/gulp.js", "") : "";
  6. let workSpaceDir = useIDENode ? process.argv[2].replace("--gulpfile=", "").replace("\\.laya\\compile.js", "").replace("/.laya/compile.js", "") : "./../";
  7. //引用插件模块
  8. let gulp = require(ideModuleDir + "gulp");
  9. let browserify = require(ideModuleDir + "browserify");
  10. let source = require(ideModuleDir + "vinyl-source-stream");
  11. let tsify = require(ideModuleDir + "tsify");
  12. // 如果是发布时调用编译功能,增加prevTasks
  13. let prevTasks = "";
  14. if (global.publish) {
  15. prevTasks = ["loadConfig"];
  16. }
  17. //使用browserify,转换ts到js,并输出到bin/js目录
  18. gulp.task("compile", prevTasks, function () {
  19. // 发布时调用编译功能,判断是否点击了编译选项
  20. if (global.publish && !global.config.compile) {
  21. return;
  22. } else if (global.publish && global.config.compile) {
  23. // 发布时调用编译,workSpaceDir使用publish.js里的变量
  24. workSpaceDir = global.workSpaceDir;
  25. }
  26. return browserify({
  27. basedir: workSpaceDir,
  28. //是否开启调试,开启后会生成jsmap,方便调试ts源码,但会影响编译速度
  29. debug: true,
  30. entries: ['src/Main.ts'],
  31. cache: {},
  32. packageCache: {}
  33. })
  34. //使用tsify插件编译ts
  35. .plugin(tsify)
  36. .bundle()
  37. //使用source把输出文件命名为bundle.js
  38. .pipe(source('bundle.js'))
  39. //把bundle.js复制到bin/js目录
  40. .pipe(gulp.dest(workSpaceDir + "/bin/js"));
  41. });