在cordova/phonegap中使用npm软件包

在cordova/phonegap中使用npm软件包,cordova,npm,Cordova,Npm,我正在尝试使用NPM向我的Cordova项目添加一个包,但要么我做了一些非常错误的事情,要么我没有得到它应该工作的方式……我使用的是Cordova v3.5.0的最新版本。我已经创建了一个应用程序: cordova create TestApp cd TestApp cordova platform add android cordova run android 一切都很完美,应用程序出现在我的Android设备上。现在我想将包“pako”添加到我的应用程序:。我仍然在上面看到的同一个目录中,

我正在尝试使用NPM向我的Cordova项目添加一个包,但要么我做了一些非常错误的事情,要么我没有得到它应该工作的方式……我使用的是Cordova v3.5.0的最新版本。我已经创建了一个应用程序:

cordova create TestApp
cd TestApp
cordova platform add android
cordova run android
一切都很完美,应用程序出现在我的Android设备上。现在我想将包“pako”添加到我的应用程序:。我仍然在上面看到的同一个目录中,我输入“npm install pako”。该软件包安装在“/node_modules/”中

但是,当我为Android cordova build Android/cordova run Android/cordova prepare构建我的应用程序时,“/node_modules/”目录中安装的软件包都不会复制到特定于平台的文件夹“platforms/Android/…”。换句话说,如何在Cordova/Phonegap应用程序中使用npm包?cordova cli是否应该自动将此软件包复制到正确的平台

这可能吗?或者当我想使用npm包时,我必须使用Grunt创建一个手动构建脚本吗?由于我找不到任何例子,我认为我完全走错了方向,因此如果有人能给我一点提示,帮助我朝着正确的方向前进,我将不胜感激


提前谢谢

添加所有已安装的模块通常不是您想要的,因为它们可能包含应用程序中实际未使用的其他依赖项,如测试工具或grunt任务。虽然您可以使用npm下载依赖项并使它们保持最新,但您仍然需要在应用程序中手动包含它们


Grunt和Grunt contrib copy如果您想要单独的文件,或者Grunt contrib concat如果您想要单个文件,通常性能更好是一种解决方案。另一个是,它支持内置的npm模块。

添加所有已安装的模块通常不是您想要的,因为它们可能包含应用程序中实际未使用的其他依赖项,如测试工具或grunt任务。虽然您可以使用npm下载依赖项并使它们保持最新,但您仍然需要在应用程序中手动包含它们


Grunt和Grunt contrib copy如果您想要单独的文件,或者Grunt contrib concat如果您想要单个文件,通常性能更好是一种解决方案。另一个是,它内置了对npm模块的支持。

这可以通过使用在准备之前触发的挂钩来实现


请参见

这可以通过使用在准备前触发的挂钩来实现


请参见

使用Webpack和Browserify等工具是实现这一目标的首选方法。您不仅可以使用Cordova应用程序中的任何模块,还可以获得令人敬畏的功能,如树摇动和即时性能优化。

使用Webpack和Browserify等工具是实现这一点的首选方法。您不仅可以使用Cordova应用程序中的任何模块,还可以获得令人敬畏的功能,如树摇动和即时性能优化。

TLDR和simple 使用npm包:

长问题和DIY 你可以简单地 在cordova prepare之前,它也会在cordova构建时执行,也就是说,当文件被组装以进行编译时

编辑config.xml并将此行添加到根目录中,而不是任何平台中,即+ path.relativeprojectRoot,fileDestFullPath console.logtwospace+consoleMsg } 正如您在该文件中看到的,我正在使用具有以下语法的函数copyFile复制jquery和bootsrap文件:

复制文件 , , 我在我所有的科尔多瓦项目中都使用它,它就像一种魅力。我就是这么看的

这个钩子在cordova构建时也会被触发,因为cordova构建等于cordova prepare和cordova compile。

TLDR和simple 使用npm包:

长问题和DIY 你可以简单地 在cordova prepare之前,它也会在cordova构建时执行,也就是说,当文件被组装以进行编译时

编辑config.xml并将此行添加到根目录中,而不是任何平台中,即+ path.relativeprojectRoot,fileDestFullPath console.logtwospace+consoleMsg } 正如您在该文件中看到的,我正在使用具有以下语法的函数copyFile复制jquery和bootsrap文件:

复制文件 , , 我在我所有的科尔多瓦项目中都使用它,它就像一种魅力。我就是这么看的


cordova build也会触发钩子,因为cordova build等于cordova prepare&cordova compile。

我使用这个钩子,它工作得很好:我使用这个钩子,它工作得很好:我使用这个钩子,它工作得很好:或者这个npm包:我使用这个钩子,它工作得很好:或者这个npm包: