Jas*_*son 5 gruntjs bower grunt-contrib-uglify
我有一个使用Grunt和Bower的项目.Grunt-uglify将连接/缩小Bower目录中的deploy/scripts.js文件到文件夹.我正在使用Grunt-newer,因此只有deploy/scripts.js在添加或更改新文件时才会更新.一切都很好......除了......
当我使用Bower添加新库时,文件日期反映了文件上传到Bower库(或托管它的任何人)的时间,而不是它在我的计算机上创建的日期.因此,Grunt-newer认为新的Bower库比旧deploy/scripts.js文件更新并且不更新文件.
一个 - 麻烦 - 解决方案是打开新的库.js文件,并重新保存它.它会修改文件日期,因此,grunt-newer将创建deploy/script.js文件.然而,Bower的实用性似乎没有用这种尴尬的解决方案.
您可以使用Bower hooks来操纵文件修改时间。这是一种黑客攻击,但可以实现您想要的目标。
您将需要注册一个postinstall挂钩并将更新的组件列表作为参数传递。调用脚本时,% 将替换为正在安装或卸载的组件的空格分隔列表。
挂钩应在.bowerrc文件中注册:
{
"scripts": {
"postinstall": "hook.sh %"
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您将需要一个脚本来迭代组件并更改文件的修改时间。
例如 shell 脚本:
#!/bin/bash
for var in "$@"
do
find "./bower_components/$var" -exec touch {} \;
done
Run Code Online (Sandbox Code Playgroud)
以下是用于相同目的的 node.js 脚本的另一个示例:
var fs = require('fs');
var path = require('path')
var components = process.argv.slice(2)
components.forEach(function (comp) {
var comp_path = path.join(process.cwd(),"bower_components",comp);
var files = fs.readdirSync(comp_path);
files.forEach(function(file) {
fs.utimesSync(path.join(comp_path, file), new Date(), new Date());
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
328 次 |
| 最近记录: |