当前位置:首页 > Web开发 > 正文

myscript这个脚本命令

2024-03-31 Web开发

1、什么是npm脚本

  在创建node.js项目如一个vue项目,或一个react项目时,项目城市生成一个描述文件package.json 。

好比npm允许在package.json文件里面,使用scripts字段界说脚本命令。

{ //... "scripts": { "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", "start": "npm run dev", "e2e": "node test/e2e/runner.js", "test": "npm run e2e", "lint": "eslint --ext .js,.vue src test/e2e/specs", "build": "node build/build.js" }, }

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

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

$ npm run build

  等同于执行:

$ node build/build.js

  同理,上面的那段scripts中,  npm  run  test  等同于 npm  run  e2e   , 等同于  node test/e2e/runner.js  

  这些界说在package.json里面的脚本,就称为npm脚本。项目的相关脚本,可以集中在一个处所;差别项目的脚本命令,只要成果不异,就可以有同样的对外接口。好比用户不需要知道怎么测试你的项目,只要运行 npm  run  dev 即可

  检察当前项目的所有npm脚本命令,可以使用不带任何参数的  npm  run  命令。

$ npm run

2、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脚本的独一要求就是可以在shell中执行,因此它不必然是Node脚本,任何可执行文件都可以写在里面。npm脚本的退出码,也遵守shell脚本法则。如果退出码不是0,npm 就认为这个脚本执行掉败。

3、通配符

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

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

  上面代码中,* 暗示任意文件名,**暗示任意一层子目录。如果要将通配符传入原始命令,防备被shell转义,要将*号转义。

"test": "tap test/\*.js"

4、传参

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

"lint": "jshint **.js"

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

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

  也可以再package.json里面封装一个命令。

"lint": "jshint **.js", "lint:checkstyle": "npm run lint -- --reporter checkstyle > checkstyle.xml"

5、执行挨次

  如果npm脚本里面需要执行多个任务,那么需要明确它们的执行挨次。如果是并行执行(即同时的平行执行),可以使用 & 标记。

$ npm run script1.js & npm run script2.js

  如果是继发执行(即只有前一个任务告成,才华执行下一个任务),可以使用 && 标记。

$ npm run script1.js && npm run script2.js

6、默认值

  一般来说,npm脚本由用户供给。但是,npm对两个脚本供给了默认值。也就是说,这两个脚本不用界说,就可以直接使用。

"start": "node server.js""install": "node-gyp rebuild"

  上面代码中,npm  run  start  的默认值是 node  server.js, 前提是项目根目录下有server.js这个脚本;npm  run  install 的默认值是node-gyp  rebuild, 前提是项目根目录下有binding.gyp文件。

7、钩子

  npm脚本有pre何post两个钩子。举例来说,build脚本命令的钩子就是prebuild和postbuild。

"prebuild": "echo I run before the build script", "build": "cross-env NODE_ENV=production webpack", "postbuild": "echo I run after the build script"

  用户执行npm  run  build的时候,会自动凭据下面的挨次执行。

npm run prebuild && npm run build && npm run postbuild

  因此,可以在这两个钩子里面,完成一些筹备事情和清理事情。下面是一个例子:

"clean": "rimraf ./dist && mkdir dist", "prebuild": "npm run clean", "build": "cross-env NODE_ENV=production webpack"

  npm默认供给下面的这些钩子:

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32695.html