scripts npm

Sintaxe

  • A propriedade “scripts” em package.json permite que você execute pacotes npm localmente.
  • O script "karma": "karma" faz referência ao script shell karma é o diretório node_modules/.bin. Essa referência precisa ser capturada e um alias precisa ser aplicado a ela para ser usado em outros scripts npm, como "test": "karma start".

Scripts pré-reconhecidos

  • prepublish: Executa antes do pacote ser publicado
  • publish, postpublish: Executa após a publicação do pacote
  • preinstall: Executa antes do pacote ser instalado
  • install, postinstall: Executa após a instalação do pacote
  • preversion, version: Executa antes de aumentar a versão do pacote
  • postversion: Executa após aumentar a versão do pacote
  • pretest, test, posttest: Executado pelo comando npm test
  • prestop, stop, poststop: Executado pelo comando npm stop
  • prestart, start, poststart: Executado pelo comando npm start
  • prerestart, restart, postrestart: Executado pelo comando npm restart. Nota: npm restart executará os scripts de parada e inicialização se nenhum script restart for fornecido.

Pode-se deduzir que a propriedade "scripts" em package.json é uma ferramenta muito poderosa. Ele pode ser usado como uma ferramenta de compilação, semelhante a Grunt e Gulp, mas com mais de 250.000 pacotes disponíveis. Os scripts NPM executam pacotes npm instalados localmente em seu projeto a partir do diretório node_modules/.bin.

Executando scripts npm

Existem dois tipos de scripts npm, e o comando para executar cada um é um pouco diferente. O primeiro tipo de scripts npm são scripts “pré-reconhecidos”. Esses scripts são reconhecidos automaticamente pelo npm e não precisam de um prefixo especial (como você verá para o outro tipo) para executá-los. O outro tipo de scripts são scripts “personalizados”. Esses scripts não são pré-reconhecidos pelo npm e precisam ser prefixados por um comando especial para executá-los. Há uma lista de scripts pré-reconhecidos na seção de comentários.

Para executar scripts pré-reconhecidos:

npm start ou npm test

Para executar scripts personalizados, você precisa usar o comando run:

npm executar karma

O que são scripts npm e como eles são acionados

Os scripts npm são comandos que o npm executará para você quando chamado com os argumentos apropriados. O poder e o sentido disso é NÃO instalar os pacotes npm globalmente poluindo seu ambiente.

A diferença entre scripts pré-reconhecidos e personalizados depende da palavra run entre as tags, scripts custom precisarão do run entre npm e o nome do script

Com base nisso podemos diferenciar e criar diferentes tarefas ou scripts para serem executados com o npm.

Dado o seguinte exemplo no arquivo package.json:

{
  "name": "MyApp",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
    "test": "mocha --recursive ./tests/",
    "test:watch": "npm run test -- -w",
    "start": "nodemon --inspect ./app.js",
    "build": "rm -rf ./dist/ && gulp build"
  }
...
}

Podemos ver diferentes tarefas a serem executadas:

  • npm test Funcionaria bem, pois é um script pré-reconhecido

  • npm run test Funcionaria bem, pois é uma maneira válida de executar um script npm

  • npm run test:watch também funcionaria, e está chamando npm run test dentro de si

  • npm run build Antes de executar o gulp build excluiria a pasta dist que está no diretório (assumindo que você esteja no Linux ou o comando rm seja reconhecido)

Executando karma localmente

snippet package.json

{
    "scripts":
        "test": "karma start",
        "karma": "karma"
    }
}