【问题标题】:Apply a loader to only one file in webpack仅将加载器应用于 webpack 中的一个文件
【发布时间】:2018-01-25 22:14:27
【问题描述】:

我是 webpack 的新手。直到现在我一直在使用 gulp 并尝试迁移到 webpack。

在我的 .gulpfile 我有:

var preProcess = require('gulp-preprocess');

gulp.src('app/config/app.constants.js')
.pipe(preProcess({
  context: {
    NODE_ENV: options.env
  }
}))

我在 app/config/app.constants.js 中有以下几行需要在生产中删除:

//@if NODE_ENV='development'
AppConstants.api = 'https://localhost:333/api';
AppConstants.webRoot = 'http://localhost:222';
//@endif

我正在尝试在 wepack.config.js 中完成此操作:

if (!isDev) {
    config.module.rules.push([
        {
            test: ???, // Can't figure out what to put here
            exclude: /(node_modules|bower_components|\.spec\.js)/,
            use: [
                {
                    loader: 'webpack-strip-block',
                    options: {
                        start: '@if NODE_ENV='development'',
                        end: '@endif'
                    }
                }]
        }
    ])
}

两个问题:如何测试单个文件?这是替换gulp-preprocess的正确方法吗?

【问题讨论】:

    标签: javascript webpack gulp


    【解决方案1】:

    要将加载器应用于单个文件,请使用 include 而不是 exclude。这是白名单而不是黑名单。您根本不需要使用test。比如……

    {
        include: 'path/to/your/file',
        use: [{
            loader: 'webpack-strip-block',
            options: {
                start: '@if NODE_ENV='development'',
                end: '@endif'
            }
       }]
    }
    

    【讨论】:

    • 不得不做include: path.resolve(__dirname, 'path/to/your/file')。最后这个加载器对我的问题不起作用,因为它只适用于*/ type cmets 而不是//
    猜你喜欢
    • 1970-01-01
    • 2018-04-08
    • 2017-07-04
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多