最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 【Electron 快速入门-5.1】Dev 编译与启动主进程

    正文概述 掘金(spcBackToLife)   2021-06-05   597

    修改 tsconfig.json

    在我们的项目下,存在 tsconfig.json 文件,用于编译我们 web 中的 ts,我们对其做一些改变。

    • module: esnext -> CommonJs
    {
    
      "compilerOptions": {
    
        .​..
    
        "module": "CommonJS",
    
        ...
    
      },
    
    }
    

    编写 babel 脚本

    在 dev 的时候,我们通过 babel 脚本来进行主进程 ts 的实时编译与运行。

    • 新建scripts/BabelRegister.js :
    const path = require('path');
    
    
    
    require('@babel/register')({
    
      extensions: ['.es6', '.es', '.jsx', '.js', '.mjs', '.ts', '.tsx'],
    
      cwd: path.join(__dirname, '..'), // 脚本相对于根目录位置
    
    });
    
    • 添加依赖
    yarn add @babel/register@7.12.1 -D
    
    • 新增 babel 配置: babel.config.js
    /* eslint global-require: off, import/no-extraneous-dependencies: off */
    
    
    
    const developmentEnvironments = ['development', 'test'];
    
    
    
    const developmentPlugins = [require('@babel/plugin-transform-runtime')];
    
    
    
    const productionPlugins = [
    
      require('babel-plugin-dev-expression'),
    
    
    
      // babel-preset-react-optimize
    
      require('@babel/plugin-transform-react-constant-elements'),
    
      require('@babel/plugin-transform-react-inline-elements'),
    
      require('babel-plugin-transform-react-remove-prop-types'),
    
    ];
    
    
    
    module.exports = (api) => {
    
      // See docs about api at https://babeljs.io/docs/en/config-files#apicache
    
    
    
      const development = api.env(developmentEnvironments);
    
    
    
      return {
    
        presets: [
    
          // @babel/preset-env will automatically target our browserslist targets
    
          require('@babel/preset-env'),
    
          require('@babel/preset-typescript'),
    
          [require('@babel/preset-react'), { development }],
    
        ],
    
        plugins: [
    
          // Stage 0
    
          require('@babel/plugin-proposal-function-bind'),
    
    
    
          // Stage 1
    
          require('@babel/plugin-proposal-export-default-from'),
    
          require('@babel/plugin-proposal-logical-assignment-operators'),
    
          [require('@babel/plugin-proposal-optional-chaining'), { loose: false }],
    
          [
    
            require('@babel/plugin-proposal-pipeline-operator'),
    
            { proposal: 'minimal' },
    
          ],
    
          [
    
            require('@babel/plugin-proposal-nullish-coalescing-operator'),
    
            { loose: false },
    
          ],
    
          require('@babel/plugin-proposal-do-expressions'),
    
    
    
          // Stage 2
    
          [require('@babel/plugin-proposal-decorators'), { legacy: true }],
    
          require('@babel/plugin-proposal-function-sent'),
    
          require('@babel/plugin-proposal-export-namespace-from'),
    
          require('@babel/plugin-proposal-numeric-separator'),
    
          require('@babel/plugin-proposal-throw-expressions'),
    
    
    
          // Stage 3
    
          require('@babel/plugin-syntax-dynamic-import'),
    
          require('@babel/plugin-syntax-import-meta'),
    
          [require('@babel/plugin-proposal-class-properties'), { loose: true }],
    
          require('@babel/plugin-proposal-json-strings'),
    
    
    
          ...(development ? developmentPlugins : productionPlugins),
    
        ],
    
      };
    
    };
    
    • 添加 babel 插件依赖, 直接复制到 package.json 进行安装即可。
      "devDependencies": {
    
     ​   ...
    
        "@babel/core": "^7.12.9",
    
        "@babel/plugin-proposal-class-properties": "^7.12.1",
    
        "@babel/plugin-proposal-decorators": "^7.12.1",
    
        "@babel/plugin-proposal-do-expressions": "^7.12.1",
    
        "@babel/plugin-proposal-export-default-from": "^7.12.1",
    
        "@babel/plugin-proposal-export-namespace-from": "^7.12.1",
    
        "@babel/plugin-proposal-function-bind": "^7.12.1",
    
        "@babel/plugin-proposal-function-sent": "^7.12.1",
    
        "@babel/plugin-proposal-json-strings": "^7.12.1",
    
        "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1",
    
        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1",
    
        "@babel/plugin-proposal-optional-chaining": "^7.12.7",
    
        "@babel/plugin-proposal-pipeline-operator": "^7.12.1",
    
        "@babel/plugin-proposal-throw-expressions": "^7.12.1",
    
        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
    
        "@babel/plugin-syntax-import-meta": "^7.10.4",
    
        "@babel/plugin-transform-react-constant-elements": "^7.12.1",
    
        "@babel/plugin-transform-react-inline-elements": "^7.12.1",
    
        "@babel/plugin-transform-runtime": "^7.12.1",
    
        "@babel/preset-env": "^7.12.7",
    
        "@babel/preset-react": "^7.12.7",
    
        "@babel/preset-typescript": "^7.12.7",
    
        "babel-plugin-dev-expression": "^0.2.2"
    
      }
    

    配置主进程启动命令

    • 添加一个跨平台的命令包: yarn add cross-env -D
    "cross-env": "^7.0.3",
    
    • 添加启动命令
    "dev:main": "cross-env NODE_ENV=development electron -r ./scripts/BabelRegister ./electron/main.ts",
    

    起源地下载网 » 【Electron 快速入门-5.1】Dev 编译与启动主进程

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元