webpack 发布npm包时排除dev依赖项

eoxn13cs  于 2022-11-13  发布在  Webpack
关注(0)|答案(3)|浏览(328)

因此,我正在向npm发布一个包,它基本上只是一个简单的模块,允许用户进行 AJAX 调用,并可以通过几种方式进行配置。
我已经读到在本地测试安装是一个好主意,并尝试了。我已经通过“npm pack”命令打包了软件包,更改到另一个目录,然后尝试通过“npm install path-to-file-that-was-just-created.tgz”安装软件包。到目前为止,一切都正常,我有一个node_modules文件夹,其中包含了我的捆绑代码。
但是,它也安装了我在实际模块的package.json中列出的所有依赖项devDependencies,即使只需要捆绑的文件,并且没有定义其他依赖项。我尝试更新npm-shrinkwrap.json,并检查每个依赖项的dev属性是否都标记为true。
实际上,我们的目标是让用户安装这个模块,然后不安装任何依赖项,因为他们不需要babel或mocha来运行这个模块。我怎么才能从包中排除这些依赖项呢?谢谢!

lskq00tm

lskq00tm1#

https://docs.npmjs.com/cli/install
使用--production标志以避免安装dev依赖项
对于已发布的模块,您不需要执行任何操作,当用户安装您的库时,只会安装非dev依赖项

bmp9r5qi

bmp9r5qi2#

如果您希望已发布的模块没有依赖项,但仍需要一些依赖项来构建它,您也可以在发布之前尝试使用此命令:

npx json -f package.json -I -e "delete this.devDependencies"

此方式仅适用于CI/CD。
更新:原来npm pkg delete devDependencies也是这样做的,没有任何额外的依赖性

siv3szwd

siv3szwd3#

运行安装后,可以通过运行以下命令删除开发依赖项:npm prune --production
这将只保留生产依赖项。npm here中的文档:
如果指定了--production标志,或者将NODE_ENV环境变量设置为production,则此命令将删除devDependencies中指定的软件包

相关问题