Package.json is used by npm to store metadata for projects published as package.
The package.json 1) files:
Mandatory:
Optional:
Example:
{
"name": "my_package",
"description": "",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "https://github.com/ashleygwilliams/my_package.git"
},
"keywords": [],
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/ashleygwilliams/my_package/issues"
},
"homepage": "https://github.com/ashleygwilliams/my_package"
"dependencies": {
"my_dep": "^1.0.0"
},
"devDependencies" : {
"my_test_framework": "^3.1.0"
}
}
A name may have an AT sign as a prefix to set a namespace known as scope
Example:
@somescope/somepackagename
@myorg/mypackage
The type property 2) defines the type of module that the package contains
For instance, if you choose the module value, you define all .js files in that package as being ES modules.
You still can change the type of module via the extension:
The types property is used in the resolution of the location of declaration files.
main defines the main script
modules defines where to find the ECMAScript-style module 4)
Note that Node uses the type property with the value module.
"module": "src/index.js",
if compiled via typescript
"module": "./dist/index.js",
browser defines the location of modules that are only available inside the browsers.
"browser": {
"module-a": false,
"./server/only.js": "./shims/server-only.js"
}
Since Node.js 16.x, the packageManager property defines the desired package manager 5).
{
"packageManager": "[email protected]"
}
The installation of the package manager should be done with Corepack (since 16.10) which acts as an intermediary between Node and the package manager as it lets you use different package manager versions across multiple projects (ie without having to check-in the package manager binary anymore).
npm i -g corepack
corepack enable
Example of Command line with Corepack
"C:\nodejs\\node.exe" "C:\nodejs\\node_modules\corepack\dist\yarn.js" run dev
The import order of precedence is defined in resolve-mainfields for webpack
module.exports = {
//...
resolve: {
mainFields: ['browser', 'module', 'main']
}
};
The script section of the package.json allows to start command. See What are npm scripts and how to use them ? The script property of Package.json
yarn init
# optionaly
npm init
npm set init.author.email "[email protected]"
npm set init.author.name "ag_dubs"
npm set init.license "MIT"
Your Name <[email protected]> (http://example.com)
To add dependency, use the save and save dev flag of npm install. See Javascript Package.
npm install <package_name> --save
npm install <package_name> --save-dev
How to pass the version to your library
myLib.VERSION = require('../package.json').version;