2014-12-01 51 views

回答

5

什么样的应用,这是?如果您使用的是package.json,则可以使用npm脚本在postinstall步骤中运行webpack。

+0

我编译webpack编程(从我的index.js),它只适用于我的本地机器。有道理,是不是dynos的文件系统应该是只读的? – 2015-12-22 22:52:06

1

我已经放置在普通的依赖devDependencies解决了这个问题,我改变了后脚本到:

node_modules/.bin/webpack 
2

你可以设置你的package.json postinstall以下NODE_ENV=production webpack -p

然后设置startnode

但是您需要确保将您的webpack设置为生产,或者将其设置在您的webpack.config.js中,否则我们bpack.config.js(生产)作为生产配置。

设置我webpack.config.js内一切如下..

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 
    }) 
    ] 
} 

所以基本上,一旦命令运行npm run postinstall束将在目录中每webpack.config.js生成(输出) 。但请记住,在运行'npm start'之前,使用命令NODE_ENV=production webpack -p包含在package.json中。看下面的例子..

{ 
    "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": ...