Grunt-manifest:将源路径放到子目录中
Grunt-manifest: Put to a subdirectory the source paths
我创建了一个离线工作站点,并使用grunt来运行任务。我从本地存储构建静态站点,然后运行这些文件的清单,并将它们复制到服务器。但我必须将它们存储在服务器的子目录中。清单文件中的列表应该以该子目录的名称作为前缀。
我在Gruntfile.js
中使用这个配置:
grunt.initConfig({
manifest: {
generate: {
options: {
basePath: '<%= yeoman.dist %>/',
network: ['*'],
preferOnline: false,
verbose: false,
timestamp: true
},
src: [
'fonts/*',
'images/*',
'scripts/*.js',
'styles/*.css'
],
dest: '<%= yeoman.dist %>/manifest.appcache'
}
}
});
(我使用yeoman来存储目录值,但这并不重要。)
结果是:
CACHE MANIFEST
# Time: Wed Jul 02 2014 18:26:02 GMT+0200 (Romance Daylight Time)
CACHE:
fonts/glyphicons-halflings-regular.eot
images/test.png
images/test2.png
scripts/05dd5665.scripts.js
.
.
.
NETWORK:
*
但是我需要这样:
CACHE MANIFEST
# Time: Wed Jul 02 2014 18:26:02 GMT+0200 (Romance Daylight Time)
CACHE:
subDir/fonts/glyphicons-halflings-regular.eot
subDir/images/test.png
subDir/images/test2.png
subDir/scripts/05dd5665.scripts.js
.
.
.
NETWORK:
*
提示吗?提前感谢!
您可以尝试将basePath
指定为'。’然后你可以把<%= yeoman.dist %>/
附加到src
grunt.initConfig({
manifest: {
generate: {
options: {
basePath: '.',
network: ['*'],
preferOnline: false,
verbose: false,
timestamp: true
},
src: [
'<%= yeoman.dist %>/fonts/*',
'<%= yeoman.dist %>/images/*',
'<%= yeoman.dist %>/scripts/*.js',
'<%= yeoman.dist %>/styles/*.css'
],
dest: '<%= yeoman.dist %>/manifest.appcache'
}
},
replace :{
key: '<%= yeoman.dist %>'
}
});
这将把<%= yeoman.dist %>
的值附加在CACHE
节的每个条目前面。您可以使用搜索和替换工具(即sed
)将<%= yeoman.dist %>
的值替换为所需的子目录。执行此操作的简单任务如下所示
var String = require('string'); // pull this dependency with npm install string --save-dev
grunt.registerMultiTask('replace', 'A task to search and replace', function () {
var bufferJs = grunt.file.read(this.data+'/manifest.appcache');
var mainManifest = String(bufferJs.toString());
mainManifest = mainManifest.replaceAll(this.data, 'mySubdir');
grunt.file.write(this.data+'/manifest.appcache', mainManifest);
});
为了创建清单文件,然后执行搜索和替换操作,您可以创建一个单独的grunt任务,调用两个子任务。下面的任务将先运行manifest
,然后运行replace
。
grunt.registerTask('create_manifest', ['manifest', 'replace:key']);
最后,要运行复合任务,请从命令行
运行以下命令grunt create_manifest
相关文章:
- Javascript:使用绝对路径设置img src
- 如何在d3.js中返回路径的y坐标
- 复制图像路径以单击它
- 从模块内部访问Express装载路径
- JS文件的路径正在消失
- 使用onclick绘制SVG路径
- jpm的默认Firefox路径没有'不起作用
- 如何使用jquery将base64图像路径转换为真实路径
- 可以用'吗/'在相对路径中
- Canvas+svg路径动画,在路径中的特定点暂停一段时间,然后继续
- 将Windows文件路径组织到文件夹中
- Ajax URL路径未替换当前URL
- 如何使用Javascript上传给定路径的文件
- 如何将要单独填充的每个HTML画布路径/形状分开
- 请求准备一个文件并返回路径,允许用户在准备好时下载
- 动态路径用于流星/铁路由器
- 在ng中给出文件路径包括什么
- react路由器使用简单的javascript路由器配置来处理不匹配的路径
- Grunt-manifest:将源路径放到子目录中
- 如何从一个子目录到另一个子目录的路径