webpack包装node


本編のインストール依存は全部cnpmを使用します.
インストール依存cnpm install --save-dev webpack cnpm install -g webpackパッキング操作を実行します
  • webpack.co.nfig.js
  • を新設します.
  • 次の内容を書き込みます.
  •     const path = require('path')
        const fs = require('fs')
    
        const nodeModules = {}
        fs.readdirSync('node_modules')
            .filter(function (x) {
                return [ '.bin' ].indexOf(x) === -1
            })
            .forEach(function (mod) {
                nodeModules[ mod ] = 'commonjs ' + mod
            })
    
        module.exports = {
            entry: './src/app.js',
            output: {
                filename: 'bundle.js',
                path: path.resolve(__dirname, 'dist')
            },
            target: 'node',
            externals: nodeModules
        }
  • は包装作業を行い、エンジニアリングルートディレクトリ(package.jsonのディレクトリ)は、webpackまたはwebpack–config webpack.co-nfig.js
  • の命令を実行します.
    暗号化コード
  • は、webpackがes 6 cnpm install --save-dev babel-loader babel-core babel-preset-env
  • をサポートするためにBabelをインストールします.
  • webpack.co.nfig.js
  • を修正する.
        const path = require('path')
        const fs = require('fs')
        const webpack = require('webpack');
    
        const nodeModules = {}
        fs.readdirSync('node_modules')
            .filter(function (x) {
                return [ '.bin' ].indexOf(x) === -1
            })
            .forEach(function (mod) {
                nodeModules[ mod ] = 'commonjs ' + mod
            })
    
        module.exports = {
            entry: './src/app.js',
            output: {
                filename: 'app.js',
                path: path.resolve(__dirname, 'dist')
            },
            target: 'node',
            externals: nodeModules,
            plugins: [
                new webpack.optimize.UglifyJsPlugin({
                    minimize: true,
                    sourceMap: false,
                    compress: {
                        warnings: false,
                        sequences: true,
                        dead_code: true,
                        conditionals: true,
                        booleans: true,
                        unused: true,
                        if_return: true,
                        join_vars: true,
                        drop_console: false
                    }
                })
            ],
            resolve: {
                extensions: ['.js', '.json'],
                modules: [path.join(__dirname, 'src'), 'node_modules']
            },
            module: {
                rules: [
                    { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }
                ]
            }
        }
    静的リソースをコピーcnpm i -S copy-webpack-plugin使用方法参照:https://github.com/kevlened/copy-webpack-plugin
    ディレクトリを削除cnpm i -S clean-webpack-plugin使用方法参照:https://github.com/johnagan/clean-webpack-plugin