- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试运行基于 Yeoman 生成器的 AngularJS 项目,但使用的是 Zurb Foundation 5.5.3
我读到 Foundation 5.4 如果使用 Sass 3.4.2 编译会出现一些问题,但显然 Foundation 5.5 保留了它。当我尝试运行 sass 任务时,构建过程因弃用警告而失败。这是日志:
Running "wiredep:sass" (wiredep) task
Running "concurrent:server" (concurrent) task
Warning: DEPRECATION WARNING on line 78 of C:/Users/lperea/Documents/Proyectos/Kairos/kronos-imasd-frontend/bower_components/foundation/scss/foundation/components/_top-bar.scss: #{} interpolation near operators will be simplified
in a future version of Sass. To preserve the current behavior, use quotes:
unquote("#{lower-bound($medium-range)}") Use --force to continue.
这是我的 Gruntfile:
/**
* Created by lperea on 12/01/2016.
*/
// # Globbing
// for performance reasons we're only matching one level down:
// 'test/spec/{,*/}*.js'
// use this if you want to recursively match all subfolders:
// 'test/spec/**/*.js'
module.exports = function(grunt) {
// Carga automatica de tareas que matcheen con los patrones especificados
require('load-grunt-tasks')(grunt, {pattern: ['grunt-*', '@*/grunt-*']});
// Visualizacion del tiempo consumido por cada tarea
require('time-grunt')(grunt);
// Carga automatica de plugins para ejecutar tareas de Grunt
require('jit-grunt')(grunt, {
useminPrepare: 'grunt-usemin',
ngtemplates: 'grunt-angular-templates',
cdnify: 'grunt-google-cdn'
});
// Paths configurables de la aplicacion
var appConfig = {
app: require('./bower.json').appPath || 'app',
dist: 'dist'
};
// Configuracion inicial de todas las tareas
grunt.initConfig({
// Generador dinamico de constantes y modulos
ngconstant: {
options: {
space: ' ',
name: 'config',
dest: 'app/scripts/config.js',
values: {
debug: true
}
},
dev: {
constants: grunt.file.readJSON('devconfig.json')
},
test: {
constants: grunt.file.readJSON('testconfig.json')
},
prod: {
constants: grunt.file.readJSON('prodconfig.json')
},
build: {}
},
// Ajustes del proyecto
yeoman: appConfig,
// Ajustes del servidor de Grunt
connect: {
options: {
port: 9000,
hostname: 'localhost', // '0.0.0.0' -> para acceso remoto al servidor.
livereload: 35729
},
livereload: {
options: {
open: true,
middleware: function(connect) {
return [
connect.static('.tmp'),
connect().use(
'/bower_components',
connect.static('./bower_components')
),
connect().use(
'/app/styles',
connect.static('./app/styles')
),
connect.static(appConfig.app)
];
}
}
},
test: {
options: {
port: 9001,
middleware: function(connect) {
return [
connect.static('.tmp'),
connect.static('test'),
connect().use(
'/bower_components',
connect.static('./bower_components')
),
connect.static(appConfig.app)
];
}
}
},
dist: {
options: {
open: true,
base: '<%= yeoman.dist %>'
}
}
},
// Verifica cambios en archivos y ejecuta las tareas indicadas
watch: {
bower: {
files: ['bower.json'],
tasks: [
'wiredep' // Inyeccion de componentes bower en la aplicacion
]
},
compass: {
files: ['<%= yeoman.app %>/styles/{,*/}*.{scss,sass}'],
tasks: [
'compass:server', // Compila sass a css
'autoprefixer:server' // Preprocesa el css generado
]
},
styles: {
files: ['<%= yeoman.app %>/styles/{,*/}*.css'],
tasks: ['copy:styles', 'autoprefixer']
},
js: {
files: ['<%= yeoman.app %>/scripts/{,*/}*.js'],
tasks: [
'newer:jscs:all' // Verificacion jscs
],
options: {
livereload: '<%= connect.options.livereload %>'
}
},
jsTest: {
files: ['test/spec/{,*/}*.js'],
tasks: [
'newer:jscs:test', // Verificacion jscs
'karma' // Ejecucion de tests con karma
]
},
gruntfile: {
// No se hace nada si cambia el gruntfile
files: ['Gruntfile.js']
},
livereload: {
options: {
livereload: '<%= connect.options.livereload %>'
},
files: [
'<%= yeoman.app %>/{,*/}*.html',
'.tmp/styles/{,*/}*.css',
'<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}'
]
}
},
// TODO: Reemplazar con grunt-postcss
autoprefixer: {
options: {
browsers: ['last 1 version']
},
server: {
options: {
map: true
},
files: [{
expand: true,
cwd: '.tmp/styles/',
src: '{,*/}*.css',
dest: '.tmp/styles/'
}]
},
dist: {
files: [{
expand: true,
cwd: '.tmp/styles/',
src: '{,*/}*.css',
dest: '.tmp/styles/'
}]
}
},
// Compila Sass a CSS y genera los archivos necesarios si se lo solicita
compass: {
options: {
sassDir: '<%= yeoman.app %>/styles',
cssDir: '.tmp/styles',
//generatedImagesDir: '.tmp/images/generated',
//imagesDir: '<%= yeoman.app %>/images',
javascriptsDir: '<%= yeoman.app %>/scripts',
fontsDir: '<%= yeoman.app %>/styles/fonts',
importPath: './bower_components',
httpImagesPath: '/images',
httpGeneratedImagesPath: '/images/generated',
httpFontsPath: '/styles/fonts',
relativeAssets: false,
assetCacheBuster: false,
raw: 'Sass::Script::Number.precision = 10\n'
},
dist: {
options: {
generatedImagesDir: '<%= yeoman.dist %>/images/generated'
}
},
server: {
options: {
debugInfo: true,
sourcemap: true
}
}
},
// Verifica estilos de codigo en base a jscs
jscs: {
options: {
config: '.jscsrc',
reporter: require('jscs-stylish').path,
esnext: true, // If you use ES6 http://jscs.info/overview.html#esnext
verbose: true,
requireCurlyBraces: ['if']
},
all: {
src: [
'Gruntfile.js',
'<%= yeoman.app %>/scripts/{,*/}*.js'
]
},
test: {
options: {
config: 'test/.jscsrc',
reporter: require('jscs-stylish').path,
esnext: true, // If you use ES6 http://jscs.info/overview.html#esnext
verbose: true,
requireCurlyBraces: ['if']
},
src: ['test/spec/{,*/}*.js']
}
},
// Elimina carpetas temporales y de distribucion
clean: {
dist: {
files: [{
dot: true,
src: [
'.tmp',
'<%= yeoman.dist %>/{,*/}*',
'!<%= yeoman.dist %>/.git{,*/}*'
]
}]
},
server: '.tmp'
},
// Inyeccion automatica de componentes de bower en la aplicacion
// TODO: verificar si esta bien ignorar el path de bower_components
wiredep: {
app: {
src: ['<%= yeoman.app %>/index.html'],
ignorePath: /\.\.\//
},
sass: {
src: ['<%= yeoman.app %>/styles/{,*/}*.{scss,sass}'],
ignorePath: /(\.\.\/){1,2}bower_components\//
}
},
sass: {
dist: {
options: {
style: 'expanded',
loadPath: ['bower_components/foundation/scss']
}
}
},
// Agrega un hash al nombre de los archivos para cacheo del browser
filerev: {
dist: {
src: [
'<%= yeoman.dist %>/scripts/{,*/}*.js',
'<%= yeoman.dist %>/styles/{,*/}*.css',
'<%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}',
'<%= yeoman.dist %>/styles/fonts/*'
]
}
},
// Lee bloques de usemin en los HTML para hacer builds que ejecuten las tareas
// de concat, minify and revision files. Crea configuraciones en memoria para que
// otras tareas puedan utilizarlas
useminPrepare: {
html: '<%= yeoman.app %>/index.html',
options: {
dest: '<%= yeoman.dist %>',
flow: {
html: {
steps: {
js: ['concat', 'uglifyjs'],
css: ['cssmin']
},
post: {}
}
}
}
},
// Reescribe archivos en funcion de la configuracion de filerev y useminPrepare
usemin: {
html: ['<%= yeoman.dist %>/{,*/}*.html'],
css: ['<%= yeoman.dist %>/styles/{,*/}*.css'],
options: {
assetsDirs: ['<%= yeoman.dist %>', '<%= yeoman.dist %>/images']
}
},
// Compresion de imagenes
imagemin: {
dist: {
files: [{
expand: true,
cwd: '<%= yeoman.app %>/images',
src: '{,*/}*.{png,jpg,jpeg,gif}',
dest: '<%= yeoman.dist %>/images'
}]
}
},
// Compresion de archivos svg
svgmin: {
dist: {
files: [{
expand: true,
cwd: '<%= yeoman.app %>/images',
src: '{,*/}*.svg',
dest: '<%= yeoman.dist %>/images'
}]
}
},
// Minificacion html
htmlmin: {
dist: {
options: {
collapseWhitespace: true,
conservativeCollapse: true,
collapseBooleanAttributes: false,
removeCommentsFromCDATA: true,
removeOptionalTags: true
},
files: [{
expand: true,
cwd: '<%= yeoman.dist %>',
src: ['*.html', 'views/{,*/}*.html'],
dest: '<%= yeoman.dist %>'
}]
}
},
// Transforma inyecciones de dependencia a la version larga de Angular (seguro para la minificacion))
ngAnnotate: {
dist: {
files: [{
expand: true,
cwd: '.tmp/concat/scripts',
src: ['*.js', '!oldieshim.js'],
dest: '.tmp/concat/scripts'
}]
}
},
// Reemplaza referencias locales a referencias CDN
cdnify: {
dist: {
html: ['<%= yeoman.dist %>/*.html']
}
},
// Copia archivos a ubicaciones que utilizan otras tareas
// TODO: elminar copia de archivos bootstrap y chequear copiado de componentes de bower.
copy: {
dist: {
files: [{
expand: true,
dot: true,
cwd: '<%= yeoman.app %>', // Directorio base
dest: '<%= yeoman.dist %>', // Destino de archivos a copiar
src: [
'*.{ico,png,txt}',
'.htaccess',
'*.html',
'views/{,*/}*.html',
'bower_components/**/*/*.css',
'images/{,*/}*.{webp}',
'fonts/{,*/}*.*'
]
}, {
expand: true,
cwd: '.tmp/images',
dest: '<%= yeoman.dist %>/images',
src: ['generated/*']
}, {
//For font-awesome
expand: true,
dot: true,
cwd: 'bower_components/font-awesome',
src: ['fonts/*.*'],
dest: '<%= yeoman.dist %>'
}]
},
styles: {
expand: true,
cwd: '<%= yeoman.app %>/styles',
dest: '.tmp/styles/',
src: ['{,*/}*.css', 'bower_components/**/*/*.css']
},
fonts: {
expand: true,
flatten: true,
cwd: '<%= yeoman.app %>',
dest: '<%= yeoman.dist %>/fonts',
src: [
'bower_components/font-awesome/fonts/*'
]
}
},
// Ejecucion de tareas en paralelo
concurrent: {
server: [
'compass:server'
],
test: [
'compass'
],
dist: [
'compass:dist',
'imagemin',
'svgmin'
]
},
// Ajustes de la ejecucion de tests
karma: {
unit: {
configFile: 'test/karma.conf.js',
singleRun: true
}
}
});
grunt.registerTask(
'serve',
'Compila y luego inicia conexion a un servidor web',
function(target) {
if (target === 'dist') {
grunt.task.run([
'ngconstant:dev',
'build',
'connect:dist:keepalive'
]);
} else {
grunt.task.run([
'ngconstant:dev',
'clean:server',
'wiredep',
'concurrent:server',
'autoprefixer',
'connect:livereload',
'watch'
]);
}
});
grunt.registerTask(
'test',
'Compila y ejecuta los tests unitarios',
function(target) {
if (!target) {
target = 'dev';
}
switch (target) {
case 'dev':
grunt.task.run(['ngconstant:dev']);
break;
case 'test':
grunt.task.run(['ngconstant:test']);
break;
case 'prod':
grunt.task.run(['ngconstant:prod']);
break;
}
grunt.task.run([
'clean:server',
'concurrent:test',
'autoprefixer',
'connect:test',
'karma'
]);
});
grunt.registerTask(
'build',
'Compila y prepara codigo minificado en una carpeta aparte',
function(target) {
if (!target) {
target = 'dev';
}
switch (target) {
case 'dev':
grunt.task.run(['ngconstant:dev']);
break;
case 'test':
grunt.task.run(['ngconstant:test']);
break;
case 'prod':
grunt.task.run(['ngconstant:prod']);
break;
}
grunt.task.run([
'clean:dist',
'wiredep',
'useminPrepare',
'concurrent:dist',
'autoprefixer',
'concat',
'ngAnnotate',
'copy:dist',
'cdnify',
'cssmin',
'uglify',
'filerev',
'usemin',
'htmlmin'
]);
});
grunt.registerTask('default', [
'newer:jscs',
'ngconstant:dev',
'test',
'build'
]);
};
我正在使用 compass 1.0.3 和 sass 3.4.2。
最佳答案
看起来 SASS 3.4.2 和 Foundation 5.5.3 的那些版本相处得不好,因为 Foundation 5.5.3 使用的是已弃用的 SASS 功能,要解决此问题,您可以:升级您的 Foundation 版本,或者按照消息中的建议进行,您可以转到 _top-bar.scss 的第 78 行并替换
#{lower-bound($medium-range)}
与:
unquote("#{lower-bound($medium-range)}")
成功完成构建过程。
希望这对您有所帮助!
关于angularjs - 使用 Foundation 5.5 的弃用警告会使 grunt 任务失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34885116/
你好,我正在尝试在 opensuse 中创建一个 Shell 脚本来创建 MySqlUsers,但是当我尝试运行它时,我得到了这个错误: Warning: Could not start progra
我阅读了有关此错误的所有信息,但未能找到任何解决方案。 我有一个看起来像这样的简单页面: $xmlfile = "/var/www/marees.xml"; //Fichier dans lequel
运行 Websphere App 服务器 V8.5 Liberty Profile。我找不到任何可以解决这些警告的帮助。我在 eclipse 。 ************** He
我尝试在 GC AppEngine 上部署应用程序。部署过程中没有错误,但应用程序无法运行(仅显示加载页面)。日志中唯一一个奇怪的原始 OpenBLAS WARNING - could not det
我刚开始学习 RestKit。我正在尝试使用它来使用 Foursquare api 获取附近的 field 。但每次我尝试“objectLoader:(RKObjectLoader *)objectL
我对 Vuejs 比较陌生,每次按键时都会收到以下警告: [Vue warn]: $attrs is readonly. found in ---> at src\component
Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external
我在尝试修改某些表时不断收到此错误。这是我的代码: /** = 1){ //$this->mysqli->autocommit(FALSE); //insert th
当我尝试使用 PHP 的 ftp_put 函数上传文件时,早些时候出现错误: 警告:ftp_put() [function.ftp-put]:无数据连接 现在,我尝试开启被动模式: ftp_pasv(
我一直在努力让这段代码适用于现阶段的年龄。它旨在计算一个范围内的素数,我已经编写了一种方法来打印它们。不幸的是,代码将无法编译,引用警告: “警告:[未检查] 未检查调用 add(E) 作为原始类型
尝试使用带有架构组件和Kotlin的Android Studio 3 Canary 5构建示例会给出此警告。 谁能告诉我原因? 谢谢,Ove 编辑#1: 这是Dan Lew前段时间制作的样本 http
我正在编写一个 Shiny 的应用程序,它运行得非常好,突然我收到两条警告消息。我已经回到以前运行良好的副本,它们现在显示相同的错误消息,所以我真的很困惑。我的代码仍然运行并在我 Shiny 的仪表板
03-25 05:52:15.329 8029-8042/com.mgh.radio W/MediaPlayerNative: info/warning (703, 0) 03-25 05:52:15
我在构建时在我的 gradle 控制台中收到一条警告消息: 警告:[options] 引导类路径未与 -source 1.7 一起设置 1 条警告 我怎样才能解决这个问题? 任何帮助表示赞赏! 最佳答
我有下一个代码: 测试.c #include "a1.h" int main() { int a = 8; foo(a); return a; } a1.h void foo
我的程序中有一个 WORD 变量。 WORD hour; 但是当我比较它的时候 if(hour>=0 && hour=0 && hour=0 的比较,它始终适用于 hour 是 WORD 类型,它是一
安全研究人员警告称,一个最新的严重的Java错误,其本质与目前在全球范围内利用的臭名昭著的 Log4Shell 漏洞相同 。 CVE-2021-42392 尚未在国家漏洞数据库 (NVD) 中
安装SqlServer2005时“版本变更检查 (警告)"问题排查 今天同事在安装SqlServer2005时遇到“版本变更检查 (警告) ”问题导致安装失败,警告提示如下: - 版本
我的 UWP 项目中出现以下警告。我已经标记了解决方案的示例,但我更感兴趣的是为什么在同一平台上创建另一个空项目时不会出现此警告? APPX4001: Build property AppxBundl
我试图修复我的登录脚本,在我的本地主机上它可以工作,但上传到我的在线测试服务器时,注销被破坏,我得到这个错误: Warning: session_destroy() [function.session
我是一名优秀的程序员,十分优秀!