3

我有一个 node.js 项目,当我启动应用程序时,它会将较少的文件编译为 css。我通过像这样修改start脚本来做到这package.json一点:

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

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

我认为自定义部署是答案(我正在使用 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 后在服务器上编译它们?

谢谢!

4

1 回答 1

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
于 2013-06-05T11:44:58.853 回答