簡體   English   中英

如何防止webpack捆綁.js文件

[英]How do i prevent a .js file being bundled by webpack

嗨,我目前正在使用webpack將我的項目文件捆綁到一個文件中。 但是,我不希望webpack捆綁我的config.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
};

注意:為了簡潔起見,我已經大大簡化了代碼示例

目前,當我運行webpack命令時,我得到一個文件夾webpack_bundle ,其中包含一個index.js文件 - index.js文件包含依賴項config.jsread.js 但是,我想要的是將read.js依賴項捆綁到index.js文件中,但將config.js依賴項保留在捆綁的webpack輸出所需的單獨文件中。 因此,運行webpack命令后,文件夾webpack_bundle應包含兩個文件 - index.jsconfig.js 我已經嘗試通過將以下鍵值添加到外部對象config: './config.js'來修改外部config: './config.js'但這不起作用。 我還通過將config.js指定為入口點來創建了一個額外的入口點,但這也沒有用。 我無法弄明白這一點,webpack文檔對於如何實現這一目標並不清楚。 請幫忙!

如果您希望將配置放在單獨的包中,可以通過使用require.ensure動態導入config.js文件來創建拆分點

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

然后,您的配置將在一個單獨的包中。

編輯:

如果您不希望Webpack捆綁您的配置文件,我認為您可以使用IgnorePlugin

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

並使用copy-webpack-plugin復制config.js文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM