我一直在寻找是否有办法通过 windows azure 网站支持 sass?如果这可能的话,有人可以指点我一些文档,或者现在让我看看。我特别希望支持基于 sass(scss) 的 Zurb Foundation 响​​应式框架。

我已经通过使用带有覆盖 css 文件的编译的 css 文件来做到这一点。如果可能,我想使用 sass 的语义样式。

谢谢

最佳答案

是的。但是由于 Sass/SCSS 有一些障碍。

默认情况下,Foundation 使用 Compass 进行 SCSS 编译。但是,Sass 和 Compass 都是用 Ruby 编写的,Azure 网站不支持。 (Azure 网站目前支持 .NET, Node.js, PHP, and Python 。)从命令行运行 compass 会将您的 SCSS 编译为浏览器所需的 CSS 并在您的 HTML 中引用;这个 CSS(实际上是整个 Stylesheet 目录)没有提交到 Git 中。

如果要手动将应用程序部署到 Azure 网站,则只需事先运行 Compass,然后推送文件,包括生成的 stylesheet/ 目录。但是,我假设您想运行 Git 部署。

由于 Azure 网站不支持 Ruby,这意味着我们需要有一个完全不使用 Ruby 的选项。幸运的是,Foundation 已经使用 LibSass 库支持这一点。创建新的 Foundation 项目时,请使用 --libsass 标志。

foundation new PROJECT_NAME --libsass

它不是运行 compass watch 来监视和编译您的 SCSS 文件,而是使用 Node.js 和 GruntJS。从命令行执行 grunt 以监视和编译您的 SCSS。 (Watch 和 Build 是 Foundation 的 Grunt 设置的默认任务,因此您无需指定任务名称。)

从那里,你可以使用 Azure CLI 和 Kudu 来配置你的 Azure Git 部署以执行 Grunt 来编译你的 SCSS 作为你部署的一部分。

安装 Azure CLI
npm install -g azure-cli

然后从 Node.js 部署开始(它为 Grunt 提供支持)。
azure site deploymentscript --node

您需要修改 Azure CLI 生成的部署脚本 (deploy.sh),以便它在部署时执行 Grunt。在 deploy.sh 中,有一个 # Deployment 部分。将整个部分替换为以下内容:
# Deployment
# ----------

echo Handling node.js grunt deployment.

# 1. Select node version
selectNodeVersion

# 2. KuduSync to wwwroot
"$KUDU_SYNC_CMD" -v 500 -f "$DEPLOYMENT_SOURCE" -t "$DEPLOYMENT_TARGET" -n "$NEXT_MANIFEST_PATH" -p "$PREVIOUS_MANIFEST_PATH" -i ".git;.deployment;deploy.sh;README.md;"
exitWithMessageOnError "Kudu Sync to Target failed"

# 3. Install npm packages
if [ -e "$DEPLOYMENT_TARGET/package.json" ]; then
  eval $NPM_CMD install
  exitWithMessageOnError "npm failed"
fi

# 4. Install bower packages
if [ -e "$DEPLOYMENT_TARGET/bower.json" ]; then
  eval $NPM_CMD install bower
  exitWithMessageOnError "installing bower failed"
  ./node_modules/.bin/bower install
  exitWithMessageOnError "bower failed"
fi

# 5. Run grunt
if [ -e "$DEPLOYMENT_TARGET/Gruntfile.js" ]; then
  eval $NPM_CMD install grunt-cli
  exitWithMessageOnError "installing grunt failed"
  ./node_modules/.bin/grunt --no-color build
  exitWithMessageOnError "grunt failed"
fi

这将 (1) 安装所有你需要的 npm 包(比如 node-libsass ),安装你需要的所有 bower 包(比如 foundation ),然后运行 ​​grunt build 来编译你的 SCSS。

一个警告

Azure 网站也不支持编译 Node.js 包。它将运行包,但不会编译它们,因此它们需要预编译,然后提交到 Git。这意味着需要将 ./node_modules/node-sass/** 提交到 Git。另外:由于模块在 OSX 和 Windows 上的编译方式不同,这意味着您需要从 Windows 机器提交 node-sass,以便 Windows 编译版本的模块在 Git 中。

不幸的是,如果您尝试从 OSX 开发机器运行这个项目,这将导致问题。

LESS 下不存在的所有问题。由于 LESS 起源于 JavaScript 社区而不是 Ruby 社区,因此其主要解释器使用 JavaScript 并由 Node.js(以及 Azure 网站)原生支持。这些 JavaScript 解释器也不需要编译,所以它们不需要提交它们的 node_modules。但是由于 Foundation 使用 Sass,这些是您必须跳过的障碍。

并不是说 LESS 没有自己的问题,只是不同的问题,而不是这些。

关于node.js - Azure 网站和 Sass,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20337498/

10-12 20:05
查看更多