public ProjectBuilder BuildClient() { var source = File.ReadAllText("client/bilibili-evolved.js"); source = RegexReplacer.Replace(source, @"import (.*) from [""'](.*)[""'];", match => { var module = File.ReadAllText("client/" + match.Groups[2].Value.Replace("./", "") + ".js").Replace("export ", ""); return(module); }); File.WriteAllText(SourcePath, source); Source = File.ReadAllText(SourcePath); WriteSuccess("Client Build complete."); return(this); }
public ProjectBuilder BuildTypeScripts() { var tsc = new BabelCompiler(); var uglifyJs = new JavascriptMinifier(); var files = ResourceMinifier.GetFiles(file => file.Extension == ".ts" && !file.Name.EndsWith(".d.ts") ); using (var cache = new BuildCache()) { var changedFiles = files.Where(file => !cache.Contains(file)).ToArray(); if (changedFiles.Any()) { string getOutputCacheFilename(string f) { return(".ts-output/" + f .Replace(".ts", ".js") .Replace($"src{Path.DirectorySeparatorChar}", "")); } changedFiles.ForEach(file => { cache.AddCache(file); WriteInfo($"TypeScript build: {file}"); }); WriteInfo(tsc.Run("").Trim()); Parallel.ForEach(changedFiles .Where(f => !f.EndsWith(".vue.ts")), f => { // var tsc = new BabelSingleCompiler(file); // var js = tsc.Run(File.ReadAllText(file)); // File.WriteAllText(getOutputCacheFilename(file), js); var file = getOutputCacheFilename(f); var text = RegexReplacer.Replace(File.ReadAllText(file), @"import\(\(\(\)\s*=>\s*(.*)\)\(\)\)", match => { return($"import({match.Groups[1].Value})"); }); var min = uglifyJs.Minify(text); var minFile = ResourceMinifier.GetMinimizedFileName(file); File.WriteAllText(minFile, min); UpdateCachedMinFile(minFile); // WriteHint($"\t=> {minFile}"); }); } cache.SaveCache(); } WriteSuccess("TypeScript build complete."); return(this); }