Npm Script

时间:2021-04-17
本文章向大家介绍Npm Script,主要包括Npm Script使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

我们在拿到一个项目之后,我们都会找到package.json中的script,甚至在做项目做久之后,我们也会自己写一些脚本来给开发提效。

但是如何传递一个参数给脚本?如何执行某个脚本文件呢?

介绍

NPM脚本是package.json中定义的一组内置脚本和自定义脚本,他们的目标就是提供一种简单的方法来执行重复的任务。

如:

    ·启动项目

    ·打包项目

    ·执行单元测试,生成测试报告之类

    ···

如何定义一个脚本?

  

"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1"
}

  值得注意:NPM中所有依赖的node_modules bin都可以在脚本中直接访问,就像在路径中被引用的都一样,也就是默认会加"./node_modules/.bin",比如:

{
    "scripts": {
        "lint": "./node_modules/.bin/eslinteslint .",  
    }  
}

命令

"npm run test"和"npm test”都可以执行脚本,这是因为,有些脚本是内置可以使用更短的命名来执行的,更容易记住,

例如,下面所有的命令效果都是一样的:

npm run-script test
npm run test
npm test

  

执行多个脚本

我们可能想结合一些脚本并一起运行他们。为此,我们可以使用&&或&

要依次运行多个脚本,使用&&,例如:

npm run lint && npm test

要并行执行多个脚本,可以使用&,例如:

npm run lint & npm test

  注意:这仅适用于Unix环境,在windows中,它将按顺序运行。

因此:在实际项目中可以直接创建一个结合了两个脚本,以此来简化我们的操作。

{
   "script": {
         "start": "node index.js",
         "start1": "node index.js",
         "test": "npm run start & npm run start1"  
    }
}    

pre 和 post

我们可以为任何脚本创建"pre"和"post"脚本,NPM会自动按顺序运行他们。唯一的要求就是脚本的名称(后跟"pre"或"pos”前缀)与主脚本匹配。

{
    "prehello": "echo \" prescript \"",
    "hello": "echo \"Hello World\"",
    "posthello": "echo \" postscript \"" 
}

  如果我们执行npm run hello,npm会按顺序执行脚本"prehello","hello","posthello",输出如下:

> example@0.1.0 prehello E:\资源\example
> echo " prescript "

" prescript "

> example@0.1.0 hello E:\资源\example
> echo "Hello World"

"Hello World"

> example@0.1.0 posthello E:\资源\example
> echo " postscript "

" postscript "

错误

当脚本以非0退出码结束时,这意味着在运行脚本的时候发生了错误,并终止执行

{
    "scripts": {
         "test": "exit 1"
    }          
}

在脚本抛出错误的时候,我们会得到其他细节,比如错误号error和代码,具体的错误日志路径都可以在终端获取到。

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! example@0.1.0 demo: `exit 1`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the example@0.1.0 demo script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Lenovo\AppData\Roaming\npm-cache\_logs\2021-04-17T06_34_59_579Z-debug.log

静默模式

如果想减少错误日志并非防止防止脚本抛出错误,可以使用下面的命令来”静默“处理,(比如在ci中,即使测试命令失败,也希望整个管道继续运行,就可以使用这个命令)

npm run <script> --silent
npm run <script> -s

从文件中引用路径

如果脚本很复杂的话,在package.json中维护明显会越来越冗长,也越来越难维护,因此复杂的脚本我们一般会写在文件中,在从文件中执行脚本,如下:

{
    "hello.js": "node scripts/helloworld.js",
    "hello:bash": "bash scripts/helloworld.sh",
    "hello:cmd": "cd scripts && helloworld.cmd"  
}

我们使用node <path.js>来执行js文件,使用bash <path.sh>来执行bash文件

值得注意的是,如果是cmd或bat文件,则需要先cd导航到对应的文件夹目录,不能像sh,js文件一样,直接执行,否则会报错

访问环境变量

在执行NPM脚本时,NPM提供了一组我们可以使用的环境变量,我们可以使用

npm_config_<val> 或者 npm_package_<val>

原文地址:https://www.cnblogs.com/csslog/p/14670800.html