主题
注意事项
本地测试
npm link
- 进入包目录
bash
cd /path/to/your/package- 全局链接包
bash
npm link
# 卸载
npm unlink -g- 在其他项目中进行 link 测试
bash
npm link test-package
# 卸载
npm unlink test-packagenpm pack
- 打包
bash
npm pack- 在其他项目中安装
bash
npm i /path/to/xxx-1.0.0.tgz发布文件控制
在发布 npm 包时,你可以通过以下几种方法来确保密钥文件不被包含在发布包中:
使用
.npmignore文件:在项目根目录下创建一个
.npmignore文件,并在文件中列出你不希望包含在 npm 包中的文件或目录。比如:plaintextsecret-key-file.txt config/secret/.npmignore文件的语法与.gitignore类似。它会告诉 npm 哪些文件或目录在发布时应该被忽略。使用
files字段:在
package.json文件中,可以使用files字段来指定应该包含在 npm 包中的文件和目录。其他未列出的文件将被排除。比如:json{ "name": "your-package-name", "version": "1.0.0", "main": "index.js", "files": ["index.js", "lib/"] }这样,只有
index.js和lib目录会被包含在发布的 npm 包中。使用
npm publish命令时的--ignore-scripts选项:发布包时,可以使用
--ignore-scripts选项来忽略指定的脚本,例如:bashnpm publish --ignore-scripts通过
.gitignore自动生成.npmignore:如果你的项目已经有一个
.gitignore文件,可以通过以下命令自动生成一个.npmignore文件:bashcp .gitignore .npmignore这样,
.gitignore文件中列出的所有文件和目录也会被 npm 忽略。
package.json 配置项
name: 包名。- 必须是唯一的(在 npm 仓库中),若重名,可以使用
@vfanlee/xxx作为包名 - 小写,不能包含空格。
- 可以使用短横线(
-)或下划线(_)。 - 不能包含不安全字符。
- 必须是唯一的(在 npm 仓库中),若重名,可以使用
description: 包的描述。keywords: 包的关键字。version: 版本号。type: 指定包的类型,module表示 esm 包,commonjs表示 cjs 包。main: 指定包的入口文件。module: 指定包的 esm 入口文件。types: 指定包的类型文件。files: 指定包的文件。exports: 指定包的导出文件。json{ "exports": { ".": { "import": "./index.js", "require": "./index.umd.js" } } }import: 指定包的 esm 入口文件。require: 指定包的 cjs 入口文件。
license: 包的许可证。peerDependencies: 指定依赖包的版本。
常见问题
包重名
当心
You do not have permission to publish "xxx"
修改 name 字段,使用 @vfanlee/xxx 作为包名:
json
{
"name": "@vfanlee/xxx"
}私有包
当心
You must sign up for private packages
加上前缀,默认认为是私有包,需要付费,可以将权限设置为公开
bash
npm publish --access public