我有一个相当标准的Web应用程序结构,该结构使用npm执行一些node.js测试脚本。另外,npm允许您从子目录执行父程序包脚本。
例如:
|-- my-app
| |-- package.json
| |-- test-script.js
| |-- component-one
| | |-- test-one.spec.js
| |-- component-two
| | |-- test-two.spec.js
> /my-app/component-one: npm run test
# Runs test-script.js as specified in root package's scripts
我希望能够确定运行脚本的原始子文件夹。但是,我还没有找到访问该目录的方法。 process.cwd()
和__dirname
都返回脚本的父级目录位置(在示例中为 my-app )。
我的主要用例是过滤测试以仅在当前子目录中运行测试,因此为每个子目录添加单独的脚本来运行是不现实的。
答案 0 :(得分:0)
中的文档脚本从模块的根目录运行,无论您使用什么脚本 当前的工作目录是当您调用npm run时。如果你想要你的 脚本以根据您所在的子目录使用不同的行为, 您可以使用
function Sweetalert1(){ var name = document.getElementById("name"); var message = document.getElementById("message"); var email = document.getElementById("email"); if ((name != "" && message != "" && email != "") { Swal.fire( 'Köszönjük!', 'Megkaptuk a leveledet és hamarosan válaszolunk!', 'success' } }
环境变量,该变量包含完整的 运行npm运行时所处的路径。
INIT_CWD
将当前工作目录添加到npm run
。您可以在项目的子目录中运行脚本。例如,您要在特定的子目录中运行babel。您应该写:
INIT_CWD
或者您可以写:
"scripts": {
"build": "babel $INIT_CWD/src -d $INIT_CWD/lib"
}
现在,您可以在要编译JavaScript的任何子目录中运行脚本"scripts": {
"build": "cd $INIT_CWD && babel src -d lib"
}
。就您而言,您可能需要将cwd作为参数传递给脚本,并覆盖npm run build
变量。