What is the difference between --save and --save-dev?

后端 未结 13 895
旧巷少年郎
旧巷少年郎 2020-11-28 00:02

What is the difference between:

npm install [package_name]

and:

npm install [package_name] --save

and:

13条回答
  •  误落风尘
    2020-11-28 00:32

    The difference between --save and --save-dev may not be immediately noticeable if you have tried them both on your own projects. So here are a few examples...

    Lets say you were building an app that used the moment package to parse and display dates. Your app is a scheduler so it really needs this package to run, as in: cannot run without it. In this case you would use

    npm install moment --save
    

    This would create a new value in your package.json

    "dependencies": {
       ...
       "moment": "^2.17.1"
    }
    

    When you are developing, it really helps to use tools such as test suites and may need jasmine-core and karma. In this case you would use

    npm install jasmine-core --save-dev
    npm install karma --save-dev
    

    This would also create a new value in your package.json

    "devDependencies": {
        ...
        "jasmine-core": "^2.5.2",
        "karma": "^1.4.1",
    }
    

    You do not need the test suite to run the app in its normal state, so it is a --save-dev type dependency, nothing more. You can see how if you do not understand what is really happening, it is a bit hard to imagine.

    Taken directly from NPM docs docs#dependencies

    Dependencies

    Dependencies are specified in a simple object that maps a package name to a version range. The version range is a string which has one or more space-separated descriptors. Dependencies can also be identified with a tarball or git URL.

    Please do not put test harnesses or transpilers in your dependencies object. See devDependencies, below.

    Even in the docs, it asks you to use --save-dev for modules such as test harnesses.

    I hope this helps and is clear.

提交回复
热议问题