You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help init`for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
package name: (my_lesson)
version: (1.0.0)
description: 练习项目
entry point: (zijue.js)
test command:
git repository:
keywords:
author: zijue
license: (ISC) MIT
About to write to /Users/chisinong/Documents/xx/learn_code/my_lesson/package.json:
{
"name": "my_lesson",
"version": "1.0.0",
"description": "练习项目",
"main": "zijue.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "zijue",
"license": "MIT"
}
Is this OK? (yes) yes
$ npm link
npm WARN my_lesson@1.0.0 No repository field.
up to date in 0.231s
/Users/chisinong/.nvm/versions/node/v12.14.1/bin/zijue -> /Users/chisinong/.nvm/versions/node/v12.14.1/lib/node_modules/my_lesson/bin/www
/Users/chisinong/.nvm/versions/node/v12.14.1/lib/node_modules/my_lesson -> /Users/chisinong/Documents/xx/learn_code/my_lesson
文件模块解析流程
文件目录树如下所示:
. ├── test.js ├── zijue │ └── index.js └── zijue.js
默认会先找文件(如
.js
.json
),找不到就会找对应的文件夹(zijue
文件夹)下的index.js
文件。删除
zijue.js
文件,并在zijue
文件夹中添加a.js
和package.json
(表示包的描述信息)。文件结构如下:. ├── test.js └── zijue ├── a.js ├── index.js └── package.json
默认应该寻找
zijue/index.js
文件,当添加了zijue/package.json
文件中的main
属性之后,优先去查找了a.js
文件。因为main
的优先级更高第三方模块
node_modules
文件夹中module.paths
不停的向上查找,直到找到为止全局第三方模块
我们以
nrm
模块为例演示(nrm 模块可以帮助我们快速且方便的切换 node 的源)nrm
模块nrm
模块的简单使用全局安装的第三方模块为什么可以在命令行中使用?
$PATH
可以看到我使用的 node v12.14.1 的
bin
目录被添加到了系统环境$PATH
中,那么/Users/chisinong/.nvm/versions/node/v12.14.1/bin
下的所有可执行文件均可在命令行中执行bin
目录下的内容可以看到该目录下
nrm
软连接到具体的可执行文件中,相当于在命令行中执行nrm
命令,其实是在执行node_modules/nrm/cli.js
脚本// cli.js 的行首 #!/usr/bin/env node
表明该文件是一个使用 node 环境的可执行脚本
/xx/node_modules/nrm/cli.js
路径下的cli.js
脚本如何发布自己的全局包
npm init
生成package.json
文件package.json
中添加bin
命令npm link
命令暂时将本地代码连接到全局下,用于测试.npmignore
文件剔除不需要发包的文件本地第三方模块
本地第三方模块表示在项目中使用,命令行中使用就用全局第三方模块。
如果像 webpack 这样的模块一般放项目依赖中使用,
npm install webpack -D
--save-dev(-D)
表示该模块只在开发时使用--save(-s 或者不写)
表示该模块开发上线时都需要依赖分为:开发依赖、项目依赖、同版本依赖、捆绑依赖(打包依赖 npm pack)、可选依赖
版本问题:
^
:^2.0.0
2 版本以上,3 版本以下~
:~1.2.0
1.2 版本及以上,但必须低于 1.3 版本package.json 中的 scripts 字段
npm run 命令时会将当前文件夹 node_modules 下的 .bin 目录暂时添加到环境变量 PATH 中,所以可以运行 scripts 下定义的非全局的本地模块
npx 直接运行 node_modules/.bin 文件夹下的命令;若运行的命令没有,则较 npm run 多了一个下载功能,用完及删除
核心模块 不需要安装
The text was updated successfully, but these errors were encountered: