在 Laravel Elixir 5.2 上调用任务之前检查文件是否存在
Check if file exists before calling a task on Laravel Elixir 5.2
在尝试合并我在网站上使用的所有预编译前端库之前,我需要检查文件是否存在。
到目前为止,这是我的 gulpfile.js:
var elixir = require('laravel-elixir'),
fs = require('fs'),
assetsPath = './resources/assets/',
bowerPath = assetsPath + 'bower/',
cssPath = assetsPath + 'css/';
elixir(function(mix) {
var cssLibraries = [
bowerPath + 'bootstrap/dist/css/bootstrap.min.css',
bowerPath + 'font-awesome/css/font-awesome.min.css',
bowerPath + 'Ionicons/css/ionicons.min.css',
bowerPath + 'AdminLTE/dist/css/AdminLTE.min.css',
bowerPath + 'AdminLTE/dist/css/skins/skin-black-light.css',
bowerPath + 'iCheck/skins/flat/blue.css',
bowerPath + 'morris.js/morris.css',
bowerPath + 'AdminLTE/plugins/jvectormap/jquery-jvectormap-1.2.2.css',
bowerPath + 'bootstrap-datepicker/dist/css/bootstrap-datepicker3.min.css',
];
fs.access(cssPath + '000-processed.css', function(err) {
// if libraries are already combined I don't neet to do it again
if (!err) {
console.log('I will *NOT* combine pre-compiled CSS.');
return;
}
console.log('I will combine pre-compiled CSS.');
mix.combine(cssLibraries, cssPath + '000-processed.css');
});
mix.sass('**', cssPath + '001-sass.css');
});
mix.combine() 函数从未执行过,尽管 mix 是一个有效对象并且执行了 console.log 函数。
谁能告诉我这是否是一个有效的策略,为什么它不起作用?
您可以使用 stat 检查文件是否存在于 Gulp:
fs.stat('file.txt', function(err, stat) {
if(err == null) {
console.log('File exists');
} else {
console.log(err.code);
}
});
我正在使用 statSync,因为 mix.combine() 在回调中不工作。
我知道捕获异常并在之后采取有效操作是不对的,但到目前为止我还没有找到其他解决方案。
elixir(function(mix) {
try {
fs.statSync(tmpPath + '000-compiledsss.css');
} catch (err) {
console.log("File do not exists, I will combine!");
}
}
在尝试合并我在网站上使用的所有预编译前端库之前,我需要检查文件是否存在。
到目前为止,这是我的 gulpfile.js:
var elixir = require('laravel-elixir'),
fs = require('fs'),
assetsPath = './resources/assets/',
bowerPath = assetsPath + 'bower/',
cssPath = assetsPath + 'css/';
elixir(function(mix) {
var cssLibraries = [
bowerPath + 'bootstrap/dist/css/bootstrap.min.css',
bowerPath + 'font-awesome/css/font-awesome.min.css',
bowerPath + 'Ionicons/css/ionicons.min.css',
bowerPath + 'AdminLTE/dist/css/AdminLTE.min.css',
bowerPath + 'AdminLTE/dist/css/skins/skin-black-light.css',
bowerPath + 'iCheck/skins/flat/blue.css',
bowerPath + 'morris.js/morris.css',
bowerPath + 'AdminLTE/plugins/jvectormap/jquery-jvectormap-1.2.2.css',
bowerPath + 'bootstrap-datepicker/dist/css/bootstrap-datepicker3.min.css',
];
fs.access(cssPath + '000-processed.css', function(err) {
// if libraries are already combined I don't neet to do it again
if (!err) {
console.log('I will *NOT* combine pre-compiled CSS.');
return;
}
console.log('I will combine pre-compiled CSS.');
mix.combine(cssLibraries, cssPath + '000-processed.css');
});
mix.sass('**', cssPath + '001-sass.css');
});
mix.combine() 函数从未执行过,尽管 mix 是一个有效对象并且执行了 console.log 函数。
谁能告诉我这是否是一个有效的策略,为什么它不起作用?
您可以使用 stat 检查文件是否存在于 Gulp:
fs.stat('file.txt', function(err, stat) {
if(err == null) {
console.log('File exists');
} else {
console.log(err.code);
}
});
我正在使用 statSync,因为 mix.combine() 在回调中不工作。
我知道捕获异常并在之后采取有效操作是不对的,但到目前为止我还没有找到其他解决方案。
elixir(function(mix) {
try {
fs.statSync(tmpPath + '000-compiledsss.css');
} catch (err) {
console.log("File do not exists, I will combine!");
}
}