一. 示例A
1. 在package.json 中声明工作空间名字(packages)
{
"name": "workSpace",
"version": "0.1.1",
"private": true,
"scripts": {
"initWrokspace": "node ./scripts/init-workspace",
},
2. 编写脚本将需要用到的依赖下载到工作空间中
const {exec} = require('child_process');
exec(`mkdir ./packages; cd ./packages; git clone xxx.git; git clone xxx.git`);
3. 在package.json中运行初始化工作空间脚本文件,将依赖下载到本地
npm run initWrokspace
4. yarn 安装
注意:package.json 中的安装的依赖版本要与工作空间中相同,否则不走工作空间,直接使用node_modules的依赖包
二. 示例B
1. package.json
{
"name": "workSpace",
"version": "0.1.1",
"private": true,
"workspaces": [
"packages/*",
"basic-packages/*"
],
"scripts": {
"start": "PLATFORM=workspace PORT=3043 node scripts/start.js",
"build": "rm -Rf ./build; node scripts/build.js",
"init:workspace": "sh ./shell/init-workspace.sh",
"init": "npm run init:workspace;",
"pullWorkspace": "sh ./shell/pull-workspace.sh",
},
2 . npm scripts
npm 脚本:npm允许在package.json文件里面,使用scripts 字段定义脚本命令。
{
// ...
"scripts": {
"build": "node build.js"
}
}
script 字段的每一个属性,对应一段脚本, build命令对应的脚本是 node build.js 使用npm run 可以执行这段脚本。
npm run build 等同于 node build.js
3. 创建shell 文件夹下的 init-workspace.sh
rm -rf ./packages
mkdir ./packages
cd ./packages
git clone https://github.comxxx.git
git clone https://github.comxxx.git
git clone https://github.comxxx.git
rm -rf ./packages
rm 命令从目录中除去指定的File 参数的项,
项目 | 描述 |
-e | 在每一个文件被删除后显示消息。 |
-f | 在除去有写保护的文件前不提示。如果指定的文件不存在,不显示错误消息或返回错误状态。如果 -f 和 -i 标志都被指定,最后指定的标志起作用。 |
-i | 删除每个文件前提示。但一起使用 -i 和 -r 标志时,rm 命令在删除目录前也提示。如果 -i 和 -f 标志都被指定,最后指定的标志起作用。 |
项目 | 描述 |
-r | 当 File 参数为目录时允许循环的删除目录及其内容。本标志等同于 -R 标志。 |
-R | 当 File 参数为目录时允许循环的删除目录及其内容。本标志等同于 -r 标志。 |
mkdir命令用来创建目录
如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。
4. pullWorkspace 更新工作空间中依赖包
cd ./packages
cd ./依赖包名称
git pull origin master
cd ..
cd ./依赖包名称
git pull origin master
cd ..
cd ./m依赖包名称
git pull origin master
cd ..
cd命令
cd 进入用户主目录;
cd ~ 进入用户主目录;
cd - 返回进入此目录之前所在的目录;
cd .. 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思);
cd ../.. 返回上两级目录;
cd !$ 把上个命令的参数作为cd参数使用。
运行
npm run init 初始化
npm run pullWorkspace 更新包