npm(script)脚本

什么是npm脚本?

npm允许在package.json文件里面,使用scripts字段定义脚本命令。

简写指令

        npm start   -> npm run start
        npm stop  -> npm run stop
        npm text  -> npm run test
        npm restart -> npm run stop & npm run start
{
scripts:{
   "build":'node build.js'
 }
}

上面代码是package.json文件的一个片段,里面的scripts字段是一个对象。它的每一个属性,对应一段脚本。比如,build命令对应的脚本是node build.js。

命令行下使用 npm run 命令,就可以执行这段脚本。

$ npm run build
  等同于
$ node build.js

npm脚本的优点

1.可以利用npm提供许多辅助功能。
2.项目的相关脚本,可以集中在一个地方。
3.不同项目的脚本命令,只要功能相同,就可以有同样的对外接口。用户不需要知道怎么测试你的项目,只要运行npm run test即可。

npm的原理

npm 脚本的原理非常简单。每当执行npm run,就会自动新建一个 Shell,在这个 Shell 里面执行指定的脚本命令。因此,只要是 Shell(一般是 Bash)可以运行的命令,就可以写在 npm 脚本里面。

比较特别的是,npm run新建的这个 Shell,会将当前目录的node_modules/.bin子目录加入PATH变量,执行结束后,再将PATH变量恢复原样。

这意味着,当前目录的node_modules/.bin子目录里面的所有脚本,都可以直接用脚本名调用,而不必加上路径。比如,当前项目的依赖里面有 Mocha,只要直接写mocha test就可以了。

例如

"test": "mocha test"

而不用写成下面这样。

"test": "./node_modules/.bin/mocha test"

npm通配符

由于 npm 脚本就是 Shell 脚本,因为可以使用 Shell 通配符。

"lint": "jshint *.js"
"lint": "jshint **/*.js"

上面代码中,*表示任意文件名,**表示任意一层子目录。

npm传参

向 npm 脚本传入参数,要使用--标明。

"lint": "jshint **.js"

向上面的npm run lint命令传入参数,必须写成下面这样。

$ npm run lint --  --reporter checkstyle > checkstyle.xml

原文地址:https://www.cnblogs.com/ruange/p/10908276.html

时间: 2024-10-13 15:29:01

npm(script)脚本的相关文章

[NPM] Create a node script to replace a complex npm script

In this lesson we will look at pulling out complex npm script logic into an external JavaScript file. Instead of writing bash scripts you can leverage your JavaScript abilities to automate your build process. We’ll use some helper node modules such a

NMAP之script脚本扫描总结

nmap --script="脚本" 192.168.*.* auth: 负责处理鉴权证书(绕开鉴权)的脚本 broadcast: 在局域网内探查更多服务开启状况,如dhcp/dns/sqlserver等服务 brute: 提供暴力破解方式,针对常见的应用如http/snmp等 default: 使用-sC或-A选项扫描时候默认的脚本,提供基本脚本扫描能力 discovery: 对网络进行更多的信息,如SMB枚举.SNMP查询等 dos: 用于进行拒绝服务攻击 exploit: 利用已

script脚本中写不写$(document).ready(function() {});的区别

$(document).ready() 里的代码是在页面内容都加载完才执行的,如果把代码直接写到script标签里,当页面加载完这个script标签就会执行里边的代码了,此时如果你标签里执行的代码调用了当前还没加载过来的代码或者dom,那么就会报错,当然如果你把script标签放到页面最后面那么就没问题了,此时和ready效果一样. $(document).ready(function(){})可以简写成$(function(){}); 点击段落后,此段落隐藏: <html> <head

国际化总结—关于script脚本

这个是接着上一篇 国际化总结-关于Struts2 在做国际化的时候,有时候script脚本中也需要有国际化,所以就用到了jquery的一个包:jquery.i18n 关于这个包的详细使用有空在弄,这里只是介绍如何实现js脚本的国际化的一些简单代码 直接上代码了: 首先是加载jquery.i18n的,这个需要随着页面的加载马上就执行,就写在document的onready代码的最前面吧 function loadProperties(){      /*lan = $("#local_lan&qu

在html中添加script脚本的方法和注意事项

在html中添加script脚本有两种方法,直接将javascript代码添加到html中与添加外部js文件,这两种方法都比较常用,大家可以根据自己需要自由选择 在html中添加<script>脚本的方法: 1.可以直接将javascript代码添加到html中 <script type="text/javascript"> //javascritp代码 </script> 当解释器嵌入<script>代码时,html页面的处理也会被暂时

使用lucene query的CharFilter 去掉字符中的script脚本和html标签

1.准备数据,这里我从数据库读取一个带有html标签和script脚本的数据 代码: @Before public void init(){ SQLService sqlService = new SQLService(); sqlService.regist(null); BaseDao bd = new BaseDao(); String sql = "select * from t where title like '% 每天读一遍,舌头更无敌%'"; lists = bd.ge

与bash script脚本自动化交互

如果bash脚本中一些命令需要手工输入进行交互的时候,那么脚本的自动化就没法进行下去.比如:ssh somehost需要输入用户名和密码,脚本运行到这个命令后,便会停止,等待用户输入. 如果在简单情景下,比如只需要用户输入一次,即一次性交互时,可以直接这样: # ... some directives here # Remove the machine, confirming "y" when asked by docker-machine echo 'y' | docker-mach

(五)CodeMirror - 关于htmlmixed中包含script脚本

最近发现个问题,场景如下: 当创建的mode类型为htmlmixed,且内容中包含javascript脚本,且是闭包立即执行: 如果内容是使用JQuery函数.html()插入到DOM中后再创建codeMirror对象: 那么,这时,如果JS执行报错,那么随后创建codeMirror对象也中断了: 解决方法: 可以使用elem.text()方法插入内容,那么有错的JS也不会被执行到,可顺利进行后面的创建 1 var elem = $('#code'); 2 var str = ''<div cl

Shell编程之三 —— shell script 脚本(未完待续)

1.脚本的语法构成: shell script 是利用 shell 的功能所写的一个『程序(program)』,这个程序是使用纯文本文件(文件后缀名最好为sh文件,方便我们管理),将一些 shell 的语法与指令(含外部指令)写在里面, 搭通配符.配正规表示法.管线命令与数据流重定向.条件判断.循环逻辑等功能,以达到我们所想要的处理目的. 构成(常见):shell语法和外部指令   通配符     [a-z]  [A-Z]     ?    *          正规表达式      管线命令