私はいつもCSSコードに問題があったので、今は常にSaSSコードを使用しています。しかし、私の質問は次のとおりです。ASP.NETMVCアプリケーションでSaSSを使用するにはどうすればよいですか。
このためにGulpタスクを使用しようとしました。これらのコマンドを使用しました
npm init
npm install --save gulp
npm install --save gulp-sass
これが私のpackage.json
ファイル:
{
"name": "markeonline",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Hein Pauwelyn",
"license": "ISC",
"dependencies": {
"gulp": "^3.9.1",
"gulp-sass": "^3.1.0"
}
}
gulpfile.js
var gulp = require("gulp"),
sass = require("gulp-sass");
// other content removed
gulp.task("sass", function () {
return gulp.src('./**/*.scss')
.pipe(sass())
.pipe(gulp.dest(project.webroot + './MarkeOnline.Website/Content/css'));
});
私のプロジェクト構造は次のとおりです。
次のコマンドを使用すると、このコードで次のエラーが表示されます。
gulp sass
ReferenceError:プロジェクトが定義されていません
[17:50:58] ReferenceError: project is not defined at Gulp.<anonymous> (D:\Documenten\Howest\Semester 4\05 - Project\MarkeOnlinebis\Project Execution\MarkeOnline\gulpfile.js:9:23) at module.exports (D:\Documenten\Howest\Semester 4\05 - Project\MarkeOnlinebis\Project Execution\MarkeOnline\node_modules\orchestrator\lib\runTask.js:34:7) at Gulp.Orchestrator._runTask (D:\Documenten\Howest\Semester 4\05 - Project\MarkeOnlinebis\Project Execution\MarkeOnline\node_modules\orchestrator\index.js:273:3) at Gulp.Orchestrator._runStep (D:\Documenten\Howest\Semester 4\05 - Project\MarkeOnlinebis\Project Execution\MarkeOnline\node_modules\orchestrator\index.js:214:10) at Gulp.Orchestrator.start (D:\Documenten\Howest\Semester 4\05 - Project\MarkeOnlinebis\Project Execution\MarkeOnline\node_modules\orchestrator\index.js:134:8) at C:\Users\hein_\AppData\Roaming\npm\node_modules\gulp\bin\gulp.js:129:20 at _combinedTickCallback (internal/process/next_tick.js:67:7) at process._tickCallback (internal/process/next_tick.js:98:9) at Module.runMain (module.js:592:11) at run (bootstrap_node.js:394:7) events.js:160 throw er; // Unhandled 'error' event ^ Error: node_modules\node-sass\test\fixtures\depth-first\_vars.scss Error: Undefined variable: "$import-counter". on line 1 of node_modules/node-sass/test/fixtures/depth-first/_vars.scss >> $import_counter: $import_counter + 1; -----------------^ at options.error (D:\Documenten\Howest\Semester 4\05 - Project\MarkeOnlinebis\Project Execution\MarkeOnline\node_modules\node-sass\lib\index.js:291:26)
代わりに Web Compiler pluginを試してください。これは、MVCでSCSSをコンパイルするために使用するものです。
LESS、Sass、JSX、ES6、CoffeeScriptファイルをコンパイルするVisual Studio拡張機能。
別の方法を簡単に使用できると思います。
NuGetマネージャーでこの手順を実行します。
_Microsoft.AspNet.Web.Optimization
_を追加
_BundleTransformer.SassAndScss
_を追加
システム64ビットを使用する場合は、_LibSassHost.Native.win-x64
_を追加します。
_LibSassHost.Native.win-x86
_
_BundleConfig.cs
_で、このコードをRegisterBundles
メソッドに追加します。
_var nullBulider = new NullBuilder();
var nullOrderer = new NullOrderer();
BundleResolver.Current = new CustomBundleResolver();
var commonStyleBundle = new CustomStyleBundle("~/Bundle/sass");
commonStyleBundle.Include("~/css/main.scss");
commonStyleBundle.Orderer = nullOrderer;
bundles.Add(commonStyleBundle);
_
プロジェクトにCSSフォルダーを追加し、その中に_main.scss
_ファイルシートを追加します。
ビューでは、_System.Web.Optimization
_を使用する必要があります。
_@using System.Web.Optimization
_
スタイルシートをリンクします
_@Styles.Render("~/Bundle/sass").
_
_Global.asax
_では、Application_Start()
にこの行を追加する必要があります。
_RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
_
または、MVCテンプレートを使用している場合は、クラスで既にそれを見つけることができます。
そして、それがあなたの_main.scss
_その仕事です。
これは、MassアプリにSassを追加する方法です。
Cssファイルをバンドルに追加します。
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap/main.css",
"~/Content/site.css"));
ブートストラップをカスタマイズする必要がある場合は、bootstrap.scssと同じフォルダーにmain.scssファイルを追加します。次に、Webコンパイラを使用してコンパイルします。
main.scss:
/* import the necessary Bootstrap files */
@import "_functions.scss";
@import "_variables.scss";
/* make changes to the !default Bootstrap variables */
$body-color: green;
/* finally, import Bootstrap to set the changes! */
@import "bootstrap.scss";
この例にはすべてのファイルが含まれていますが、cssを小さくするために必要なファイルのみを追加してください。