让我们想象一下我必须开发一个npm包, my-package ,需要由 my-project 导入和使用。
在开发 my-package 时,我需要安装并使用npm中的其他软件包。在 my-package 开发结束时,我将所有相关文件捆绑在 dist 目录中。由于我不想将 node_modules 文件夹中的所有文件作为发布包的一部分,我在 .gitignore (或 .npmignore )排除 node_modules 文件夹。因此 my-package 文件夹的最终结构类似于
my-package
dist
... // all the code of the package to be distributed
node_modules
... // all the node modules
src
... // all source files
package.json
.gitignore
现在我在npm存储库上发布 my-package ,然后使用命令npm i my-package
在 my-project 中导入它。
由于此类导入,托管 my-project 的目录结构类似于
my-project
... // stuff
node_modules
my-package
dist
... // all the code of the package to be distributed
src
... // all source files
package.json
正如所料, my-package 文件夹下没有导入 node_modules 文件夹。
由于我是 my-package 和 my-project 的开发人员,因此在开发过程中我想从 my-package 导入使用看起来像
的命令的本地路径 npm -i ../my-package
如果我继续这样做,我看到的结果是存储在 my-package 目录下的所有文件和文件夹都复制到的 node_modules 文件夹下my-project ,即 .gitignore (或 .npmignore )排除项不予考虑。最终结果是诸如
之类的结构my-project
... // stuff
node_modules
my-package
dist
... // all the code of the package to be distributed
node_modules
... // all stuff imported by my-package
src
... // all source files
package.json
... // any other file under my-package
如果从 npm存储库安装软件包,是否有办法从本地路径安装 my-package 的相关文件?
答案 0 :(得分:0)
我们今天遇到了同样的问题。我们通过添加到本地程序包的package.json中找出答案
“build”: “yarn run clean && yarn build-components && yarn pack”
然后使用我们添加到package.json
依赖项的本地包的 project“yourpackage”: “file:../your-tgz.tgz”,
希望有帮助
注意:如果使用纱线,则缓存可能会出现问题。