Windows使用rsync命令部署代码

本文共有2535个字,关键词:

Windows使用rsync命令部署代码

rsync是Linux和Mac自带的命令,Windows就有点坑爹了。Windows上的解决办法有几种:

  • 安装cygwin
  • 安装cwRsync
  • Win10开启Linux子系统

我尝试了前面两个方案,坑也很多,最终都没成功使用。想着以后可能用到Linux的机会可能会多一点,最后决定使用第三种方案。虽然坑也比较多,但最终算是成功了。

一、开启子系统

这里直接百度经验吧win10系统如何开启子系统。我最后选择的是Ubuntu系统。

二、遇到的问题

  1. 如何在bash环境下切换到代码目录

在这里可能会好奇,安装的子系统存在于Windows的位置是哪?我找了一下是在C:\Users\{userName}\AppData\Local\Packages\...\rootfs\下,可以直接在windows的c盘搜索rootfs,这个就是Linux子系统的根目录了。

回到问题,在bash中输入:df

$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
rootfs          62914556 40265808  22648748  65% /
none            62914556 40265808  22648748  65% /dev
none            62914556 40265808  22648748  65% /run
none            62914556 40265808  22648748  65% /run/lock
none            62914556 40265808  22648748  65% /run/shm
none            62914556 40265808  22648748  65% /run/user
C:              62914556 40265808  22648748  65% /mnt/c
D:              60812284  4126804  56685480   7% /mnt/d

可以看到,在子系统中对应的Windows的C盘就是/mnt/c,这样就可以找到存放代码的目录了。

  1. npm和node报错

具体报错信息:

$ npm -v
: not foundram Files/nodejs/npm: 3: /mnt/c/Program Files/nodejs/npm:
: not foundram Files/nodejs/npm: 5: /mnt/c/Program Files/nodejs/npm:
/mnt/c/Program Files/nodejs/npm: 6: /mnt/c/Program Files/nodejs/npm: Syntax error: word unexpected (expecting "in")

Windows本来已安装了Node,而在bash下想要调用已安装的npm导致报错。原因可能是windows上文件的存储格式与linux的格式不一样,比如windows的文件内容的换行符在linux上会显示r,导致linux解析不了。

解决办法https://github.com/Microsoft/WSL/issues/1512#issuecomment-303517504

思路是:在子系统上再次安装node和npm(相当于在电脑安装了两套node)

这里简单记录一下

## 安装node和npm
$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
$ sudo apt-get install -y nodejs-legacy
$ sudo apt install npm

## 改变~/.profile里的PATH
PATH="$HOME/bin:$HOME/.local/bin:/usr/bin:$PATH"
## 然后执行命令使配置生效:source ~/.profile
## 查看linux的npm安装位置
$ which npm
/usr/bin/npm
## 然后把/usr/bin/添加到系统的环境变量里面
(这一步在windows上的操作(控制面板\系统和安全\系统\高级系统设置\环境变量),并且/usr/bin/要在windows的node路径前面)

微信图片_20180322184048.png

## 查看一下是否ok
$ whereis npm
npm: /usr/bin/npm /mnt/c/Program Files/nodejs/npm /mnt/c/Program Files/nodejs/npm.cmd

## 最后就可以了,在bash环境下就会先执行/usr/bin里面的npm,这样就能让linux找到npm的命令了。
  1. npm run build 报错

由于mac文件名忽略大小写,而Windows是大小写敏感的,可能会导致一些模块在mac上能打包,而Windows上出错了,这时候把文件名改为Windows能识别的大小写就行了。

「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」

fengxianqi

(๑>ڡ<)☆谢谢老板~

使用微信扫描二维码完成支付

版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。
添加新评论
暂无评论