2015-02-09 35 views
8

我可以编译和使用一个命令来运行我的JSX应用:如何在JSX中使用nodemon?

jsx app.jsx | node 

但我也希望我的服务器自动重启每次我修改app.jsx时间。我可以用nodemon这样做,但我不能完全弄清楚如何让nodemon事先通过JSX编译器运行我的脚本。

我有一个nodemon.json文件中设置这样的:

{ 
    "execMap": { 
     "js": "node", 
     "jsx": "jsx {{filename}} | node" 
    }, 
    "ext": "js jsx", 
    "ignore": [ 
     ".hg", 
     "node_modules", 
     ".idea" 
    ], 
    "verbose": true 
} 

但是当我运行nodemon它告诉我:

8 Feb 21:58:48 - [nodemon] starting `jsx app.jsx | node` 
8 Feb 21:58:48 - [nodemon] child pid: 10976 
'\"jsx app.jsx | node\"' is not recognized as an internal or external command, 
operable program or batch file. 

这是奇怪的,因为该命令逐字工作时,我直接粘贴到我的终端。

有没有什么方法可以让nodemon运行我的JSX文件?

+0

这是否对你的工作? https://github.com/remy/nodemon#specifying-extension-watch-list – 2015-02-09 06:34:33

+0

@limelights不。那只告诉nodemon看哪些扩展,而不是如何处理它们。我相信它内置了对coffeescript的支持,但不支持jsx。 – mpen 2015-02-09 07:45:56

回答

4

看来nodemon试图用你提供的名字运行一个程序,而不是执行一个shell。

创建与此内容jsx.sh文件:

#!/bin/sh 
jsx "$1" | node 

然后chmod +x jsx.sh,并把这个在您的nodemon.json:

{ 
    "execMap": { 
     "js": "node", 
     "jsx": "./jsx.sh" 
    }, 
    "ext": "js jsx", 
    "ignore": [ 
     ".hg", 
     "node_modules", 
     ".idea" 
    ], 
    "verbose": true 
} 

*没有测试

+0

我不得不使用'.bat'文件,因为我在Windows上,但想法是一样的。谢谢! – mpen 2015-02-09 19:43:44

1

如果你在Windows上(像我一样),你可以创建一个.bat而不是.sh,比如FakeRainBrigand suggests

@echo off 
jsx %1 | node 

此文件必须在同一目录nodemon.jsonpackage.json - 路径似乎并没有在execMap工作无论出于何种原因。


而且,更容易解决方法就是使用任何JSX在主/服务器脚本,根据需要安装node-jsx然后require您的JSX文件。

2

或者你可以在你的./node_modules/.bin目录只是找到JSX命令并运行它关闭,与其:

{ 
     script: "client.js", 
     options: { 
      execMap: { 
       "js": "node", 
       "jsx": "./node_modules/.bin/jsx \"$1\" | node" 
      }, 
      ext: "js jsx", 
      callback: function (nodemon) { 
       nodemon.on("log", function (event) { 
        console.log(event.colour); 
       }); 
      }, 
      ignore: [ 
       "node_modules/**/*.js", 
       "public/js/**", 
       "lib/api/**", 
      ] 
     } 
    }