【问题标题】:Is there an way to run a command into terminal that linked to package.json?有没有办法在链接到 package.json 的终端中运行命令?
【发布时间】:2021-05-06 21:45:32
【问题描述】:
任务
构建一个程序来分析假设菜单计划日历应用的应用使用数据。在任何一天,用户都可以计划多餐,每餐可能有多道菜。您构建的程序将分析用户对应用的参与度
数据
在 ./data 文件夹中,你会发现一堆 userId.json 格式的文件。它们包含大量用户的应用数据。检查时结构应该是相当明显的。
输出
./dist/run active 2016-09-01 2016-09-08 应该产生一个列表
在指定期间“活动”的逗号分隔的用户 ID
期间,“活跃”意味着他们至少吃了 5 顿饭。
./dist/run superactive 2016-09-01 2016-09-08 应该生成一个列表
逗号分隔的用户 ID 在
指定期间,这意味着他们吃了超过 10 顿饭。
./dist/run bored 2016-09-01 2016-09-08 应该产生一个列表
在指定期间“无聊”的逗号分隔的用户 ID
时期,这意味着它们在前一个时期是“活跃的”,但
在指定时间段内没有达到“活跃”阈值。
注意:我刚刚添加了任务和数据部分,以便更好地了解我被要求执行的任务。我怎样才能在package.json 中添加一些东西(一些脚本),只要在终端上运行以上三个命令(例如./dist/run active 2016-09-01 2016-09-08),它就会为我完成剩下的工作。
【问题讨论】:
标签:
javascript
node.js
npm
package.json
npm-scripts
【解决方案1】:
你可以在 package.json 中定义脚本。
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"static": "some comand"
},
然后您可以输入npm run static。之后,它将在当前目录中运行一些命令。
【解决方案2】:
如果我理解正确,您想在 package.json 中运行一个脚本,该脚本执行 ./dist/run active 2016-09-01 2016-09-08(或其他 2 个脚本中的任何一个)以及其他命令。
此答案假设您运行 bash 环境,例如 Linux、MacOS 或 WSL(适用于 Linux 的 Windows 子系统)
一个想法是将您的执行放在每个流的Shell 脚本中(例如active),然后在package.json 上将每个命令作为单独的命令。像这样的:
文件active.sh
#!/usr/bin/env bash
./dist/run active 2016-09-01 2016-09-08
echo "Put some other logic here as well"
文件package.json
...
{
"scripts": {
"active": "./active.sh"
}
}
...
注意
确保您的.sh 文件具有正确的执行权限
chmod +x ./active.sh
注2
.sh 文件上的#!/usr/bin/env bash 称为Shebang (or hash bang)
最后,您可以执行以下操作:
npm run active
并为您的其他脚本重复该过程。