如何执行 `cd` 并在 csh/sh 脚本中调用一些 npm 脚本?

How to do `cd` and invoke some npm scripts inside csh/sh script?

我是 linux 和 CSH 脚本的新手,我目前正在使用 reactjs + node + npm + webpack 开发 UI 项目。

就像你现在可能的那样,我需要 运行 webpack 打包以获得编译文件。

我的项目正在 linux 机器上部署。

这是我的项目结构如下图,

我需要在 uibuild.csh 文件中编写一个 csh 脚本,如上所示,

这就是我认为的伪代码,

脚本将从

开始执行

project/web-inf/scripts/uibuild.csh

  1. 需要检查 Node.js 和 Npm 安装与否, 如果安装继续 否则退出并抛出错误
  2. 接下来,我需要将目录更改为 project/uisrc/
  3. 接下来,我需要串行执行以下命令

'npm install' 'npm run build'

  1. 接下来,当 npm 运行 构建成功时,构建文件将位于 project/uisrc/dist/ 文件夹中。 (我需要检查文件是否存在)。
  2. 之后,我需要将文件从 project/uisrc/dist 移动到项目/文件夹。
  3. 然后我需要删除路径 project/uisrc/node_modules
  4. 中生成的 node_modules 文件夹
  5. 无错误退出脚本

截至目前,我已尝试使用此脚本检查是否安装了节点。

 if(`where node` == "") then
      printf "\nNode.js and Npm not installed. Please install and continue\n";
      exit(1);
   endif

但我不知道如何更改目录和 运行 脚本 ??

有人能解决这个问题吗?

如果您需要更多详细信息,我很乐意提供。

if which node > /dev/null ; then
  printf 'Node.js & NPM installed, continue start builing.. \n'
else
  printf '\x1B[31m Node.js & NPM is not installed, exiting now.. \x1B[0m \n'
  exit 0;
fi

printf 'Current working Directory :: '
pwd
cd ../../uisrc/
printf 'Current working Directory :: '
pwd
cd dist/
rm -rf index.html assets fixtures
cd ..
npm install --verbose
npm run build
cd ..
rm -rf index.html assets fixtures
cd uisrc/
mv dist/* ../