Пытаюсь при запуске скрипта передать значения в конфиг вебпака, но работает как-то странно. Когда скрипт такой:
"scripts": {
"build": "webpack"
}
То запуск с единственной переменной окружения, например вот так:
npm run build --env mode=development
выдает ошибку: [webpack-cli] Unknown command or entry 'mode=development'
Если поправить скрипт вот так:
"scripts": {
"build": "webpack --env mode=production"
}
и запустить
npm run build --env mode=development
, то работает нормально и в конфиг попадает правильное значение. Т.е. в данном случае попадет development, а не production.
Файл самого конфига (там внутри кстати тоже есть вопрос про console):
тыкconst path = require('path');
module.exports = (settings) => {
console.log("Hello, world!"); // Работает, выводит в виндовую консоль сообщение.
// сonsole.log(settings.mode); // Вызывает ошибку "ReferenceError: сonsole is not defined"
return {
mode: settings.mode, // Получает правильное значение
entry: './src/index.js',
output: {
filename: 'main.js',
path: path.resolve(__dirname, 'dist'),
clean: true
}
}
};
Сначала я подумал, что нельзя передавать произвольные переменные, что надо их все описать в самом скрипте со значениями по умолчанию. Но если такой скрипт
"scripts": {
"build": "webpack --env mode=production"
}
вызвать вот так
npm run build --env mode=development --env foobar=gost
или так
npm run build --env foobar=gost
то переменную foobar я могу прочитать и ошибок не возникает. Т.е. получается, что все-таки можно передавать произвольные переменные. Но почему это не работает, когда переменная всего одна? И почему консоль работает так странно - обычная строка выводится, а вот значение переменной вызывает ошибку ReferenceError: сonsole is not defined?