这是我的第一个问题,因此,首先要提出一个大建议,请谅解,以防我的问题无法解决所有问题,或显得笨拙。
我想知道我的应用程序是如何用zeit的pkg捆绑和编译的。
捆绑软件是否已插入预先设置大小的二进制文件?
它是否下载了像nexe这样的节点源,并且在执行二进制文件时代码是作为主程序运行还是作为快照加载?
我有一个后端节点表达服务器和一个前端有角度的应用程序,每个都有自己的node_modules文件夹,如下所示:
myapp
|-------/client
| |
| |-----/e2e
| |-----/node_modules
| |-----/src
|
|-------/config
|
|-------/node_modules
|
|-------/routes
|
|--app.js
|
|--package.json
|
|--README.md
pkg如何处理node_modules的这两个实例?
我们非常感谢您的帮助/专业!
答案 0 :(得分:0)
存在多个node_modules
的事实并不重要。在app.js中,require('foo')
是指myapp/node_modules/foo
。捆绑模块的方式与加载模块时的解析方式类似。
pkg
仅打包显式指定的模块。如the documentation所述,
在包装过程中,pkg会解析您的源,检测对 需求,遍历项目的依赖项并将其包括在内 变成可执行文件。在大多数情况下,您无需指定任何内容 手动。但是,您的代码可能需要(可变)调用(因此 称为非文字参数要求)或使用非JavaScript文件 (例如,视图,css,图像等)。
require('./build/' + cmd + '.js') path.join(__dirname, 'views/' + viewName)
pkg无法处理此类情况。因此,您必须指定文件- 脚本和资产-手动在package.json的
pkg
属性中 文件。"pkg": { "scripts": "build/**/*.js", "assets": "views/**/*" }
只需确保调用
pkg package.json
或pkg .
以使用脚本 和资产条目。
不这样做会导致在包装过程中出现警告:
动态require可能在运行时失败,因为所请求的文件在编译时是未知的,并且不包含在可执行文件中。采用 字符串文字作为'require'的参数,或者保持原样,并且 在“脚本”选项中指定解析的文件名。