webpack node 路径分隔符windows mac 兼容问题

情境:项目在mac 端启动没问题,但是在windows 端不能正常运行。
问题1:经排查一是路径拼接未兼容windows系统
问题2:引用的包chokidar,监听文件变化是,要求路径是/ 左斜杠
问题1解决:

比如,你想通过自定义拼接的方式生成一个路径:

let rootPath = process.cwd();
const watchPath = `${rootPath}/src/views/**/(${filesType})`;
console.log(watchPath)

在 OSX 和 Linux 平台上运行的话毫无压力,但是 Windows 平台的路径分隔符是 \,所以你必死无疑
其实,Node.js 自带的 path 模块已经给出了现成的工具用于处理跨平台的路径操作。比如,我们可以使用 path.normalize 函数:

let rootPath = process.cwd();
const watchPath = path.normalize(`${rootPath}/src/views/**/(${filesType})`);
console.log(watchPath)

此函数能够帮你生成正确的最终路径,而且跨平台。

问题2解决:

chokidar.watch 方法即使是windows系统里面,要求路径也是左斜杠。所以需要在chokidar监听之前,将windows系统下的路径的右斜杠\改为左斜杠/

    let filesType = webpackConfig.vmRoot ? '*.mock.js' : '*.vm|*.mock.js';
    let watchPath = path.normalize(`${rootPath}/src/views/**/(${filesType})`);
    watchPath = watchPath.replace(/\\/g, '/');
    const watcher = chokidar.watch(watchPath, {
    //   ignored: /(^|[\/\\])\../
    });

另外需要注意,chokidar.on 方法监听到的变化的路径在windows 是右斜杠,mac 下是左斜杠。
也就是说只有watch 方法比较特殊,必须要求是左斜杠/。

参考:

  • http://www.ghostchina.com/writing-cross-platform-node-js/
  • https://stackoverflow.com/questions/50390829/the-same-pattern-works-with-chokidar-cli-but-does-not-work-with-chokidar-on-wind?r=SearchResults
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值