将 SASS 用于 Aurelia 的骨架导航项目
Using SASS with Aurelia's Skeleton Navigation project
var gulp = require('gulp');
var sass = require('gulp-sass');
var runSequence = require('run-sequence');
var changed = require('gulp-changed');
var plumber = require('gulp-plumber');
var to5 = require('gulp-babel');
var sourcemaps = require('gulp-sourcemaps');
var paths = require('../paths');
var compilerOptions = require('../babel-options');
var assign = Object.assign || require('object.assign');
// transpiles changed es6 files to SystemJS format
// the plumber() call prevents 'pipe breaking' caused
// by errors from other gulp plugins
// https://www.npmjs.com/package/gulp-plumber
gulp.task('build-system', function () {
return gulp.src(paths.source)
.pipe(plumber())
.pipe(changed(paths.output, {extension: '.js'}))
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(to5(assign({}, compilerOptions, {modules:'system'})))
.pipe(sourcemaps.write({includeContent: false, sourceRoot: paths.sourceMapRelativePath }))
.pipe(gulp.dest(paths.output));
});
gulp.task('build-sass', function() {
gulp.src(paths.sass + '**/*.scss')
.pipe(sourcemaps.init())
.pipe(sass({
style: 'expanded',
includePaths: [
paths.sass,
paths.jspmDir + '/github/Dogfalo/materialize@0.96.0/sass',
],
errLogToConsole: true }))
.pipe(sourcemaps.write(paths.sourceMapRelativePath))
.pipe(gulp.dest(paths.cssOutput))
});
// copies changed css files to the output directory
gulp.task('build-css', function () {
return gulp.src(paths.css)
.pipe(changed(paths.output, {extension: '.css'}))
.pipe(gulp.dest(paths.output));
});
// copies changed html files to the output directory
gulp.task('build-html', function () {
return gulp.src(paths.html)
.pipe(changed(paths.output, {extension: '.html'}))
.pipe(gulp.dest(paths.output));
});
// this task calls the clean task (located
// in ./clean.js), then runs the build-system
// and build-html tasks in parallel
// https://www.npmjs.com/package/gulp-run-sequence
gulp.task('build', function(callback) {
return runSequence(
'clean',
['build-system', 'build-html','build-css','build-sass'],
callback
);
});
gulp.task('default', ['build']);
我有 gulp-sass 工作,但我不确定如何引用 System.config({
"map": { 路径的简写。
我正在尝试使用 materialize css 框架,所以我使用
导入了它
jspm install github:Dogfalo/materialize@0.96.0
效果很好,但我现在担心的是,在我的构建任务中,我必须引用 sass 文件夹的特定路径,包括 includePaths 属性[=14= 中的版本号]
如果我查看 config.js 文件,jspm 在 System.config.map 部分下保存了对 materialize 的引用,看来我是否可以在下面的代码中引用简写 materialize 名称这会解决我的问题
这是我添加到 build.js
的构建-sass 任务
gulp.task('build-sass', function() {
gulp.src(paths.sass + '**/*.scss')
.pipe(sourcemaps.init())
.pipe(sass({
style: 'expanded',
includePaths: [
paths.sass,
paths.jspmDir + '/github/Dogfalo/materialize@0.96.0/sass', //I would like to just reference to shorcut path included in the config.js to materialize
],
errLogToConsole: true }))
.pipe(sourcemaps.write(paths.sourceMapRelativePath))
.pipe(gulp.dest(paths.cssOutput))
});
或者如果您有任何更好的方法来包含 github 包,例如使用 jspm 实现并在代码中引用它,让 jspm 管理包和版本并仅引用 jspm 创建的 shorthand
谢谢,
旦
SASS构建任务
您需要安装 gulp-sass,就像您提到的那样。然后,您需要将以下任务添加到构建文件中。请注意,该任务包括水管工并且也发生了变化。这将在您编辑 sass 时向 watch 发出信号,并且不会因语法错误而中断服务。
// compiles sass to css with sourcemaps
gulp.task('build-css', function() {
return gulp.src(paths.style)
.pipe(plumber())
.pipe(changed(paths.style, {extension: '.css'}))
.pipe(sourcemaps.init())
.pipe(sass())
.pipe(sourcemaps.write())
.pipe(gulp.dest('./styles'));
});
构建任务
您还需要将这个新的 sass 构建任务添加到您的常规构建任务中,以便它包含在构建管道中。
gulp.task('build', function(callback) {
return runSequence(
'clean',
['build-system', 'build-html', 'build-css'],
callback
);
});
在代码中使用 CSS 框架
正如您所提到的,安装 jspm 将使 jspm 为您处理所有繁重的工作。安装后,jspm 将修改配置路径以指向正确的位置。然后,当你需要在代码中引用它时,你可以正常导入它。要安装,您需要将 materialize 添加到 package.json
依赖项中。
"jspm": {
"dependencies": {
"materialize": "github:Dogfalo/materialize@0.96.0",
然后,jspm 会为您设置一个映射,以便您可以使用正常的模块语法。
import 'materialize/js/collapsible';
Materialize 未使用模块语法,因此,目前,您需要 (a) 如上所述导入具体需要的每个部分,以及 (b) 手动导入 jQuery,因为 materialize不声明依赖项。
有关更多信息,请参阅我的完整文章,包括此处的示例:
http://www.foursails.co/blog/building-sass/
var gulp = require('gulp');
var sass = require('gulp-sass');
var runSequence = require('run-sequence');
var changed = require('gulp-changed');
var plumber = require('gulp-plumber');
var to5 = require('gulp-babel');
var sourcemaps = require('gulp-sourcemaps');
var paths = require('../paths');
var compilerOptions = require('../babel-options');
var assign = Object.assign || require('object.assign');
// transpiles changed es6 files to SystemJS format
// the plumber() call prevents 'pipe breaking' caused
// by errors from other gulp plugins
// https://www.npmjs.com/package/gulp-plumber
gulp.task('build-system', function () {
return gulp.src(paths.source)
.pipe(plumber())
.pipe(changed(paths.output, {extension: '.js'}))
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(to5(assign({}, compilerOptions, {modules:'system'})))
.pipe(sourcemaps.write({includeContent: false, sourceRoot: paths.sourceMapRelativePath }))
.pipe(gulp.dest(paths.output));
});
gulp.task('build-sass', function() {
gulp.src(paths.sass + '**/*.scss')
.pipe(sourcemaps.init())
.pipe(sass({
style: 'expanded',
includePaths: [
paths.sass,
paths.jspmDir + '/github/Dogfalo/materialize@0.96.0/sass',
],
errLogToConsole: true }))
.pipe(sourcemaps.write(paths.sourceMapRelativePath))
.pipe(gulp.dest(paths.cssOutput))
});
// copies changed css files to the output directory
gulp.task('build-css', function () {
return gulp.src(paths.css)
.pipe(changed(paths.output, {extension: '.css'}))
.pipe(gulp.dest(paths.output));
});
// copies changed html files to the output directory
gulp.task('build-html', function () {
return gulp.src(paths.html)
.pipe(changed(paths.output, {extension: '.html'}))
.pipe(gulp.dest(paths.output));
});
// this task calls the clean task (located
// in ./clean.js), then runs the build-system
// and build-html tasks in parallel
// https://www.npmjs.com/package/gulp-run-sequence
gulp.task('build', function(callback) {
return runSequence(
'clean',
['build-system', 'build-html','build-css','build-sass'],
callback
);
});
gulp.task('default', ['build']);
我有 gulp-sass 工作,但我不确定如何引用 System.config({ "map": { 路径的简写。
我正在尝试使用 materialize css 框架,所以我使用
导入了它jspm install github:Dogfalo/materialize@0.96.0
效果很好,但我现在担心的是,在我的构建任务中,我必须引用 sass 文件夹的特定路径,包括 includePaths 属性[=14= 中的版本号]
如果我查看 config.js 文件,jspm 在 System.config.map 部分下保存了对 materialize 的引用,看来我是否可以在下面的代码中引用简写 materialize 名称这会解决我的问题
这是我添加到 build.js
的构建-sass 任务gulp.task('build-sass', function() {
gulp.src(paths.sass + '**/*.scss')
.pipe(sourcemaps.init())
.pipe(sass({
style: 'expanded',
includePaths: [
paths.sass,
paths.jspmDir + '/github/Dogfalo/materialize@0.96.0/sass', //I would like to just reference to shorcut path included in the config.js to materialize
],
errLogToConsole: true }))
.pipe(sourcemaps.write(paths.sourceMapRelativePath))
.pipe(gulp.dest(paths.cssOutput))
});
或者如果您有任何更好的方法来包含 github 包,例如使用 jspm 实现并在代码中引用它,让 jspm 管理包和版本并仅引用 jspm 创建的 shorthand
谢谢, 旦
SASS构建任务
您需要安装 gulp-sass,就像您提到的那样。然后,您需要将以下任务添加到构建文件中。请注意,该任务包括水管工并且也发生了变化。这将在您编辑 sass 时向 watch 发出信号,并且不会因语法错误而中断服务。
// compiles sass to css with sourcemaps
gulp.task('build-css', function() {
return gulp.src(paths.style)
.pipe(plumber())
.pipe(changed(paths.style, {extension: '.css'}))
.pipe(sourcemaps.init())
.pipe(sass())
.pipe(sourcemaps.write())
.pipe(gulp.dest('./styles'));
});
构建任务
您还需要将这个新的 sass 构建任务添加到您的常规构建任务中,以便它包含在构建管道中。
gulp.task('build', function(callback) {
return runSequence(
'clean',
['build-system', 'build-html', 'build-css'],
callback
);
});
在代码中使用 CSS 框架
正如您所提到的,安装 jspm 将使 jspm 为您处理所有繁重的工作。安装后,jspm 将修改配置路径以指向正确的位置。然后,当你需要在代码中引用它时,你可以正常导入它。要安装,您需要将 materialize 添加到 package.json
依赖项中。
"jspm": {
"dependencies": {
"materialize": "github:Dogfalo/materialize@0.96.0",
然后,jspm 会为您设置一个映射,以便您可以使用正常的模块语法。
import 'materialize/js/collapsible';
Materialize 未使用模块语法,因此,目前,您需要 (a) 如上所述导入具体需要的每个部分,以及 (b) 手动导入 jQuery,因为 materialize不声明依赖项。
有关更多信息,请参阅我的完整文章,包括此处的示例: http://www.foursails.co/blog/building-sass/