当使用绝对路径时,gulp表不起作用?

时间:2018-03-06 08:12:09

标签: javascript gulp

我正在设置一个gulp开发环境,但是当我在gulp观察器中使用绝对路径时,它没有工作.gulp观察者是否支持绝对路径?

gulpfile.js

gulp.task('watch', function() {
    gulp.watch(
        path.join(__dirname, 'public/css/**/*.css'), 
        gulp.parallel('dev:css', 'dev:cssImgs')
    );
});

1 个答案:

答案 0 :(得分:0)

我发现了相同的错误,很抱歉在2019年取消了此问题。但此问题尚未解决。

似乎watch进程仅接受以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/"