【发布时间】:2021-10-30 14:19:08
【问题描述】:
有没有办法让 npm 不安装包的某些元素?喜欢测试或示例/演示代码?
例如,在我的 test-api 项目中,我正在使用的一个包有一个名为 jmespath 的依赖项:
user@hostname MINGW64 ~/Projects/test-api/node_modules/jmespath (develop)
$ ll
total 109
drwxr-xr-x 1 user group 0 May 15 00:16 ./
drwxr-xr-x 1 user group 0 May 15 00:17 ../
-rw-r--r-- 1 user group 126 Apr 25 2014 .eslintrc
-rw-r--r-- 1 user group 13 Apr 10 2014 .npmignore
-rw-r--r-- 1 user group 71 Jul 22 2015 .travis.yml
drwxr-xr-x 1 user group 0 May 15 00:16 artifacts/
-rw-r--r-- 1 user group 932 Feb 29 2016 BASELINE
-rw-r--r-- 1 user group 443 Jul 22 2015 bower.json
-rwxr-xr-x 1 user group 270 Feb 15 2016 g.sh*
-rw-r--r-- 1 user group 855 Mar 25 2016 Gruntfile.js
-rw-r--r-- 1 user group 3130 Apr 25 2014 index.html
-rw-r--r-- 1 user group 105 Apr 28 2014 james.html
-rw-r--r-- 1 user group 58310 Mar 25 2016 jmespath.js
-rwxr-xr-x 1 user group 535 Feb 13 2016 jp.js*
-rw-r--r-- 1 user group 4645 Feb 29 2016 l.js
-rw-r--r-- 1 user group 559 Jul 22 2015 LICENSE
-rw-r--r-- 1 user group 1802 May 15 00:16 package.json
-rw-r--r-- 1 user group 1229 Mar 25 2016 perf.js
-rw-r--r-- 1 user group 2011 Jul 22 2015 README.md
-rw-r--r-- 1 user group 151 Feb 13 2016 reservedWords.json
drwxr-xr-x 1 user group 0 May 15 00:16 test/
这里的 index.html 是一个演示应用程序,测试目录包含测试。如果我不希望这些在 node_modules 目录中,有没有办法在 npm install 期间排除它们?
【问题讨论】:
-
不,你基本上得到了 git 存储库。当您稍后编译您的项目时,这些文件将不会被包含在内,我猜在这种情况下,只有
jmespath.js会在您的项目中使用。 -
简短的回答是“否”。但是,如果您确定您的项目不需要这些文件才能成功运行,并且您的主要问题是您不希望它们在有人安装您的包后出现。考虑在您的
test-api项目的 package.json 文件中添加postinstall脚本,以使用例如删除文件rimraf。例如:"postinstall": "rimraf node_modules/some-folder/*"。当然,当有人安装你的项目时,这些文件仍然会被安装,但它们会在完成后被删除。 -
感谢 RobC 的详细解释。带有 rifraf 的安装后脚本听起来是个不错的选择,我会研究一下
标签: node.js npm npm-install