我希望能够安装本地模块(下面称为myLibModule1/
和myLibModule2/
),这些模块需要访问lib/
目录中的某些dll文件。
我尝试使用package.json
文件上的files
属性来包含lib1.dll
、lib2.dll
和lib3.dll
,以避免通过npm install <path to local module>
命令安装。
但是,看起来npm install <path to local module>
只是将整个目录复制到node_modules
文件夹中,而不排除任何子文件夹。
我甚至尝试将package.json添加到lib/
文件夹中,然后将该文件夹用作模块的依赖项。然而,这不仅将lib中的所有文件复制到我的node_modules
中,还将所有lib子文件夹复制到我的node_modules
中,这会导致冗余数据。
lib/
├── myLibModule1/
│ ├── package.json
│ └── index.js
├── myLibModule2/
│ ├── package.json
│ └── index.js
├── lib1.dll
├── lib2.dll
├── lib3.dll
├── .
├── .
├── .
└── libn.dll
所以在package.json中我尝试了:
"files": [
"../lib1.dll",
"../lib2.dll",
"../lib3.dll"
]
在最好的情况下,我希望开发人员在node_modules
文件夹中有一个模块,最后看起来像这样:
myLibModule1/
├── package.json
├── index.js
├── lib1.dll
├── lib2.dll
└── lib3.dll
1条答案
按热度按时间f87krz0w1#
我还尝试在npmworkspace中发布一些来自父/根包的文件。但是,像
"files": ["../someFile"]
这样的父文件夹引用确实不起作用。解决方案
在父包中定义一个额外的
script
,以将所需文件复制到子工作区。示例(假设每个子/工作区都有一些
dist
子目录,在.gitignore
中忽略了该子目录,并且最终将包含可打包的文件:父
package.json
:儿童
package.json
:最后要做的事:在某个时候调用
copy_files
脚本,例如在构建父级时。注意:
copy_files
中的shell for循环引用带有转义双引号的子目录,以避免在工作区文件夹中包含空格的情况下(尽管不太可能)出现错误。