npm package.json scripts not being called

39,031

Solution 1

From the documentation:

npm supports the "scripts" member of the package.json script, for the following scripts:

  • prepublish: Run BEFORE the package is published. (Also run on local npm install without any arguments.)

  • prepare: Run both BEFORE the package is packed and published, on local npm install without any arguments, and when installing git dependencies (See below). This is run AFTER prepublish, but BEFORE prepublishOnly.

  • prepublishOnly: Run BEFORE the package is prepared and packed, ONLY on npm publish.

  • prepack: run BEFORE a tarball is packed (on npm pack, npm publish, and when installing git dependencies).

  • postpack: Run AFTER the tarball has been generated and moved to its final destination.

  • publish, postpublish: Run AFTER the package is published.

  • preinstall: Run BEFORE the package is installed

  • install, postinstall: Run AFTER the package is installed.

  • preuninstall, uninstall: Run BEFORE the package is uninstalled.

  • postuninstall: Run AFTER the package is uninstalled.

  • preupdate: Run BEFORE the package is updated with the update command.

  • update, postupdate: Run AFTER the package is updated with the update command.

  • pretest, test, posttest: Run by the npm test command.

  • prestop, stop, poststop: Run by the npm stop command.

  • prestart, start, poststart: Run by the npm start command.

  • prerestart, restart, postrestart: Run by the npm restart command. Note: npm restart will run the stop and start scripts if no restart script is provided.

Additionally, arbitrary scripts can be run by doing npm run-script <stage> <pkg>.

You can see the reason why your npm test script works is because npm test is a built-in command. You must use npm run-script if you want to execute a script that is not executed by a built-in npm command.

Solution 2

Custom scripts declared in the package.json can be ran with the npm run <your-script> form in your shell.

Try npm run seed or npm run test

Solution 3

To execute the custom scripts in package.json using below

npm run-script seed

or

npm run-script < custom script >

or you can use

npm run < custom script >

Share:
39,031
Catfish
Author by

Catfish

Old enough to party. Nerdy by nature. Codementor Blog

Updated on June 18, 2020

Comments

  • Catfish
    Catfish almost 4 years

    I have the following scripts section in my projects package.json:

    "scripts": {
        "seed": "node bin/seed",
        "test": "echo \"Error: no test specified\" && exit 1"
      },
    

    If i run $ npm test I get this:

    >npm test
    
    > [email protected] test C:\Users\m089269\WebstormProjects\node-mongo-seeds
    > echo "Error: no test specified" && exit 1
    
    "Error: no test specified"
    npm ERR! Test failed.  See above for more details.
    npm ERR! not ok code 0
    

    If i run $ npm seed, I get this:

    npm seed
    
    Usage: npm <command>
    
    where <command> is one of:
        add-user, adduser, apihelp, author, bin, bugs, c, cache,
        completion, config, ddp, dedupe, deprecate, docs, edit,
        explore, faq, find, find-dupes, get, help, help-search,
        home, i, info, init, install, isntall, issues, la, link,
        list, ll, ln, login, ls, outdated, owner, pack, prefix,
        prune, publish, r, rb, rebuild, remove, repo, restart, rm,
        root, run-script, s, se, search, set, show, shrinkwrap,
        star, stars, start, stop, submodule, tag, test, tst, un,
        uninstall, unlink, unpublish, unstar, up, update, v,
        version, view, whoami
    
    npm <cmd> -h     quick help on <cmd>
    npm -l           display full usage info
    npm faq          commonly asked questions
    npm help <term>  search for help on <term>
    npm help npm     involved overview
    
    Specify configs in the ini-formatted file:
        C:\Users\m089269\.npmrc
    or on the command line via: npm <command> --key value
    Config info can be viewed via: npm help config
    
    [email protected] C:\Program Files\nodejs\node_modules\npm
    

    Why does it recognize my test script but not my seed script?

    EDIT

    When I try npm run-script seed I get this error which is expected because I don't pass in a -d param:

    $ npm run-script seed
    
    > [email protected] seed C:\Users\m089269\WebstormProjects\node-mongo-seeds
    > node bin/seed
    
    Populate mongo from a set of .json files.
     Usage: $ node seed
    
    Options:
      -d  The path to your mongo db  [required]
    
    Missing required arguments: d
    
    npm ERR! [email protected] seed: `node bin/seed`
    npm ERR! Exit status 1
    ...
    

    When I try npm run-script seed -d "localhost/ease" I get this error.

    npm run-script seed -d localhost/ease-dev
    npm info it worked if it ends with ok
    npm info using [email protected]
    npm info using [email protected]
    npm ERR! Error: ENOENT, open 'C:\Users\m089269\WebstormProjects\node-mongo-seeds\node_modules\seed\package.json'
    ...
    

    Why is it looking for a package.json in node_modules\seed? Seed is not even a dependency.

  • Catfish
    Catfish about 10 years
    That's very helpful info. Please see my edit to my question though as something is still not right.
  • Catfish
    Catfish about 10 years
    It seems that npm run-script does not currently support passing in arguments. So for now I've just hard coded the -d value into the scripts section "scripts": {"seed": "node bin/seed -d localhost/ease"...
  • mscdex
    mscdex about 10 years
    Assuming npm passes the local environment to scripts, you could have the node script read in environment variables for setting parameters.
  • Jlappano
    Jlappano about 7 years
    Note an alias of npm run-script is npm run
  • thewaywewere
    thewaywewere about 7 years
    Welcome to SO! Your reply looks like a comment rather than an answer. Once you have sufficient reputation you will be able to comment on any post. Also check this what can I do instead. If you intended to Answer, read this how-to-answer to follow the SO guidelines.
  • jgawrych
    jgawrych over 4 years
    Note that they have made some changes in the latest version. Notably, they removed the update/shrinkwrap script and added a version script