- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有“webapp-generator”脚手架的 Yeoman 项目,它包含一个带有嵌套 HTML 文件的静态网站,类似于此结构:
-root/
index.html
-directory/
file1.html
-directory2/
file2.html
-js/
(revved .js files)
-css
(revved .css files)
我正在使用 usemin
和 filerev
更新 .html 文档上的 filerevved 文件路径的任务。它会正确更新 js/css/images 上的所有文件名,并且在根目录上可以正常工作 index.html
.但是,在嵌套的 HTML 文件中,它不会替换对正确嵌套路径的引用。
例如。
js/scripts.js
重命名为 js/827385.scripts.js
在index.html
<scripts src="js/scripts.js"></scripts>
解析为:<scripts src="js/827385.scripts.js"></scripts>
但在目录/file1.html(或任何其他嵌套的 html 文件)
<scripts src="../js/scripts.js"></scripts>
也被转换为:<scripts src="js/827385.scripts.js"></scripts>
忽略 ../
相对路径
有什么方法可以调整 Grunt 任务以了解文件在目录中的相对深度以保持相对指示符 ../
在重命名的路径中?
下面是相关 Grunt 任务的代码片段。
PS:我已经在 Stack Overflow 问题中找到了一些可能的答案:How should I configure grunt-usemin to work with relative path无济于事。
// Renames files for browser caching purposes
rev: {
dist: {
files: {
src: [
'<%= config.dist %>/scripts/{,**/}*.js',
'<%= config.dist %>/styles/{,**/}*.css',
'<%= config.dist %>/images/{,**/}*.*',
'<%= config.dist %>/styles/fonts/{,**/}*.*',
'<%= config.dist %>/*.{ico,png}'
]
}
}
},
// Reads HTML for usemin blocks to enable smart builds that automatically
// concat, minify and revision files. Creates configurations in memory so
// additional tasks can operate on them
// <%= config.dist %>
useminPrepare: {
options: {
dest: 'out',
// root: '<%= config.app %>'
},
html: '<%= config.app %>/index.html'
// root: '<%= config.app %>'
},
// Performs rewrites based on rev and the useminPrepare configuration
usemin: {
options: {
assetsDirs: [
'<%= config.dist %>',
'<%= config.dist %>/images',
'<%= config.dist %>/styles'
]
},
html: ['<%= config.dist %>/**/*.html'],
css: ['<%= config.dist %>/styles/**/*.css']
},
最佳答案
在我的案例中,我发现问题出在 html 文件中的 usemin 配置:
如果您的 index.html 中有这个 usemin 指令:
<!-- build:js styles/jquery.js -->
<script src="bower_components/jquery/dist/jquery.js"></script>
<!-- endbuild -->
在 directory/file1.html 中,您应该尝试在其中使用完整路径:
<!-- build:js /scripts/jquery.js-->
<script src="../bower_components/jquery/dist/jquery.js"></script>
<!-- endbuild-->
这将被转换成类似 <script src="/scripts/jquery.34ad31c3.js"></script>
的形式.
关于gruntjs - Grunt usemin 任务没有正确更新嵌套的相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27868194/
我正在尝试找到一种无需互联网访问即可安装 gruntjs 的方法。有没有办法下载安装程序?堆栈溢出让我很难理解这个问题的格式,我不确定还能写什么。这是一个非常简单的请求。 最佳答案 有点。您有时需要访
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 8年前关闭。 Improve thi
首先我还没有真正理解什么gruntjs确实如此,但我有一些想法。我希望通过了解它的用途和用途,我会明白它的目的。任何人都可以向我解释什么是 gruntjs,为什么使用它,以及它的用途。 Is it b
有没有办法自动将所有 bower 安装的库合并和缩小到 1 个文件中? 首先我尝试了最基本的方法:结合所有 .js来自所有子目录的文件: uglify: { options: {compres
当 grunt.js 文件发生更改时,是否可以重新启动 grunt watch 用例:我现在正在构建我的 grunt 进程并不断更改 grunt.js 文件,我必须重新启动 grunt.js 以查看它
我正在使用带有 grunt-eslint 插件的 grunt。这是一个更大的 grunt 任务的一部分,该任务首先找到更改的文件并对它们执行各种任务。如果没有更改任何 JS 文件(例如,如果我只更改
我正在尝试将 PostCSS 插件 autoprefixer 与 grunt 一起使用。我浏览了许多相关的文章和 Stackoverflow 答案,但我仍然收到“警告:[object Object]
我目前正在使用 usemin 任务来执行 concat 和 uglify 任务。但是,我没有从 concat/uglify 任务中获得任何输出。没有看到任何错误或警告。如何获得结果输出 dist/ap
我已经安装了Node JS。如何检查是否安装了grunt?它是否安装得井井有条,还是驻留在特定的文件夹中? 例如,node -v会告诉我我已安装v0.10.33,但找不到Grunt的任何类似命令。 最
我使用Yeoman进行了角度设置。在我的main.html(加载到index.html上的 View )下,我在样式文件夹中添加了一个引用的css文件。 我用构建注释将其包围起来,以便可以在最小化的同
当我运行grunt服务器时,将进行文件编辑,并通过livereload刷新浏览器。 当我运行grunt测试时,它将运行一次并关闭。 可以通过运行来模拟此行为 yo angular --minsafe
我目前正在尝试将 Grunt 文件转换为 Gulp 文件。我的第一次尝试是使用一个非常简单的文件,它只运行 JSHint 和 Mocha,并具有监视模式。我的第一个结果是……嗯……令人失望。 我遇到了
我正在将yeoman用于项目。 基本上它可以正常工作,但是在构建过程中,我想将我的images文件夹移动到其他地方。 因此,我加载了grunt-contrib-copy任务,这使我可以执行此任务。但不
我以为有办法做到这一点,而我以前偶然发现它。 我已经阅读了这些答案,但它们并不是我在说的: Programmatically pass arguments to grunt task? Grunt c
我已经使用 sudo npm install grunt 安装了 grunt,但现在无法删除它。 我已经尝试过: $ sudo npm uninstall grunt 但它给了我一个警告: npm W
我正在使用与浏览器同步的grunt插件,它正在工作,但是与实时重新加载相比,它非常慢。 保存文件后,浏览器开始刷新页面大约需要3秒钟。我不确定这是否与浏览器同步,本地主机有关,还是浏览器同步的典型行为
我有一个 html 文件,其中包含对 js 文件的引用。我想解析它,提取引用的 js 文件列表,并提供 contrib-concat 或任何其他任务。有没有一种方便的方法可以使用一个 grunt 任务
我收到此错误: Warning: Unable to write file (Error code: EISDIR) 我正在尝试复制目录中的所有文件和子文件夹。 当我省略 ** 时,以下内容有效,但我
我有一个基于 PHP 的项目,无法在 grunt-php 上运行。相反,我使用 grunt-exec运行我的 MAMP 服务器进行开发。 exec: { serverup: { comma
我在我的项目和karma中使用了AngularJS来测试。然后我这样配置 karma : config.set({ basePath: '../', frameworks: ['jas
我是一名优秀的程序员,十分优秀!