我正在开发一个私有NPM程序包,我将其提供给使用我们的API的开发人员。由于各种原因(由管理层决定),我们的NPM存储库(Sonatype Nexus)上的软件包具有以下文件夹结构:
+- build
| |- browser.min.js
| \- node.min.js
|- docs
| \ ...
|- package.json
\- README.md
build
目录中的JS文件是根据包的实际代码编译的。
构建包中还包含程序包所依赖的特定依赖项版本(例如WildEmitter
的修改版本)。
为了便于发布,package.json
中包含以下内容:
...
"main": "build/node.min.js",
"browser": "build/browser.min.js",
"files": [
"build/*.js",
"docs/*",
"README.md"
],
...
但是,对于软件包的内部使用,我们希望使用未编译的版本,特别是为了减少上面包含的依赖项所包含的开销。
(除此之外,我知道这不一定是打包东西的最佳方式,但除非我们没有其他选择,否则我们现在无法轻易改变它。)
我认为我可以从我们的私有Git存储库中提取包,这将为我提供包的整个代码。
但是,当NPM从Git加载时,NPM仍会读取files
的{{1}}部分,因此它执行package.json
,然后删除任何文件不存在于git clone
数组中,只留下一个仅包含files
,docs/*
和package.json
的目录。
有没有办法从Git中检出包的整个代码并保存?
答案 0 :(得分:0)
最后,我决定修改我的构建过程以使其更容易。
我没有将scipts只构建到build
目录并从存储库根目录开始打包,而是修改了我的构建脚本以复制README.md
,package.json
和{{ 1}}进入docs/*
目录,然后到build
进入该目录进行cd
。
这样,npm publish
可以说包含目录中的所有文件。