NodeJS 节点在主脚本之前运行自定义脚本

aiazj4mn  于 2022-12-03  发布在  Node.js
关注(0)|答案(1)|浏览(586)

我希望每次从实际应用程序项目文件夹运行node index.js时都运行../my_dir/my_script.js
换句话说,我需要my_script.js在每个应用程序(A、B、C... N)中是通用的,并且在index.js之前执行
结构形式:

+my_dir
  -my_script.js
+appA
  +node_modules
  -package.json
  -index.js
+appB
  +node_modules
  -package.json
  -index.js

my_script.js

console.log('my_script.js from parent directory STARTED');

package.json(对于每个appA、appB......等类似)

{
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    //I HAVE TRIED
    "start": "node ../my_dir/my_script.js",
    "postinstall": "npm run-script ../my_dir/my_script.js",
    "preinstall": "npm run --prefix ../my_dir/my_script.js",
    
  }
}

index.js(对于每个appA、appB......等类似);

console.log('index.js STARTED');

如果我在appA node index.js中尝试,我得到index.js STARTED
如果我在appA npm start中尝试,我得到my_script.js from parent directory STARTED
预期:(执行两者):

my_script.js from parent directory STARTED
index.js STARTED

你知道怎么做吗

guykilcj

guykilcj1#

我认为在使用命令行node命令时,不可能自动运行第二个脚本。

node ../my_dir/my_script.js && node index.js

或者将它们捆绑在package.json中

"start": "node ../my_dir/my_script.js && node index.js",

并执行了

npm start

您的postinstallpreinstall不太正确,它们在执行npm install时运行(您可以将postpre关键字放在任何命令https://docs.npmjs.com/cli/v9/using-npm/scripts之前)
所以你也可以

"start": "node index.js",
"prestart": "node  ../my_dir/my_script.js"

并执行了

npm start

再一次

相关问题