繁体   English   中英

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

[英]How can I just make sure that nodejs pkg is including all of my files? Executable runs in root folder but doesn't anywhere else

所以我有一个项目是 html 和 javascript。 您单击 index.html 并在浏览器中打开 2D 模拟。 我想将 package 作为独立的可执行文件 (.exe)。 我知道在得到建议之前还有其他方法,但如果可能的话,我想用节点来做这件事。

为了用节点触发这个,我简单地创建了一个执行'npm start'的app.js,它又执行'start index.html'。

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

到目前为止,我已经尝试了以下方法:

我用pkg. -t host 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 ) );
});

但这会返回有关 window 的错误(“未定义窗口”)。 我通过添加来解决这个问题:

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

每次我得到错误但最终它给了我我无法弄清楚的错误。

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

编辑:这是文件夹结构和我的 package.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 经常工作的方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM