Включите дополнительные файлы в app.asar, используя электрон - PullRequest
0 голосов
/ 16 июня 2020

Это приложение Vue с построителем электронов

{
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "electron:build": "vue-cli-service electron:build",
    "electron:serve": "vue-cli-service electron:serve",
    "postinstall": "electron-builder install-app-deps",
    "postuninstall": "electron-builder install-app-deps",
  },
  "main": "background.js",
  "dependencies": {
    "core-js": "^3.6.5",
    "vue": "^2.6.11",
    "vue-class-component": "^7.2.3",
    "vue-property-decorator": "^8.4.2",
    "vue-router": "^3.3.2",
    "vuetify": "^2.2.33"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "~4.4.0",
    "@vue/cli-plugin-eslint": "~4.4.0",
    "@vue/cli-plugin-router": "~4.4.0",
    "@vue/cli-plugin-typescript": "~4.4.0",
    "@vue/cli-service": "~4.4.0",
    "electron": "^6.1.12",
    "typescript": "^3.9.5",
    "vue-cli-plugin-electron-builder": "~1.4.6",
    "vue-cli-plugin-vuetify": "~2.0.5",
    "vue-template-compiler": "^2.6.11",
    "vuetify-loader": "^1.3.0"
  }
}

Когда я использую npm run electron:build, создается такая структура:

enter image description here

И это содержимое app.asar:

enter image description here

фон. js включает все зависимости. Есть некоторые внешние модули (из node_modules), которые читают файлы, используя что-то вроде fs.readFile(__dirpath + '/file'). Как и ожидалось, эти файлы не включены в сгенерированный пакет, поэтому мне нужно их добавить.

Я попытался использовать это в vue .config. js:

module.exports = {
  lintOnSave: true,
  transpileDependencies: [
    'vuetify'
  ],
  configureWebpack: {
    devtool: 'source-map'
  },
  pluginOptions: {
    electronBuilder: {
      builderOptions: {
        extraFiles: [
          'node_modules/module/file'
        ]
      }
    }
  }
}

Но файл включен вне app.asar, даже с extraResources, и, таким образом, fs.readFile(__dirpath + '/file') не нашел файл.

Как я могу включить файлы в app.asar?

1 Ответ

0 голосов
/ 17 июня 2020

Я нашел единственный способ использовать каталог publi c. Любой файл внутри public/ будет скопирован в app.asar.

Однако файл, который мне нужно скопировать, принадлежит внешней библиотеке, поэтому, чтобы не делать этот файл частью моего проекта, я проигнорировал его и скопировал непосредственно перед сборкой, используя npm скрипты.

"scripts": {
    "build": "cp node_modules/lib/file public && vue-cli-service electron:build -wl",
    "serve": "mkdir -p dist_electron && cp node_modules/lib/file dist_electron && vue-cli-service electron:serve"
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...