¿Cómo se ejecuta un archivo js usando scripts npm?

84

No puedo hacer que funcione el npm. Mi archivo package.json tiene

"scripts": { "build": "build.js" }

y tengo un archivo build.js en la misma carpeta que solo console.logs.

Cuando corro

npm run build

Me sale el error

The system cannot execute the specified program.

npm ERR! Windows_NT 6.1.7601
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "build"
npm ERR! node v4.1.1
npm ERR! npm  v3.3.5
npm ERR! code ELIFECYCLE

y si muevo el archivo build.js y cambio mi archivo package.json para tener una subcarpeta

"scripts": { "build": "build/build.js" }

entonces me sale el error

'build' is not recognized as an internal or external command, operable program or batch file.

¿Qué va mal? Estoy copiando la documentación de ejemplo .

Ricardo
fuente

Respuestas:

128
{ "scripts" :
  { "build": "node build.js"}
}

npm run build O npm run-script build


{
  "name": "build",
  "version": "1.0.0",
  "scripts": {
    "start": "node build.js"
  }
}

npm start


NB: faltaba el comando { brackets }y el nodo

la estructura de la carpeta está bien:

+ build
  - package.json
  - build.js
Luca Filosofi
fuente
1
Esto funciona. ¿Puede explicar por qué se necesita 'nodo'? Tiene sentido en retrospectiva, pero no está en los documentos.
Richard
3
Se necesita un nodo porque es necesario para iniciar su script. Puedes poner cualquier comando aquí.
severin.julien
No estaba "perdiendo el nodecomando", la documentación que vinculó tampoco lo tiene.
AndreKR
2

Deberías usar npm run-script buildo npm build <project_folder>. Más información aquí: https://docs.npmjs.com/cli/build .

Shanoor
fuente
Esto no funciona, el mismo error. Los documentos dicen que ejecutar-script es solo un alias para ejecutar.
Richard