添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

上一节 我们了解了electron-vue的整体介绍,这一节我们分析生产环境的打包流程。
从package.json文件入口来看打包命令和调用的脚本:

  "scripts": {
    "build": "node .electron-vue/build.js",
    "build:darwin": "cross-env BUILD_TARGET=darwin node .electron-vue/build.js",
    "build:linux": "cross-env BUILD_TARGET=linux node .electron-vue/build.js",
    "build:mas": "cross-env BUILD_TARGET=mas node .electron-vue/build.js",
    "build:win32": "cross-env BUILD_TARGET=win32 node .electron-vue/build.js",
    "build:clean": "cross-env BUILD_TARGET=clean node .electron-vue/build.js",
    "build:web": "cross-env BUILD_TARGET=web node .electron-vue/build.js",

这说明打包的入口文件为build.js,我们就从这个入口文件来分析打包的过程。

//用到的配置文件
const buildConfig = require('./build.config')
const mainConfig = require('./webpack.main.config')
const rendererConfig = require('./webpack.renderer.config')
//除了`clean`和`web`的命令外,其他指令都会进行build()的操作:
if (process.env.BUILD_TARGET === 'clean') clean()
else if (process.env.BUILD_TARGET === 'web') web()
else build()
function build () {
  //构建app
  bundleApp()
  //打包主进程
  pack(mainConfig).then(result => {
  }).catch(err => {
  //打包渲染进程
  pack(rendererConfig).then(result => {
  }).catch(err => {
function bundleApp () {
  packager(buildConfig, (err, appPaths) => {
function pack (config) {
  return new Promise((resolve, reject) => {
    webpack(config, (err, stats) => {

这个构建步骤中,分别进行了三个操作:

  • 使用buildConfig(也就是build.config.js)–构建app
  • 使用mainConfig(也就是webpack.main.config.js)–打包主进程
  • 使用rendererConfig(也就是webpack.renderer.config.js)–打包渲染进程

主进程和渲染进程使用的配置文件我们在稍后的开发流程中分析,这里主要看构建app用的配置文件,也就是build.config文件:
文件内容很简单,我们直接贴出源码:

const path = require('path')
module.exports = {
    //目标架构和平台
    arch: 'x64',
    platform: process.env.BUILD_TARGET || 'all',
    //是否启用asar压缩打包
    asar: true,
    //打包目录
    dir: path.join(__dirname, '../'),
    //应用图标
    icon: path.join(__dirname, '../build/icons/icon'),
    ignore: /(^\/(src|test|\.[a-z]+|README|yarn|static|dist\/web))|\.gitkeep/,
    out: path.join(__dirname, '../build'),
    overwrite: true

这个文件内容很简单,用于electron-packager打包时读取,主要配置了最终生成exe文件的一些参数,包括:

  • arch
  • platform
    目标架构和平台
  • asar
    是否启用asar压缩打包
  • out
  • dir
    指定生成目录
  • icon
    图标
  • ignore
    忽略那些文件
  • overwrite
    覆盖模式打包

该文件中配置的参数其实都可以通过命令的形式实现:

electron-packager ./app <name> --platform=win32 --arch=x64 --overwrite --ignore=dev-settings

写在配置文件中可以实现“傻瓜式”的打包目的。
这就是生产环境打包的过程。
下一节我们看开发环境的启动过程

整理了一套《前端大厂面试宝典》,包含了HTML、CSS、JavaScript、HTTP、TCP协议、浏览器、VUE、React、数据结构和算法,一共201道面试题,并对每个问题作出了回答和解析。 一、写在前面在 ICE、Rax 等项目研发中,我们或多或少都会接触到 build-scripts 的使用。build-scripts 是集团共建的统一构建脚手架解决方案,其除了提供基础的 start、build 和 test 命令外,还支持灵活的插件机制供开发者扩展构建配置。本文尝试通过场景演进的方式,来由简至繁地讲解一下 build-scripts 的架构演进过程,注意下文描述的演进过程意在讲清... 5.对文件进行压缩(后端服务器也需要配置),注意插件的版本,否则打包报错。2.设置sourceMap 为false。3.使用插件去除consele.log。1.配置alias 别名。 最近自己有个小的需求,是做一个能编辑本地特定文本的工具,需要跨平台, Windows 和 macOS,这样,如果用生开发的话,Windows 就要用c#macOS 就要用swift,学习成本高,并且学完用处也不是很大。我本身是前端开发的,发现了这个electron能满足我的需求,跨平台运行,内部是 js 驱动的,简直就是如鱼得水。顺便把学习的经历写出来,分享需要的人,我会按标题序号渐进式地编写内容。electron。... BuildConfig的配置一般如下: public final class BuildConfig { public static final boolean DEBUG = false; public static final String APPLICATION_ID = "com.qiaofang.qfangadtv"; public static final String B... genConfig根据指定的process.env.TARGET与builds中的键做对比,如果在builds中存在对应的键,则生成并对应的配置。这里并没有做指定的process.env.TARGET不存在于builds中的处理。 minSdk=19 targetSdk=22ServerAddress="http\://x-phone.cn" apiversion="/api/v1.1/"isDebug=true在项目的build.gradle使用如下: android { compileSdkVe 这个process是什么?为何都没有引入就可以使用了呢? process对象是一个global(全局变量),提供有关信息,控制当前Node.js进程。作为一个对象,它对于Node.js应用程序始终是可用的,故无需使用require(); 那procee.env呢?是啥? process.env属性返回一个包含用户环境信息的对象 2. bu... 当我们使用vue写好项目后我们需要将项目进行打包成html项目,使用一下命令可以打包项目。 npm run build 在当前目录下输入打包命令,等待打包完成后在根目录生成一个dist的文件夹,里面是html页面和css,js,img文件夹。 -- dist -- css -- js -- img -- index.html 当然这个html项目我们无法通过双击的形式打开,我们需要创建一个服务才能运行此项目。 vue-config-js配置 在vue项目里创建vue.con