7

假设我必须开发一个 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,然后使用命令将其导入my-projectnpm i my-package

由于这种导入,托管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-packagemy-project的开发人员,因此在开发过程中,我想使用如下命令从本地路径导入my-package

npm -i ../my-package

如果我这样做,我看到的结果是存储在my-package目录下的所有文件和文件夹都复制到my-project的node_modules文件夹下,即不考虑.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的相关文件?

4

1 回答 1

4

我们今天遇到了同样的问题。我们通过添加到本地包的package.json来搞清楚

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

然后到使用我们添加到 package.json 依赖项中的本地包的项目

“yourpackage”: “file:../your-tgz.tgz”,

希望能帮助到你

注意:如果您使用的是 yarn,您可能会遇到缓存问题。

于 2019-05-14T05:36:21.540 回答