在Windows Azure上编译node.js项目中的较少文件

时间:2013-06-05 00:20:34

标签: node.js azure less

我有一个node.js项目,当我启动应用程序时,它会将更少的文件编译为css。我通过修改start中的package.json脚本来执行此操作:

{
    // omitted for brevity
    start: { lessc public/stylesheets/styles.less > public/stylesheets/styles.css; node app.js; }
}

这在本地很好用,但在我的Windows Azure实例上完全没有。或者因为需要在计算机上全局安装较少的内容才能使其正常工作,或者因为Azure不运行npm start。或两者。无论哪种方式,我都需要另一种解决方案!

我认为custom deployments是答案(我正在使用git远程部署),我尝试修改deploy.cmd以包含

call "lessc public/stylesheets/styles.less > public/stylesheets/styles.css;"

没有快乐。我甚至试过

call "%SITE_ROOT%/node_modules/less/bin/lessc %SITE_ROOT%/public/stylesheets/styles.less > %SITE_ROOT%/public/stylesheets/styles.css;

我是以错误的方式来到这里的?如何将已编译的css文件保留在源代码控制之外,并在部署到Azure后在服务器上编译它们?

谢谢!

1 个答案:

答案 0 :(得分:1)

好吧,我想,我终于有了这个。

出于某种原因,即使物理文件在磁盘上(我可以通过我的FTP客户端看到它们),Azure也不允许我在\node_modules\less\bin文件夹中运行lessc,但它确实让我运行了\node_modules\.bin文件夹中的版本。

最后,我将以下几行添加到我的deploy.cmd文件中,并且它有效!

IF NOT DEFINED LESS_COMPILER (
  SET LESS_COMPILER=%DEPLOYMENT_TARGET%\node_modules\.bin\lessc
)

call %LESS_COMPILER% %DEPLOYMENT_TARGET%\public\stylesheets\styles.less > %DEPLOYMENT_TARGET%\public\stylesheets\styles.css