2014-12-01 5 views

risposta

5

Che tipo di applicazione è questa? Se si utilizza un pacchetto package.json, è possibile eseguire webpack nel passaggio postinstall utilizzando gli script npm.

+0

Sto compilando il pacchetto Web in modo programmatico (dal mio index.js) e funziona solo sul mio computer locale. Ha senso, il filesystem dei dynos non dovrebbe essere di sola lettura? –

1

Ho risolto questo problema mettendo in devDependencies dipendenze normali, e ho cambiato dello script successivo a:

node_modules/.bin/webpack 
2

È possibile impostare postinstall nel vostro package.json al seguente NODE_ENV=production webpack -p

Quindi impostare start a node

Ma sarà necessario assicurarsi di configurare il proprio webpack per la produzione impostandolo nel proprio file web.config.js o bpack.config.js (produzione) come configurazione di produzione.

ho impostato tutto dentro le mie webpack.config.js come segue ..

const path = require('path'); 
const webpack = require('webpack'); 
const debug = process.env.NODE_ENV !== "production"; 


module.exports = { 
    entry: [ 
    './src/index.js' 
    ], 
    output: { 
    path: path.resolve(__dirname, 'src'), 
    filename: 'bundle.js' 
    }, 
    devtool: debug ? "inline-sourcemap" : null, 
    module: { 
    loader: [{ 
     exclude: /node_modules/, 
     loader: 'babel', 
     query: { 
     presets: ['angular'] 
     } 
    }, 
    { 
     test: /\.css$/, 
     loader: "style-loader!css-loader" 
    }] 
    }, 
    devServer: { 
    historyApiFallback: true, 
    contentBase: 'src' 
    }, 
    plugins: debug ? [] : [ 
    new webpack.optimize.DedupePlugin(), 
    new webpack.optimize.OccurenceOrderPlugin(), 
    new webpack.optimize.UglifyJsPlugin({ 
    mangle: {except: ['$', 'exports', 'require', 'app']}, 
    compress: {warnings: false}, 
    sourceMap: false 
    }) 
    ] 
} 

Quindi, fondamentalmente, una volta che il comando viene eseguito npm run postinstall fascio verrà generato nella directory come da webpack.config.js (output) . Ricorda però di includere nel pacchetto package.json i comandi NODE_ENV=production webpack -p prima di eseguire "npm start". Vedere l'esempio sotto ..

{ 
    "name": "", 
    "version": "1.0.0", 
    "description": "", 
    "main": "./src/bundle.js", 
    "engines": { 
    "node": "6.4.0" 
    }, 
    "scripts": { 
    "start": "node ./src/server.js", 
    "postinstall": "NODE_ENV=production webpack -p" 
    }, 
    "author": "", 
    "license": "ISC", 
    "dependencies": ...