将变量传递给coffeescript

将变量传递给coffeescript,coffeescript,Coffeescript,在命令行中,如何将变量传递给coffeescript,以便它可以替换相应的占位符,如下所示: $ echo "module.exports = {version: '$VERSION'}" | coffee -p -s VERSION=0.0.0 预期JS: (function() { module.exports = { version: '0.0.0' }; }).call(this); 谢谢你两件事: 您需要在echo中定义VERSION,而不是在coffeesc

在命令行中,如何将变量传递给coffeescript,以便它可以替换相应的占位符,如下所示:

$ echo "module.exports = {version: '$VERSION'}" | coffee -p -s VERSION=0.0.0
预期JS:

(function() {

  module.exports = {
    version: '0.0.0'
  };

}).call(this);
谢谢你

两件事:

  • 您需要在echo中定义
    VERSION
    ,而不是在coffeescript编译器中;当coffeescript编译器看到它时,它已经被翻译成
    $VERSION
  • echo
    是一个内置的shell,因此标准的
    VERSION=0.0.0echo“$VERSION”
    构造不起作用
因此,您希望创建一个新的子shell,以便版本设置不会传播到主shell中,然后执行echo和coffee,如下所示:

$ (VERSION=0.0.0; echo "module.exports = {version: '$VERSION'}" | coffee -ps)       
(function() {

  module.exports = {
    version: '0.0.0'
  };

}).call(this);
表达式周围的括号阻止设置版本:

$ echo $VERSION                                                              

$

好吧,我的例子可能太简单了。。。你的把戏很管用,但它是一个贝壳而不是咖啡。如果我想编译一个完整的文件夹:
coffee-c-o lib/src/
,但是使用
VERSION=0.0.0
,所以
$VERSION
占位符被替换在
src/
中的某个地方,该怎么办?单凭谢意是不会帮你的。讨论了可以在
咖啡
之前或之后运行的预处理器。