2017-03-13 2 views
0

내가 얻으려고하는 것은 다음과 같습니다. webhook에서 내 정적으로 생성 된 웹 응용 프로그램을 재생성해야하는 고속 서버가 있습니다. 나는 webpack을 사용하고 있습니다. webpack의 CLI에서 정적 사이트를 생성하면 모든 것이 매력처럼 작동합니다. 나는, 그러나, 수입 웹팩 노드 내에서 구성, 나는 웹팩 옵션 유효성 검사 오류를 얻을 경우Webpack Extract Text Plugin - Webpack Node API의 css-loader 문제

- configuration.module.rules[4].loader should be one of these: 
    non-empty string | non-empty string | function | object { loader?, options?, query? } | function | [non-empty string | function | object { loader?, options?, query? }] 

조금이 디버깅 후, 나는, 나는 WebpackExtractTextPlugin를 사용하는 곳마다 로더가 추가가 있다는 것을 발견 즉 로더 :

{ loader: 1178, options: [Object] }

이 내 공유 webpack.js는 모습입니다 같은 :

module.exports = (env) => ({ 
 
    context : path.resolve(__dirname, '..', 'entries'), 
 
    output : { 
 
     path  : path.resolve(__dirname, '..', '..', 'build'), 
 
     filename : '[name].js', 
 
     publicPath : '/' 
 
    }, 
 
    plugins : [ 
 
     new webpack.EnvironmentPlugin({ 
 
      // ... 
 
     }), 
 
    ], 
 
    module : { 
 
     rules : [ 
 
      { 
 
       test : /\.js$/, 
 
       loader : 'babel-loader', 
 
       exclude : /node_modules/, 
 
       options : { 
 
        babelrc : false, 
 
        presets : ['es2015', 'stage-0', 'react'], 
 
       } 
 
      }, 
 
      { 
 
       test : /\.json$/, 
 
       loader : 'json-loader' 
 
      }, 
 
      { 
 
       test : /\.(jpg|jpeg|png|gif|ico)$/, 
 
       loader : 'file-loader?name=img/[name].[ext]' 
 
      }, 
 
      { 
 
       test : /\.svg$/, 
 
       loader : 'file-loader?name=svg/[name].[ext]' 
 
      }, 
 
      { 
 
       test : /\.less$/, 
 
       loader : ExtractTextPlugin.extract({ 
 
        fallback : 'style-loader', 
 
        use  : [ 
 
         { 
 
          loader : 'css-loader', 
 
          options : { 
 
           importLoaders : 1, 
 
           modules   : true, 
 
           minimize  : env !== 'dev', 
 
           sourceMap  : env === 'dev', 
 
           discardComments : { removeAll : true }, 
 
           localIdentName : env === 'dev' ? '[path][name]-[local]-[hash:base64:3]' : '[hash:base64:5]' 
 
          } 
 
         }, 
 
         { 
 
          loader : 'less-loader', 
 
          options : { 
 
           sourceMap : env === 'dev', 
 
           modifyVars : lessConfig 
 
          } 
 
         } 
 
        ] 
 
       }) 
 
      }, 
 
      { 
 
       test : /\.css$/, 
 
       loader : ExtractTextPlugin.extract({ 
 
        fallback : 'style-loader', 
 
        use  : { 
 
         loader : 'css-loader', 
 
         options : { 
 
          minimize : env !== 'dev', 
 
          sourceMap : env === 'dev' 
 
         } 
 
        } 
 
       }) 
 
      } 
 
     ] 
 
    }, 
 
    // ... 
 
})
webpack.static.js

이 함께 위의 병합 : 추가적인 로더에서 올 수도 그렇지 않으면 내가 무엇을 잘못하고 있는가하면 끝낼 위치를

module.exports = (env) => merge.smart(webpackConfig(env), { 
 
    entry : { 
 
     static : [ 
 
      'babel-polyfill', 
 
      './static' 
 
     ] 
 
    }, 
 
    output : { 
 
     path   : path.resolve(__dirname, '..', '..', 'build', 'static'), 
 
     libraryTarget : 'umd', 
 
     publicPath : '/' 
 
    }, 
 
    externals : vendorConfig, 
 
    plugins : [ 
 
     new ProgressBarPlugin(), 
 
     new ExtractTextPlugin({ 
 
      filename : 'client.css', 
 
      allChunks : true 
 
     }), 
 
     new StaticSiteGeneratorPlugin({ paths }) 
 
    ], 
 
    module : { 
 
     rules : [ 
 
      { 
 
       test : /\.js$/, 
 
       loader : 'babel-loader', 
 
       query : { 
 
        presets : ['es2015', 'stage-0', 'react'], 
 
        plugins : ['system-import-transformer'] 
 
       } 
 
      } 
 
     ] 
 
    }, 
 
    target : 'node' 
 
})

누구 아이디어가 있습니까 이 문제??

내가 사용하고 있습니다 : [email protected] [email protected]

+0

는 웹팩 CLI 작동으로처럼 작동 부분을 이동, 문제는 거의 확실히 당신의 노드 빌드 스크립트. 도움을 받으려면 노드 스크립트를 게시해야합니다. webpack 설정 자체가 잘 작동하고 노드 API와 함께 사용하면 잘 작동합니다. –

답변

0

걱정하지 마라. 문제는 내가 webpack에 번들 될 대상인 서버에서 webpack 구성을 요구한다는 것이 었습니다.

내가 다른 포트에서 실행중인 자신의 스크립트/서버에 정적 사이트를 구축하고 지금 모든 매력 :

관련 문제