2017-04-12 1 views
0

안녕하세요. 저는 현재 webpack을 사용하여 프로젝트 파일을 단일 파일로 묶습니다. 그러나 webpack이 내 config가 설정된 config.js 파일을 번들로 묶는 것을 원하지 않습니다. 나는 이것을 출력 폴더에서 별도로 유지하고 싶지만 이것을 달성하기에는 확신 할 수 없다.webpack에 번들로 제공되는 .js 파일을 방지하는 방법

내 현재 설정은

//index.js file 
#!/usr/bin/env node 
'use strict'; 
let config = require('config.js); 
let read = require('read.js); 
console.log('i am running through command line'); 

//read.js file 
'use strict' 
console.log('read a text file'); 

//config.js 
'use strict'; 
module.exports = { 
name: 'test' 
} 

//webpack.config.js 
let webpack = require('webpack'); 
let path = require('path'); 
let fs = require('fs'); 

let nodeModules = {}; 
fs.readdirSync('node_modules') 
.filter(function (x) { 
    return [ '.bin' ].indexOf(x) === -1; 
}) 
.forEach(function (mod) { 
    nodeModules[mod] = 'commonjs ' + mod; 
}); 

module.exports = { 
entry: [ 'babel-polyfill', './index.js' ], 
target: 'node', 
node: { 
    __dirname: true 
}, 
output: { 
    path: path.join(__dirname, 'webpack_bundle'), 
    filename: '[name].js', 
    libraryTarget: 'commonjs' 
}, 
module: { 
    loaders: [ 
     { 
      test: /\.js$/, 
      loader: 'shebang-loader' 
     }, 
     { 
      test: /\.js$/, 
      loader: 'babel-loader', 
      query: { 
       presets: [ 'es2015' ] 
      } 
     } ] 
}, 
resolve: { 
    extensions: [ '.js' ] 
}, 
plugins: [ 
    new webpack.BannerPlugin({banner: '#!/usr/bin/env node', raw: true 
}) 
] 
, 
    externals: nodeModules 
}; 

주 : 나는이 index.js 파일이 들어있는 폴더 webpack_bundle를 얻을 webpack 명령을 실행할 때 나는 상당히 간결 현재

에 대한 코드 예제를 단순화 - 인덱스 .js 파일에는 종속성 config.jsread.js이 포함되어 있습니다. 그러나 read.js 종속성을 index.js 파일에 번들로 제공하지만 config.js 종속성은 번들로 제공되는 webpack 출력에 필요한 별도의 파일에 외부에 머물러 있기를 바랍니다. 따라서 webpack_bundle 폴더에는 webpack 명령 (index.jsconfig.js)을 실행 한 후 두 개의 파일이 있어야합니다. 외부 개체 config: './config.js'에 다음 키 값을 추가하여 외부 개체를 수정하려고 시도했지만이 방법은 작동하지 않습니다. 또한 엔트리 포인트로 config.js를 지정하여 추가 엔트리 포인트를 만들었지 만 이것도 작동하지 않았습니다. 나는 이것을 이해할 수 없으며 webpack 문서는 이것을 달성하는 방법에 대해 명확하지 않습니다. 도와주세요! 별도의 번들에 설정을 원하는 경우에

+0

여기에 문서화 된 로더 배열에서 제외를 사용하십시오. https://webpack.github.io/docs/configuration.html#module-loaders –

+0

제안을 시도했으나 실현 목표를 달성하지 못했습니다. – Dev

답변

3

, 당신은 require.ensure와 동적 config.js 파일을 가져 와서하는 분리 점를 만들 수 있습니다

require.ensure([], function() { 
    let config = require('./config.js'); 
}); 

귀하의 설정은 별도의 번들에있을 것입니다 .

편집 : 당신은 당신의 설정 파일이 웹팩에 의해 번들로 제공하지 않으려면

, 당신이 IgnorePlugin 사용할 수있을 것 같아요 :

module.exports = { 
    //... 
    plugins: [new webpack.IgnorePlugin(/^\.\/config\.js$/)] 
} 

그리고 사용 copy-webpack-pluginconfig.js 파일을 복사하십시오.

+0

감사하지만 이것은 무엇이 아닙니다. 나는 달성하기를 원하지만 별도의 파일을 원한다. webpack에 의해 처리 된 별도의 번들을 원한다. config.js 파일을 수정하지 않고 그대로 유지하고 싶다. 그래서 본질적으로 나는 webpack이 파일을 무시하지만 require 호출을 유지하기를 원한다. – Dev

+0

내 대답을 편집했습니다. IgnorePlugin 플러그인을 테스트 해 보시기 바랍니다. –

+0

나는 당신의 제안에 따라 플러그인을 무시하려했지만 파일은 여전히 ​​webpack에 포함되어있어 무시되지 않는다. ( – Dev

관련 문제