从本地目录加载npm包,而不复制不必要的文件/文件夹,如node_modules

时间:2018-01-26 09:03:04

标签: npm npm-install npmignore

让我们想象一下我必须开发一个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 的相关文件?

1 个答案:

答案 0 :(得分:0)

我们今天遇到了同样的问题。我们通过添加到本地程序包的package.json中找出答案

“build”: “yarn run clean && yarn build-components && yarn pack”

然后使用我们添加到package.json

依赖项的本地包的 project
“yourpackage”: “file:../your-tgz.tgz”,

希望有帮助

注意:如果使用纱线,则缓存可能会出现问题。