75 lines
2.6 KiB
JavaScript
75 lines
2.6 KiB
JavaScript
|
// v1.2.7
|
|||
|
//是否使用IDE自带的node环境和插件,设置false后,则使用自己环境(使用命令行方式执行)
|
|||
|
const useIDENode = process.argv[0].indexOf("LayaAir") > -1 ? true : false;
|
|||
|
const useCMDNode = process.argv[1].indexOf("layaair2-cmd") > -1 ? true : false;
|
|||
|
|
|||
|
function useOtherNode(){
|
|||
|
return useIDENode||useCMDNode;
|
|||
|
}
|
|||
|
//获取Node插件和工作路径
|
|||
|
let ideModuleDir = useOtherNode() ? process.argv[1].replace("gulp\\bin\\gulp.js", "").replace("gulp/bin/gulp.js", "") : "";
|
|||
|
let workSpaceDir = useOtherNode() ? process.argv[2].replace("--gulpfile=", "").replace("\\.laya\\compile.js", "").replace("/.laya/compile.js", "") : "./../";
|
|||
|
|
|||
|
const gulp = require(ideModuleDir + "gulp");
|
|||
|
const rollup = require(ideModuleDir + "rollup");
|
|||
|
const typescript = require(ideModuleDir + 'rollup-plugin-typescript2');//typescript2 plugin
|
|||
|
const glsl = require(ideModuleDir + 'rollup-plugin-glsl');
|
|||
|
const path = require('path');
|
|||
|
const fs = require('fs');
|
|||
|
|
|||
|
// 如果是发布时调用编译功能,增加prevTasks
|
|||
|
let prevTasks = "";
|
|||
|
if (global.publish) {
|
|||
|
prevTasks = ["loadConfig"];
|
|||
|
}
|
|||
|
|
|||
|
gulp.task("compile", prevTasks, function () {
|
|||
|
// 发布时调用编译功能,判断是否点击了编译选项
|
|||
|
if (global.publish) {
|
|||
|
workSpaceDir = global.workSpaceDir; // 发布时调用编译,workSpaceDir使用publish.js里的变量
|
|||
|
let forceCompile = !fs.existsSync(path.join(workSpaceDir, "bin", "js", "bundle.js")); // 发布时,并且没有编译过,则强制编译
|
|||
|
if (!global.config.compile && !forceCompile) {
|
|||
|
return;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return rollup.rollup({
|
|||
|
input: workSpaceDir + '/src/Main.ts',
|
|||
|
onwarn:(waring,warn)=>{
|
|||
|
if(waring.code == "CIRCULAR_DEPENDENCY"){
|
|||
|
console.log("warnning Circular dependency:");
|
|||
|
console.log(waring);
|
|||
|
}
|
|||
|
},
|
|||
|
treeshake: false, //建议忽略
|
|||
|
plugins: [
|
|||
|
typescript({
|
|||
|
tsconfig:workSpaceDir + "/tsconfig.json",
|
|||
|
check: true, //Set to false to avoid doing any diagnostic checks on the code
|
|||
|
tsconfigOverride:{compilerOptions:{removeComments: true}},
|
|||
|
include:/.*.ts/,
|
|||
|
}),
|
|||
|
glsl({
|
|||
|
// By default, everything gets included
|
|||
|
include: /.*(.glsl|.vs|.fs)$/,
|
|||
|
sourceMap: false,
|
|||
|
compress:false
|
|||
|
}),
|
|||
|
/*terser({
|
|||
|
output: {
|
|||
|
},
|
|||
|
numWorkers:1,//Amount of workers to spawn. Defaults to the number of CPUs minus 1
|
|||
|
sourcemap: false
|
|||
|
})*/
|
|||
|
]
|
|||
|
}).then(bundle => {
|
|||
|
return bundle.write({
|
|||
|
file: workSpaceDir + '/bin/js/bundle.js',
|
|||
|
format: 'iife',
|
|||
|
name: 'laya',
|
|||
|
sourcemap: false
|
|||
|
});
|
|||
|
}).catch(err=>{
|
|||
|
console.log(err);
|
|||
|
});
|
|||
|
});
|