npm: 从中启动脚本 package.json 从项目文件夹中的任何位置

我使用该部分
scripts

在文件中。 package.json 存储一些我必须定期执行的命令。


"scripts": {
"test": "./test/phantomjs ./test/js/run_jasmine_test.coffee ./test/index.html",
"rjs": "r.js -o ./js/app.build.js",
"less": "lessc -x ./css/app.less > ./css/app.css"
}


在我的每个团队中
./

在途中开始 - 这就是我可以打电话的原因
npm run-script rjs

仅来自项目的根目录。
有没有办法参考内部项目的根目录 package.json, 这样我可以跑,例如,
npm test

从我的项目的任何地方?
已邀请:

冰洋

赞同来自:

我认为这取决于你如何组织你的项目。

我创建了一个示范项目只是为了演示。 这是我项目目录树的示例:


.
├── dir1
│   └── dir2
├── package.json
├── src
│   └── index.js
└── test
└── test.js


NOTE:

./dir1/dir2

- 这些只是两个空的演示目录。

我的文件。
package.json

如下:


{
"name": "sample",
"version": "1.0.0",
"description": "sample",
"main": "index.js",
"scripts": {
"test": "node test/test.js",
"start": "node src/index.js"
},
"author": "yaniv",
"license": "ISC"
}


专注于场景部分,这些是两条简单的线条,不包括我的位置。

如果我更改目录
/dir1/dir2

和表演
npm test

, 以及我在该物业上写的脚本
test

, 将在不使用的情况下正确执行
./

/哪个定义当前目录.../

结果

- 我相信,如果您重新组织您的项目并删除
./

, 然后在你的情况下它将完成。

八刀丁二

赞同来自:

INIT_CWD

我们可以通过环境变量引用项目的根目录
INIT_CWD

, 哪个 npm 我为我们安装了!

经过
https://docs.npmjs.com/cli/run-script
:

无论在您致电时,脚本从模块的根源运行 npm run. 如果您希望您的脚本使用其他行为,请根据您的是哪个子目录,您可以使用

多变的

环境 INIT_CWD, 其中包含启动时的完整路径 npm run.

例子:


"tas:adminApp:build": "cd src/KidoService/AdminApp && npm run build && cd $INIT_CWD && gulp build_copyAdminApp",


只是因为我喜欢过多思考!

如果我们对我们没有这样的变量,该怎么办?

我们可以执行命令 env variable set 随着任何发布!
export ROOT_DIR=$PDW

!

然后,当我们需要它时 ! 我们可以使用它!

上面的例子将是


"tas:adminApp:build": "export ROOT_DIR=$PDW && cd src/KidoService/AdminApp && npm run build && cd $ROOT_DIR && gulp build_copyAdminApp",


你看到这是一个很好的技术。 ! 我们可以用它来指代我们想要返回的一些目录!

为了 windows 我们用
set VAR=VALUE

莫问

赞同来自:

考虑创建文件 shell, 哪个工作?

例如,创建文件 .sh, 让它执行 /chmod 777 file.sh/

接着 cd 在您项目的根目录中 nodejs, 遵循命令 npm, 接着 cd 回到你刚离开的目录?

将脚本添加到周三将从任何地方进行可执行文件...

或者,刚性编码完整路径的顺序? /因此,而不是使用 ./-put /home/user/username/yourproject/phantomjs/

石油百科

赞同来自:

我找到了最佳选择 - 创建JS脚本而不是脚本 shell. 在我的经历中 npm 处理更容易。 然后,您可以检查运行命令之前的环境。 我们有人 windows, Mac 和 ubuntu, 和环境检查或包裹 fs 促进生活。

要回复问题请先登录注册