前端项目打包成为exe

1.安装webpack

  //全局安装

npm install -g webpack

//安装到你的项目目录

npm install --save-dev webpack

2.

babel  Babel其实是几个模块化的包,其核心功能位于称为babel-core的npm包中,webpack可以把其不同的包整合在一起使用,对于每一个你需要的

 

功能或拓展,你都需要安装单独的包(用得最多的是解析Es6的babel-env-preset包和解析JSX的babel-preset-react包)。

// npm一次性安装多个依赖模块,模块之间用空格隔开

npm install --save-dev babel-core babel-loader babel-preset-env babel-preset-react

3.

//安装 React 和 React-DOM

npm install --save react react-dom

4.

//安装css依赖

npm install --save-dev style-loader css-loader

 

//全局安装webpack-cli

 npm install webpack-cli -g

 

5

//安装插件

npm install --save-dev html-webpack-plugin

需要准备的文件:main.js ,webpack-cfig.js,package.json.

main.js :

require('./js/json2.js');

require('./js/ts.js');

require('./js/mqttws31.min.js');

require('./js/index.js');

 

webpack-cfig.js:

var webpack = require('webpack');//引入webpack

module.exports = {

  entry:__dirname+"/main.js",//主入口,必写项

  output: {

    publicPath:'./out/',

    path: __dirname+"/out",//输出路径

    filename: "bundle.js"//输出名字

  },

 //读取js和css

  module: {

    rules: [

          

           {

             test: /(\.jsx|\.js)$/,

             use: {

                 loader: "babel-loader",

           },

           exclude: /node_modules/

           },

           {

             test: /\.css$/,

             use: [{

                 loader: "style-loader"

           },

           {

                 loader: "css-loader"

             }]

           },

           {

             test:/.(jpg|png)$/,

             use: [{

                 loader: "file-loader"

             }]

           },

          

      ]

  },

//引入jquery。

 plugins:[

   new webpack.ProvidePlugin({

      $: "jquery",

      jQuery: "jquery"

    })

 

   ]

 

}

 

 

package.json:

 

{

           "name": "TicketShow",

           "main": "TicketShow/index.html",//主入口

           "window": {

                      "fullscreen": true,

                      "resizable": false

           },

           "webkit": {

                      "plugin": true

           },

           "devDependencies": {

                      "babel-core": "^6.26.3",

                      "babel-loader": "^7.1.5",

                      "babel-preset-env": "^1.7.0",

                      "babel-preset-react": "^6.24.1",

                      "css-loader": "^1.0.0",

                      "html-webpack-plugin": "^3.2.0",

                      "style-loader": "^0.23.0",

                      "webpack": "^4.17.2"

           },

           "dependencies": {

                      "react": "^16.5.0",

                      "react-dom": "^16.5.0",

                      "requirejs-text": "^2.0.15",

                      "webpack-cli": "^3.1.0",

                      "webpack-command": "^0.4.1"

           }

}

 

设置完以后直接在命令行中运行webpack.本地会生成out文件夹,文件夹内会生成bundle。Js和依赖的图片。

 

到此为止,项目打包完成。

注意:webpack打包是以模块为主,所以打包js后方法变成局部变量,在html中调用js中的方法无效。所以需要将方法设为全局变量:Window.方法名=function(){方法内容}

 

6.将打包好的项目压缩成exe。

用到的工具nw.js.和enigma virtual box。

(1)  将项目压缩成压缩包,然后把后缀名改为nw。

(2)  将压缩包放到nw工具的根目录。用命令行执行:

copy /b nw.exe+app.nw app.exe。

会在本地生成app.exe.

到此为止,项目可以正常启动。

我们是发布所用,所以需要将app和nw打包到一起。

启动enigma virtual box。

 

选择Input和Output文件,将locales和pnacl两个文件夹拖入,然后点击add按钮添加剩下的不包含我们自己创建的文件。

点击Process,等待一会看到File successfully save则表示成功,app_boxed.exe这个文件就可以在任何目录下独立运行了。

参考资料:https://segmentfault.com/a/1190000006178770

https://jingyan.baidu.com/article/3065b3b6a06c92becff8a483.html

posted @ 2018-09-13 14:53  新月勾魂  阅读(8088)  评论(0编辑  收藏  举报