Update to disk_build.git commit b8ff724, can now build Less CSS via disk cache
authorNick Downing <nick@ndcode.org>
Sun, 18 Nov 2018 11:27:38 +0000 (22:27 +1100)
committerNick Downing <nick@ndcode.org>
Sun, 18 Nov 2018 11:27:38 +0000 (22:27 +1100)
SiteRoot.js

index e61cf21..82e42f0 100644 (file)
@@ -114,38 +114,48 @@ SiteRoot.prototype.internal_get_jst = function(pathname, root) {
 }
 
 SiteRoot.prototype.internal_get_css_less = function(pathname, root) {
-  let dirname = path.posix.dirname(pathname)
   return /*await*/ this.build_cache_css_less.get(
     pathname,
     async result => {
-      let text = await fs_readFile(pathname, {encoding: 'utf-8'})
-      console.log('getting', pathname, 'as css_less')
-      let render = await less.render(
-        text,
-        {
-          //color: true,
-          //compress: false,
-          //depends: false,
-          filename: pathname,
-          //globalVars: null,
-          //ieCompat: false,
-          //insecure: false,
-          //javascriptEnabled: false,
-          //lint: false,
-          //math: 0,
-          //modifyVars: null,
-          pathnames: [dirname],
-          //plugins: [],
-          //reUsePluginManager: true,
-          //rewriteUrls: false,
-          rootpathname: root//,
-          //strictImports: false,
-          //strictUnits: false,
-          //urlArgs: ''
-        }
+      let render = await disk_build(
+        pathname,
+        async temp_pathname => {
+          let render = await less.render(
+            await fs_readFile(pathname, {encoding: 'utf-8'}),
+            {
+              //color: true,
+              compress: true,
+              //depends: false,
+              filename: pathname,
+              //globalVars: null,
+              //ieCompat: false,
+              //insecure: false,
+              //javascriptEnabled: false,
+              //lint: false,
+              //math: 0,
+              //modifyVars: null,
+              pathnames: [path.posix.dirname(pathname)],
+              //plugins: [],
+              //reUsePluginManager: true,
+              //rewriteUrls: false,
+              rootpathname: root//,
+              //strictImports: false,
+              //strictUnits: false,
+              //urlArgs: ''
+            }
+          )
+          await fs_writeFile(
+            temp_pathname,
+            render.css,
+            {encoding: 'utf-8'}
+          )
+          return render.imports
+        },
+        true
       )
-      result.deps.concat(render.imports)
-      result.value = Buffer.from(render.css)
+      console.log('getting', pathname, 'as css_less')
+      result.deps = result.deps.concat(render.deps)
+      result.value = await fs_readFile(render.pathname)
     }
   )
 }
@@ -154,24 +164,25 @@ SiteRoot.prototype.internal_get_css_min = function(pathname) {
   return /*await*/ this.build_cache_css_min.get(
     pathname,
     async result => {
-      result.value = fs_readFile(
-        await disk_build(
-          pathname,
-          async built_pathname => {
-            console.log('getting', pathname, 'as css_min')
-            let text = await fs_readFile(pathname, {encoding: 'utf-8'})
-            console.log('building', built_pathname)
-            let render = await clean_css.minify(text)
-            for (let i = 0; i < render.warnings.length; ++i)
-              console.log(`clean-css warning: ${render.warnings[i]}`)
-            return /*await*/ fs_writeFile(
-              built_pathname,
-              render.styles,
-              {encoding: 'utf-8'}
-            )
-          }
-        )
+      let render = await disk_build(
+        pathname,
+        async temp_pathname => {
+          let render = await clean_css.minify(
+            await fs_readFile(pathname, {encoding: 'utf-8'})
+          )
+          for (let i = 0; i < render.warnings.length; ++i)
+            console.log(`clean-css warning: ${render.warnings[i]}`)
+          return /*await*/ fs_writeFile(
+            temp_pathname,
+            render.styles,
+            {encoding: 'utf-8'}
+          )
+        },
+        true
       )
+      console.log('getting', pathname, 'as css_min')
+      assert(render.deps.length === 0)
+      result.value = await fs_readFile(render.pathname)
     }
   )
 }
@@ -180,21 +191,21 @@ SiteRoot.prototype.internal_get_html_min = function(pathname) {
   return /*await*/ this.build_cache_html_min.get(
     pathname,
     async result => {
-      result.value = fs_readFile(
-        await disk_build(
-          pathname,
-          async built_pathname => {
-            console.log('getting', pathname, 'as html_min')
-            let text = await fs_readFile(pathname, {encoding: 'utf-8'})
-            console.log('building', built_pathname)
-            return /*await*/ fs_writeFile(
-              built_pathname,
-              html_minifier.minify(text, {collapseWhitespace: true}),
-              {encoding: 'utf-8'}
-            )
-          }
-        )
+      let render = await disk_build(
+        pathname,
+        async temp_pathname => /*await*/ fs_writeFile(
+          temp_pathname,
+          html_minifier.minify(
+            await fs_readFile(pathname, {encoding: 'utf-8'}),
+            {collapseWhitespace: true}
+          ),
+          {encoding: 'utf-8'}
+        ),
+        true
       )
+      console.log('getting', pathname, 'as html_min')
+      assert(render.deps.length === 0)
+      result.value = await fs_readFile(render.pathname)
     }
   )
 }
@@ -203,128 +214,128 @@ SiteRoot.prototype.internal_get_js_min = function(pathname) {
   return /*await*/ this.build_cache_js_min.get(
     pathname,
     async result => {
-      result.value = fs_readFile(
-        await disk_build(
-          pathname,
-          async built_pathname => {
-            console.log('getting', pathname, 'as js_min')
-            let files = {}
-            files[pathname] = await fs_readFile(pathname, {encoding: 'utf-8'})
-            console.log('building', built_pathname)
-            let render = uglify_es.minify(
-              files,
-              {
-                //compress: {
-                  //arrows        : true,
-                  //booleans      : true,
-                  //collapse_vars : true,
-                  //comparisons   : true,
-                  //computed_props: true,
-                  //conditionals  : true,
-                  //dead_code     : true,
-                  //drop_console  : false,
-                  //drop_debugger : true,
-                  //ecma          : 5,
-                  //evaluate      : true,
-                  //expression    : false,
-                  //global_defs   : {},
-                  //hoist_funs    : false,
-                  //hoist_props   : true,
-                  //hoist_vars    : false,
-                  //ie8           : false,
-                  //if_return     : true,
-                  //inline        : true,
-                  //join_vars     : true,
-                  //keep_classnames: false,
-                  //keep_fargs    : true,
-                  //keep_fnames   : false,
-                  //keep_infinity : false,
-                  //loops         : true,
-                  //negate_iife   : true,
-                  //passes        : 1,
-                  //properties    : true,
-                  //pure_getters  : true && "strict",
-                  //pure_funcs    : null,
-                  //reduce_funcs  : true,
-                  //reduce_vars   : true,
-                  //sequences     : true,
-                  //side_effects  : true,
-                  //switches      : true,
-                  //top_retain    : null,
-                  //toplevel      : !!(options && options["top_retain"]),
-                  //typeofs       : true,
-                  //unsafe        : false,
-                  //unsafe_arrows : false,
-                  //unsafe_comps  : false,
-                  //unsafe_Function: false,
-                  //unsafe_math   : false,
-                  //unsafe_methods: false,
-                  //unsafe_proto  : false,
-                  //unsafe_regexp : false,
-                  //unsafe_undefined: false,
-                  //unused        : true,
-                  //warnings      : false,
-                //},
-                //ecma: undefined,
-                //ie8: false,
-                //keep_classnames: undefined,
-                //keep_fnames: false,
-                //mangle: {},
-                //nameCache: null,
-                //output: {
-                  //ascii_only       : false,
-                  //beautify         : false,
-                  //bracketize       : false,
-                  //comments         : false,
-                  //ecma             : 5,
-                  //ie8              : false,
-                  //indent_level     : 4,
-                  //indent_start     : 0,
-                  //inline_script    : true,
-                  //keep_quoted_props: false,
-                  //max_line_len     : false,
-                  //preamble         : null,
-                  //preserve_line    : false,
-                  //quote_keys       : false,
-                  //quote_style      : 0,
-                  //safari10         : false,
-                  //semicolons       : true,
-                  //shebang          : true,
-                  //shorthand        : undefined,
-                  //source_map       : null,
-                  //webkit           : false,
-                  //width            : 80,
-                  //wrap_iife        : false
-                //},
-                //parse: {
-                  //bare_returns   : false,
-                  //ecma           : 8,
-                  //expression     : false,
-                  //filename       : null,
-                  //html5_comments : true,
-                  //shebang        : true,
-                  //strict         : false,
-                  //toplevel       : null
-                //},
-                //rename: undefined,
-                //safari10: false,
-                //sourceMap: false,
-                //timings: false,
-                toplevel: true //false,
-                //warnings: false,
-                //wrap: false
-              }
-            )
-            if (render.error !== undefined)
-              throw render.error
-            return /*await*/ fs_writeFile(
-              built_pathname,
-              render.code,
-              {encoding: 'utf-8'}
-            )
-          }
-        )
+      let render = await disk_build(
+        pathname,
+        async temp_pathname => {
+          let files = {}
+          files[pathname] = await fs_readFile(pathname, {encoding: 'utf-8'})
+          let render = uglify_es.minify(
+            files,
+            {
+              //compress: {
+                //arrows        : true,
+                //booleans      : true,
+                //collapse_vars : true,
+                //comparisons   : true,
+                //computed_props: true,
+                //conditionals  : true,
+                //dead_code     : true,
+                //drop_console  : false,
+                //drop_debugger : true,
+                //ecma          : 5,
+                //evaluate      : true,
+                //expression    : false,
+                //global_defs   : {},
+                //hoist_funs    : false,
+                //hoist_props   : true,
+                //hoist_vars    : false,
+                //ie8           : false,
+                //if_return     : true,
+                //inline        : true,
+                //join_vars     : true,
+                //keep_classnames: false,
+                //keep_fargs    : true,
+                //keep_fnames   : false,
+                //keep_infinity : false,
+                //loops         : true,
+                //negate_iife   : true,
+                //passes        : 1,
+                //properties    : true,
+                //pure_getters  : true && "strict",
+                //pure_funcs    : null,
+                //reduce_funcs  : true,
+                //reduce_vars   : true,
+                //sequences     : true,
+                //side_effects  : true,
+                //switches      : true,
+                //top_retain    : null,
+                //toplevel      : !!(options && options["top_retain"]),
+                //typeofs       : true,
+                //unsafe        : false,
+                //unsafe_arrows : false,
+                //unsafe_comps  : false,
+                //unsafe_Function: false,
+                //unsafe_math   : false,
+                //unsafe_methods: false,
+                //unsafe_proto  : false,
+                //unsafe_regexp : false,
+                //unsafe_undefined: false,
+                //unused        : true,
+                //warnings      : false,
+              //},
+              //ecma: undefined,
+              //ie8: false,
+              //keep_classnames: undefined,
+              //keep_fnames: false,
+              //mangle: {},
+              //nameCache: null,
+              //output: {
+                //ascii_only       : false,
+                //beautify         : false,
+                //bracketize       : false,
+                //comments         : false,
+                //ecma             : 5,
+                //ie8              : false,
+                //indent_level     : 4,
+                //indent_start     : 0,
+                //inline_script    : true,
+                //keep_quoted_props: false,
+                //max_line_len     : false,
+                //preamble         : null,
+                //preserve_line    : false,
+                //quote_keys       : false,
+                //quote_style      : 0,
+                //safari10         : false,
+                //semicolons       : true,
+                //shebang          : true,
+                //shorthand        : undefined,
+                //source_map       : null,
+                //webkit           : false,
+                //width            : 80,
+                //wrap_iife        : false
+              //},
+              //parse: {
+                //bare_returns   : false,
+                //ecma           : 8,
+                //expression     : false,
+                //filename       : null,
+                //html5_comments : true,
+                //shebang        : true,
+                //strict         : false,
+                //toplevel       : null
+              //},
+              //rename: undefined,
+              //safari10: false,
+              //sourceMap: false,
+              //timings: false,
+              toplevel: true //false,
+              //warnings: false,
+              //wrap: false
+            }
+          )
+          if (render.error !== undefined)
+            throw render.error
+          return /*await*/ fs_writeFile(
+            temp_pathname,
+            render.code,
+            {encoding: 'utf-8'}
+          )
+        },
+        true
       )
+      console.log('getting', pathname, 'as js_min')
+      assert(render.deps.length === 0)
+      result.value = fs_readFile(render.pathname)
     }
   )
 }
@@ -333,22 +344,24 @@ SiteRoot.prototype.internal_get_svg_min = function(pathname) {
   return /*await*/ this.build_cache_svg_min.get(
     pathname,
     async result => {
-      result.value = fs_readFile(
-        await disk_build(
-          pathname,
-          async built_pathname => {
-            console.log('getting', pathname, 'as svg_min')
-            let text = await fs_readFile(pathname, {encoding: 'utf-8'})
-            console.log('building', built_pathname)
-            let render = await svgo.optimize(text, {path: pathname})
-            return /*await*/ fs_writeFile(
-              built_pathname,
-              render.data,
-              {encoding: 'utf-8'}
-            )
-          }
-        )
+      let render = await disk_build(
+        pathname,
+        async temp_pathname => {
+          let render = await svgo.optimize(
+            await fs_readFile(pathname, {encoding: 'utf-8'}),
+            {path: pathname}
+          )
+          return /*await*/ fs_writeFile(
+            temp_pathname,
+            render.data,
+            {encoding: 'utf-8'}
+          )
+        },
+        true
       )
+      assert(render.deps.length === 0)
+      result.value = await fs_readFile(render.pathname)
+      console.log('getting', pathname, 'as svg_min')
     }
   )
 }