我怎样才能确保nodejs pkg包含我的所有文件?可执行文件在根文件夹中运行,但在其他任何地方都不起作用



所以我有一个html和javascript的项目。单击index.html,它将在浏览器中打开一个二维模拟。我想把它打包成一个独立的可执行文件(.exe(。在我得到建议之前,我知道还有其他方法,但如果可能的话,我想用node来做这件事。

为了用node触发这一点,我只创建了一个执行"npm-start"的app.js,然后执行"start-index.html">

我在pkg方面取得了巨大成功(https://www.npmjs.com/package/pkg)当它只是一个纯脚本时,但当我将这个项目编译为exe时,它将在浏览器中打开并正常工作。问题是,如果我将可执行文件从原始文件夹(例如,移动到桌面(中,它将不再工作。我想这是因为它没有包括我需要的所有文件。

到目前为止,我已经尝试了以下几种:

我用pkg . -t host编译。

我试着用"glob"((包含所有文件,比如:

var glob = require( 'glob' )
, path = require( 'path' );
glob.sync( './html5/**/**/*.js' ).forEach( function( file ) {
require( path.resolve( file ) );
});
glob.sync( './html5/**/**/*.css' ).forEach( function( file ) {
require( path.resolve( file ) );
});

但这会返回一个关于窗口的错误("未定义窗口"(。我通过添加来解决这个问题

if (typeof window !== "undefined") {
window.globalProvideData('stuff', 'more stuff');
}

每次我都有错误,但最终它给了我错误,我无法理解。

那么,我如何才能包括所有文件,使其在根文件夹中的行为与它一样?

编辑:这是文件夹结构和我的包.json:

文件夹结构

package.json:

{
"name": "test_story",
"version": "1.0.0",
"description": "testing story exe",
"main": "app.js",
"scripts": {
"test": "echo "Error: no test specified" && exit 1",
"start": "start story.html"
},
"bin": "app.js",
"author": "",
"license": "ISC",
"dependencies": {
"glob": "^7.1.6",
"pkg": "^4.5.1"
},
"pkg": {
"assets": [
"html5/**/*",
"mobile/*.jpg",
"node_modules/**/*",
"story_content/**/*"
]
}
}

避免根文件夹的一个简单技巧是运行批处理文件,为您启动目录。此外,为了确保所有文件都已正确传输,您可以检查文件夹大小并进行比较。FTP通常就是这样工作的。

相关内容

最新更新