有人知道删除未使用资产的繁重任务、脚本或应用程序吗?
我正在从事一个经过多轮修改的项目,我正在寻找删除未使用的资产。
任何事情都会有所帮助!
最好的祝愿
有人知道删除未使用资产的繁重任务、脚本或应用程序吗?
我正在从事一个经过多轮修改的项目,我正在寻找删除未使用的资产。
任何事情都会有所帮助!
最好的祝愿
通过 npm 和官方 grunt 网站进行搜索并没有发现任何问题。我假设未使用的资产是指未在任何 HTML 文件中链接的文件?例如,如果你有image.jpg
并且image2.jpg
只有image2.jpg
在你的 HTML 中被引用,那么image.jpg
它是未使用的?
写你自己的克里斯;我可以为您提供一个起点,但如果您认为它是构建链的有用补充,您可以随时推出自己的产品,以便其他人也受益。这是记录项目中与 Gruntfile 相关的所有文件的起点。
module.exports = function(grunt) {
grunt.registerMultiTask('unusedassets', function() {
grunt.file.expand({
filter: 'isFile'
}, ['**/*']).forEach(function(file) {
grunt.log.writeln(file);
});
}
};
从那里,按您感兴趣的类型(图像?css?js?)过滤文件名,然后检查 HTML 源中的文件名。然后,将未使用资产的路径记录到控制台(提供一个自动删除它们的选项,但默认情况下我不会启用它,因为它可能会引发误报)。
笔记; 你可能想忽略node_modules
.
module.exports = function (grunt) {
var _ = require('underscore'),
assets = [],
links = [],
regex = new RegExp('(?:href|src|url)[\=\(][\'"](?!(?:http|#|\s|"))(.+?(?=jpg|png|mp4|pdf|js)?)[\'"]', 'ig');
grunt.registerTask('cleanse', function () {
getAssetsArray();
});
// get list of all assets
function getAssetsArray () {
grunt.file.expand({
filter: 'isFile',
cwd: 'app'
}, ['assets/**/*']).forEach(function (file) {
assets.push(file);
});
getLinkedAssets(assets);
}
// find links to assets in content
function getLinkedAssets (assets) {
grunt.file.expand({
filter: 'isFile',
cwd: 'app'
}, ['**/*.html', '**/*.js', '**/*.css']).forEach(function (file) {
var content = grunt.file.read('app/'+file);
while ((result = regex.exec(content)) !== null) {
links.push(result[1]);
}
});
removeAssets(assets, links);
}
// remove unused assets
function removeAssets () {
var remove = _.difference(assets, links);
remove.forEach(function (el) {
console.log('Removed: '+el);
grunt.file.delete('app/'+el);
});
}
}
有一个 grunt 插件可以做到这一点。获取它:https ://www.npmjs.com/package/grunt-unused
以下是它的作用的一些描述:
检查项目文件中未使用的文件(jpg、png、css、js 等)并将它们输出到控制台的 Grunt 任务。
它甚至可以配置为删除文件。看看它的配置就知道了。