我有一个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后在服务器上编译它们?
谢谢!
答案 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