J'ai toujours eu des problèmes avec le code CSS, alors maintenant j'utilise toujours du code SaSS. Mais ma question est: comment puis-je utiliser SaSS pour une application ASP.NET MVC?
J'ai essayé d'utiliser une tâche Gulp pour cela. J'ai utilisé ces commandes
npm init
npm install --save gulp
npm install --save gulp-sass
Voici mon package.json
fichier:
{
"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"
}
}
Voici la 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'));
});
Voici ma structure de projet:
Ce code me donne l'erreur suivante si j'utilise la commande ci-dessous:
gulp sass
ReferenceError: le projet n'est pas défini
[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)
Essayez Web Compiler plugin à la place, c'est ce que j'utilise pour compiler SCSS dans MVC.
Une extension Visual Studio qui compile les fichiers LESS, Sass, JSX, ES6 et CoffeeScript.
Vous pouvez utiliser une autre façon plus facile, je pense.
Suivez ces étapes dans votre gestionnaire NuGet.
Ajoutez Microsoft.AspNet.Web.Optimization
Ajoutez BundleTransformer.SassAndScss
Ajoutez LibSassHost.Native.win-x64
Si vous utilisez le système 64 bits.
LibSassHost.Native.win-x86
Dans BundleConfig.cs
Ajoutez ce code dans la méthode 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);
Ajoutez le dossier CSS dans votre projet et ajoutez la feuille de fichier main.scss
À l'intérieur.
À votre avis, vous devez utiliser System.Web.Optimization
.
@using System.Web.Optimization
Et liez votre feuille de style
@Styles.Render("~/Bundle/sass").
Dans Global.asax
, Nous devons ajouter cette ligne dans Application_Start()
.
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
Ou peut-être le trouverez-vous déjà dans votre classe si vous utilisez le modèle MVC.
Et c'est votre main.scss
Son travail.
Voici comment ajouter Sass à votre application Mvc:
Ajoutez le fichier css au bundle.
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap/main.css",
"~/Content/site.css"));
Si vous devez personnaliser le bootstrap, ajoutez un fichier main.scss dans le même dossier que bootstrap.scss. Compilez-le ensuite à l'aide du compilateur 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";
Cet exemple inclut tous les fichiers, mais assurez-vous de n'ajouter que les fichiers dont vous avez besoin pour réduire le CSS.