如何在本地安装npm包

我已经下载了下面的demo和ng2-archwizard

我想进行更改,以便对本地ng2-archwizard的源代码进行更改,并在本地安装此演示项目的包。

我尝试的第一件事是通过以下步骤npm link

  1. 在ng2-archwizard里面,我改变了代码并运行了npm link
  2. 在演示项目中,我安装了ng2-archwizard,使用npm link \path\to\ng2-archwizard或者npm link ng2-archwizard
  3. 当我运行ng serve我得到以下错误

chunk {0} main.bundle.js,main.bundle.js.map(main)984 kB {4} [initial] [rendered]

块{1} polyfills.bundle.js,polyfills.bundle.js.map(polyfills)191 kB {5} [initial] [rendered]

chunk {2} styles.bundle.js,styles.bundle.js.map(styles)175 kB {5} [initial] [rendered]

chunk {3} scripts.bundle.js,scripts.bundle.js.map(scripts)168 kB {5} [initial] [rendered]

chunk {4} vendor.bundle.js,vendor.bundle.js.map(vendor)2.83 MB [initial] [rendered]

块{5} inline.bundle.js,inline.bundle.js.map(内联)0字节[条目] [呈现]

遇到错误时遇到静态parsing符号值。 函数调用不被支持。 考虑使用对导出函数的引用(原始.ts文件中的位置194:50)来replace函数或lambda,parsing/ usr / xxx / ng2-archwizard-demo / node_modules / ng2-archwizard / node_modules / @中的符号NgModule angular / core / core.d.ts,parsing/usr/xxx/ng2-archwizard-dmo/node_modules/ng2-archwizard/dist/archwizard.module.d.ts中的符号ArchwizardModule,parsing/ usr / xxx / NG2-archwizard-DEMO / node_modules / NG2-archwizard /距离/ archwizard.module.d.ts

然后,我尝试npm pack创build一个焦油,并安装在演示项目中的焦油,它作为一个短期的解决scheme。

更新1 1.在ng2-archwizard里面我做了代码修改并运行了npm pack 2.在demo项目中,我使用npm install \path\to\ng2-archwizard.tar或者npm install \path\to\ng2-archwizard.tar --save npm install \path\to\ng2-archwizard.tar npm install \path\to\ng2-archwizard.tar --save (保存了对demo项目的package.json的依赖)3.运行ng serve 4.当我不得不再次对代码做任何更改时,我必须重复上述三个步骤清除caching,卸载焦油等额外步骤

对于一个可持续的构build过程,我怎样才能在本地安装包,并使用npm链接反映在演示项目中我的变化?

更新2

由于我们的产品和团队结构,决定将私人存储库作为跨越不同团队的更可持续的可扩展解决scheme。 Sinopia 没有维护,但发现两个维护和工作Verdaccio – 一个维持的sinopia和cnpm叉。

你快到了 你需要做的是以下几点:

  1. npm i在本地构buildng2-archwizard ,然后用npm run build
  2. 在你的自定义工程库里运行npm i --save path/to/ng2-archwizardng2-archwizard-demo
  3. 删除你的ng2-archwizard文件夹中ng2-archwizard文件夹。 此文件夹负责您在terminal中看到的错误消息

遵循这三个步骤,你应该能够通过ng serve运行ng2-archwizard-demo

我强烈build议使用npm lerna包来解决这个问题。

它被所有的大男孩,babel等使用

它基本上允许你很容易地将未发布的包与lerna bootstrap命令连接起来,并使用lerna publish将它们作为单独的npm模块lerna publish

也做自动版本和混帐标签为你的奖金。

这些文档需要一段时间才能让你头脑发现 – 花了我一个小时左右的时间来玩这个主意 – 但是当你走的时候它真的很棒。 强烈推荐。

从NPM文档:

如果你想依靠你自己的模块使用类似Node.js的require,那么你想在本地安装,这是npm install的默认行为。 另一方面,如果你想使用它作为命令行工具,像grunt CLI,那么你想要在全局安装

所以就像这样简单:

 npm install package-name 

由于它的DEFAULT行为(你可以使用标志-g为全局)。

你可能还想用其中的一个:

  • --save-dev用于保存程序包以用于开发目的。 例如:unit testing,缩小
  • --save用于保存应用程序运行所需的软件包。