我一直在寻找是否有办法通过 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/