]> git.immae.eu Git - github/fretlink/purs-loader.git/commitdiff
Escape require paths for windows
authoreric thul <thul.eric@gmail.com>
Tue, 24 May 2016 12:55:38 +0000 (08:55 -0400)
committereric thul <thul.eric@gmail.com>
Tue, 24 May 2016 12:55:38 +0000 (08:55 -0400)
Resolves #52

package.json
src/index.js

index 4924fc3379e679b02b67717fdbaf6bfaed242d9a..c2643a37484ce674c789136021289003aaf0e9b1 100644 (file)
@@ -44,6 +44,7 @@
     "cross-spawn": "^3.0.1",
     "debug": "^2.2.0",
     "globby": "^4.0.0",
+    "js-string-escape": "^1.0.1",
     "loader-utils": "^0.2.14",
     "promise-retry": "^1.1.0"
   },
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) + '")'
         })
     }