diff --git a/shakespeare-babel.cabal b/shakespeare-babel.cabal
--- a/shakespeare-babel.cabal
+++ b/shakespeare-babel.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                shakespeare-babel
-version:             0.1.0.0
+version:             0.2.0.0
 synopsis:            compile es2015
 license:             PublicDomain
 author:              ncaq
@@ -17,8 +17,11 @@
 library
   exposed-modules:     Text.Babel
   build-depends:       base             >=4.8   && <4.9
-                     , shakespeare      >=2.0   && <2.1
                      , classy-prelude   >=0.12  && <0.13
+                     , data-default     >=0.5   && <0.6
+                     , directory        >=1.2   && <1.3
+                     , process          >=1.4   && <1.5
+                     , shakespeare      >=2.0   && <2.1
                      , template-haskell >=2.10  && <2.11
   hs-source-dirs:      src
   default-language:    Haskell2010
diff --git a/src/Text/Babel.hs b/src/Text/Babel.hs
--- a/src/Text/Babel.hs
+++ b/src/Text/Babel.hs
@@ -1,24 +1,32 @@
 -- | A Shakespearean module for Babel
 
-module Text.Babel
-    ( babel
-    , babelFile
-    , babelFileReload
-    , babelSettings
-    ) where
+module Text.Babel where
 
+import           Data.Default
 import           Language.Haskell.TH.Quote
 import           Language.Haskell.TH.Syntax
+import           System.Directory
+import           System.Process
 import           Text.Julius
 import           Text.Shakespeare
 
+newtype BabelArgs = BabelArgs [String]
+                  deriving (Eq, Ord, Read, Show)
+
+instance Default BabelArgs where
+    def = BabelArgs ["--presets", "es2015", "--source-maps", "inline", "--source-file-name", "babel.es6.js"]
+
 -- | es2015 compiles down to Javascript
 babelSettings :: Q ShakespeareSettings
-babelSettings = do
+babelSettings = babelSettingsWithArgs def
+
+babelSettingsWithArgs :: BabelArgs -> Q ShakespeareSettings
+babelSettingsWithArgs (BabelArgs args) = do
   jsettings <- javascriptSettings
+  exe <- qRunIO babelExePath
   return $ jsettings { varChar = '#'
                      , preConversion = Just PreConvert
-                                       { preConvert = ReadProcess "babel" ["--presets", "es2015"]
+                                       { preConvert = ReadProcess exe args
                                        , preEscapeIgnoreBalanced = "'\""
                                        , preEscapeIgnoreLine = "//"
                                        , wrapInsertion = Just WrapInsertion
@@ -30,18 +38,36 @@
                                                          , wrapInsertionAddParens = False
                                                          }}}
 
+babelExePath :: IO FilePath
+babelExePath = do
+    (_, bin, _) <- readProcessWithExitCode "npm" ["bin"] []
+    let npmBabel = takeWhile (/= '\n') bin ++ "/" ++ "babel"
+    npmExist <- doesFileExist npmBabel
+    return $ if npmExist
+             then npmBabel
+             else "babel"
+
 -- | Read inline
 babel :: QuasiQuoter
-babel = QuasiQuoter { quoteExp = \s -> babelSettings >>= \rs -> quoteExp (shakespeare rs) s }
+babel = babelWithArgs def
 
+babelWithArgs :: BabelArgs -> QuasiQuoter
+babelWithArgs bArgs = QuasiQuoter { quoteExp = \s -> babelSettingsWithArgs bArgs >>= \rs -> quoteExp (shakespeare rs) s }
+
 -- | Read in a es2015 file
 babelFile :: FilePath -> Q Exp
-babelFile fp = do
-    rs <- babelSettings
+babelFile = babelFileWithArgs def
+
+babelFileWithArgs :: BabelArgs -> FilePath -> Q Exp
+babelFileWithArgs bArgs fp = do
+    rs <- babelSettingsWithArgs bArgs
     shakespeareFile rs fp
 
--- | Read in a es2015 file at develop
+-- | Read in a es2015 file when develop
 babelFileReload :: FilePath -> Q Exp
-babelFileReload fp = do
-    rs <- babelSettings
+babelFileReload = babelFileReloadWithArgs def
+
+babelFileReloadWithArgs :: BabelArgs -> FilePath -> Q Exp
+babelFileReloadWithArgs bArgs fp = do
+    rs <- babelSettingsWithArgs bArgs
     shakespeareFileReload rs fp
