Understanding the contents of "package.json"
Bài đăng này đã không được cập nhật trong 8 năm
Why I have to understand
When the npm module was published in March 2017, the corresponding package.json needed to be edited, so I did a research to have a fully understanding about all the properties of the package.json/
There could be some lacking of properties, but i will add them in later on/
name
Name of the Module, this field is required
It is used in module import by import and require () in source. The npm module is assumed to be unique in name and version, so do not duplicate names with other libraries.
{ "name": "react-native-card-media" }
version
Version of the Module, this field is required
The npm module is assumed to be unique in name and version. When upgrading npm, do not forget to update the version number.
{ "version": "0.0.5" }
private
If this property is set to true, you can not publish the module. Be sure not to publish projects that will not be published by mistake.
{ "private" : true }
description
Module's explanation
Since it is displayed in npm search, it helps people find and understand your package.
{ "description": "Card Media component for React Native. Also supports multiple image layout." }
main
Specify the script file that is called first in the module.
For example, we name the module foo, install it by the user, and when we execute require ("foo") which is the exports object of the module specified by main is returned.
You must specify a relative path from the package root.
{ "main": "index.js" }
scripts
You can define an alias command to execute arbitrary shell script.
{
"scripts": {
"test": "eslint *.js ./components/*.js ./example/*/*.js",
"start": "node app.js",
"production": "NODE_ENV=production node app.js"
}
}
The key is a name that can be used as an alias like npm test, npm start, and shell script is specified as one line for the value.
However, when registering non-reserved words such as test and start as alias commands, you must executenpm run production.
When describing a one-line shell script, the bin of the module in dependencies and devDependencies automatically enters PATH.
And you do like this:
{
"devDependencies": {
"eslint": "^3.18.0"
}
}
Not like this:
{
"scripts": {
"test": "node_modules/.bin/eslint *.js"
}
}
but like this
{
"scripts": {
"test": "eslint *.js"
}
}
Scripts seems to have many more functions, so I'd like to write on it in the following posts
repository
Specify where the source code is managed.
{
"repository": {
"type": "git",
"url": "git+ssh://git@github.com/dondoko-susumu/react-native-card-media.git"
}
}
author
author specifies only one person, contributors specify array of people.
It seems common to write with such abbreviations.
{ "author": "Ken Kubota <kkbt2003@gmail> (https://github.com/dondoko-susumu/)" }
license
License information
{"license" : "MIT"}
bugs
URL and things like that which referring to the project problems and bug trackings are reported by email address If it is GitHub so it seems to be similar to the POST issue URL
{
"bugs": {
"url": "https://github.com/dondoko-susumu/react-native-card-media/issues",
"email" : "project@hostname.com"
}
}
homepage
Home page URL of the project
{
"homepage": "https://github.com/dondoko-susumu/react-native-card-media#readme"
}
dependencies
Describe dependent modules and versions.
When execute npm installing in the directory where package.json is installed, the modules described in dependencies and (devDependencies) are installed in the node_module directory.
If any modules depend on installed modules, they are also installed. Modules that depend on dependencies are installed like strings.
Do not write something that automatically runs a test script or a trans-piler (a module for building a release module) in dependencies. Such items are described in devDependencies described later.
--save Option
$ npm install --save co
With the --save option, it is registered in package.json without permission as follows.
{
"dependencies": {
"co": "^4.6.0"
}
}
Version notation
^ (Caret Ranges)
Version specification specified automatically by the --save option (it seems to call ^ (caret))
^1.2.3 := >=1.2.3 <2.0.0
^0.2.3 := >=0.2.3 <0.3.0
^0.0.3 := >=0.0.3 <0.0.4
devDependencies
Define what you need when developing a module to be published to npm.
The one described in devDependencies is not installed if you are executing npm install as an external module of another project yourself.
On the other hand, if you clone the project with Git and install it at npm install it will be installed. This library is necessary only for development, it is useless at run time, so it does not need to be included.
Test scripts, compilers, task runners, etc. Define what you do not need to load as modules.
By the way, when you execute npm install as an end user, both dependencies and devDependencies are installed.
jest
You can write the setting of jest with the top level jest key of package.json.
set preset in settings
For preset, specify the npm module exporting jest-preset.json at the top level.
{
"jest": {
"preset": "react-native"
}
}
references URL:
All rights reserved