如何在本地安装npm包
我已经下载了下面的demo和ng2-archwizard
我想进行更改,以便对本地ng2-archwizard的源代码进行更改,并在本地安装此演示项目的包。
我尝试的第一件事是通过以下步骤npm link
- 在ng2-archwizard里面,我改变了代码并运行了
npm link
- 在演示项目中,我安装了ng2-archwizard,使用
npm link \path\to\ng2-archwizard
或者npm link ng2-archwizard
- 当我运行
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叉。
你快到了 你需要做的是以下几点:
- 用
npm i
在本地构buildng2-archwizard
,然后用npm run build
- 在你的自定义工程库里运行
npm i --save path/to/ng2-archwizard
(ng2-archwizard-demo
) - 删除你的
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
用于保存应用程序运行所需的软件包。