我正在设置gulp开发环境,但是当我在gulp watcher中使用绝对路径时,它不起作用。gulp watcher是否支持绝对路径?
gulp.task('watch', function() {
gulp.watch(
path.join(__dirname, 'public/css/**/*.css'),
gulp.parallel('dev:css', 'dev:cssImgs')
);
});
我发现了相同的错误,很抱歉在2019年取消了此问题。但此问题尚未解决。
似乎监视进程仅接受以Unix样式编写的相对路径。它不接受绝对路径,甚至不接受带有反斜杠的相对路径(Windows样式)。
使用节点path
清除路径在Windows上无济于事,因此唯一的解决方案是使用节点path.normalize('..\\your\\relative\\path\\')
,然后将\\
替换为/
。
我编写了一个简单的函数,无论在哪个OS上使用,我都将以Unix方式标准化路径。
/*
This plugin is used to fix path separators for dynamically created links used
for `gulp watch` command.
It converts links like
`../../some//path\with/wrong//\separators/`
to
`../../some/path/with/wrong/separators/`
It also replaces `~` with user home directory path
*/
module.exports = (oldPath) => {
const pathString = oldPath;
const fix = /\\{1,}|\/{1,}/;
const user_home = require('os').homedir();
return pathString.replace(new RegExp(fix, 'gm'), '/').replace(new RegExp(fix, 'gm'), '/').replace('~', user_home)
}
将该代码另存为fixPath.js
,然后以这种方式使用它:
const fixPath = require('./fixPath')
let badPath = '../../some//path\with/wrong//\separators/'
let goodPath = fixPath(badPath) // "../../some/path/with/wrong/separators/"