【问题标题】:NodeWebkit - deploy the applicationNodeWebkit - 部署应用程序
【发布时间】:2016-09-07 20:59:50
【问题描述】:

我有一个用于 Web 和 NodeWebkit (NW) 应用程序的代码库。 我使用以下堆栈: - 反应 - 哈皮 - 续集 - Windows 环境

应用程序的 Web 版本使用 MySQL,而 NW 使用 Sqlite。一切正常。我有一个配置文件,可以根据我的需要(网络或 NW)编译应用程序。

我现在面临的问题是如何部署 NW 应用程序。想法是向客户提供 NW 应用程序,他将在其中单击图标打开它。

由于我使用的是 NW 版本的 Node,并且应用程序使用了许多存储在 node_modules 中的模块,我面临着如何打包它们的挑战。

我的想法是制作一个 Windows 安装程序。用户将单击它,安装程序会将所有文件提取到目标位置。并在用户桌面上制作一个图标来运行它。

问题在于 Windows 文件名 limitation。在 node_modules 中,有许多子目录完全违反了 Windows 的限制。我什至无法复制 node_modules 文件夹。我什至不能删除它。好吧,如果我压缩它,我可以复制它......或手动删除长文件夹。

我还没有开始研究安装程序,但我想我会用这种方法碰壁。

有人知道如何进行此部署吗? 如何在 NW 中集成 NPM3?

我现在的计划是制作 Windows 安装程序。该 Windows 安装程序将正常安装应用程序文件。 node_modules 将预先压缩并放置在安装程序中。然后安装程序将简单地将其解压缩到目标文件夹。

我会在这里发布我的进度。

这里有一些更新。 这里的主要问题是 node_modules 的深度。我在 node_modules 中有很多模块,经过一番思考,我发现那里有一个简单的规则。一些模块是服务器端模块,而其他模块则由 react 使用。 而且由于 Webpack 已经创建了一个巨大的文件,其中已经包含了所有模块,所以我根本不需要它们。

所以我删除了所有前端模块(babel 模块、react-*),只剩下服务器端(Hapi、sequelize...)。奇迹发生了,应用程序在启动时运行速度更快。

我将使用 Inno setup 制作清单文件,应该很好。

我仍然没有脱离危险区域,因为开发人员可能需要一个服务器端模块,它具有很大的深度。但如果发生这种情况,我会考虑的。

更多关注...

【问题讨论】:

    标签: javascript c# reactjs node-webkit hapijs


    【解决方案1】:

    其实在nodejs中你可以做到以下几点:

    1-在您的项目文件夹中创建另一个文件夹,例如“server_modules”

    2-在创建的文件夹中创建另一个 package.json 文件并安装服务器所需的任何模块

    3-所有这些模块都可以使用require('module_name') 作为普通 node_modules 访问,如果不需要,可以在打包桌面版本时删除“server_modules”文件夹

    注意:一些开发人员使用这种方法在 nodejs 中实现微服务,但它在您的情况下很有用

    【讨论】:

    • 如果我做对了。我可以有两个具有几乎相同模块的文件夹。一个是 server_modules,另一个是 desktop_modules。如果我提供在线版本,我会保留 server_modules。如果我错了,请纠正我,但这会阻碍应用程序吗?既然 Node.js 期望在 node_modules 中找到模块?
    • 1- 你可以有相同的模块或分开的模块都可以工作
    • 2-nodejs 不仅使用“node_modules”加载模块的整个想法,它使用优先级搜索从同一项目中“node_modules”文件夹开始的模块,它将具有最高优先级
    • 您可以使用console.log(process.mainModule.paths)检查当前项目节点模块路径的优先级
    猜你喜欢
    • 2014-07-19
    • 2015-02-01
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 2013-03-13
    • 2012-05-29
    • 2011-05-27
    相关资源
    最近更新 更多