]> git.immae.eu Git - github/fretlink/purs-loader.git/blobdiff - src/index.js
Escape require paths for windows
[github/fretlink/purs-loader.git] / src / index.js
index 6bf1e09e169c4678dae210285c12ed764e5dde7d..cd85c89a9a57d9364547b485e1e0e39b93fbb1b2 100644 (file)
@@ -9,6 +9,7 @@ const fs = Promise.promisifyAll(require('fs'))
 const spawn = require('cross-spawn')
 const path = require('path')
 const retryPromise = require('promise-retry')
+const jsStringEscape = require('js-string-escape')
 
 const ffiModuleRegex = /\/\/\s+module\s+([\w\.]+)/i
 const srcModuleRegex = /(?:^|\n)module\s+([\w\.]+)/i
@@ -143,17 +144,17 @@ function toJavaScript(psModule) {
     if (options.bundle) {
       // if bundling, return a reference to the bundle
       js = 'module.exports = require("'
-             + path.relative(psModule.srcDir, options.bundleOutput)
+             + jsStringEscape(path.relative(psModule.srcDir, options.bundleOutput))
              + '")["' + psModule.name + '"]'
     } else {
       // replace require paths to output files generated by psc with paths
       // to purescript sources, which are then also run through this loader.
       js = result.js
         .replace(requireRegex, (m, p1) => {
-          return 'require("' + result.psModuleMap[p1].src + '")'
+          return 'require("' + jsStringEscape(result.psModuleMap[p1].src) + '")'
         })
         .replace(/require\(['"]\.\/foreign['"]\)/g, (m, p1) => {
-          return 'require("' + result.psModuleMap[psModule.name].ffi + '")'
+          return 'require("' + jsStringEscape(result.psModuleMap[psModule.name].ffi) + '")'
         })
     }