【发布时间】:2021-02-03 20:26:00
【问题描述】:
编辑:这个问题现在是空的(至少对我来说)。我发现我的升级故障。
Webpack v4.31.0
我不是大师。我试图升级到 v5,但一切都坏了。我快到最后期限了,所以请尽可能将建议限制在 v4。
给定这个webpack.config.js 来编译一个 SCSS 文件:
// const js removed for simplicity
const css = {
entry: {
'frontend.css': `${__dirname}/src/scss/frontend.scss`,
},
output: {
path: `${__dirname}/css`,
filename: '[name]'
},
module: {
rules: [
{
test: /\.scss$/,
exclude: /node_modules/,
// module chain executes from last to first?
use: [
{
loader: 'file-loader',
options: { name: '[name].css', outputPath: '../css/' }
},
// how to minimize?
{ loader: "remove-comments-loader" },
{ loader: 'extract-loader' },
{ loader: 'css-loader', options: { url: false, sourceMap: false } },
{ loader: 'resolve-url-loader' },
{ loader: 'sass-loader', options: { sourceMap: false } }
]
},
]
}
};
// Return array of configurations
module.exports = function () {
return exportModules( [css] );
};
/**
* Merge filetype configs with shared config and return them as an array of objects.
* @param objs
* @return {Array}
*/
const exportModules = ( objs ) => {
const objArr = [];
for ( let i = 0; i < objs.length; i++ ) {
objArr.push( {
...config(),
...objs[i]
} );
}
return objArr;
};
// Shared config options
const config = function () {
return {
mode: 'development',
stats: {
// is there a preset that does this?
colors: true,
hash: false,
version: false,
timings: false,
assets: false,
chunks: false,
modules: false,
reasons: false,
children: false,
source: false,
errors: false,
errorDetails: false,
warnings: false,
publicPath: false
}
}
};
和config根目录下的这个命令:
$ webpack
正在编译和渲染生成的 CSS 文件,其中包含来自 lib/MainTemplate.js 的一堆看似语句的内容
/*** see below ***/
#splash-overlay {
position: fixed;
z-index: 25000000;
top: 0;
left: 0;
bottom: 0;
right: 0;
background: #120016;
display: flex;
justify-content: center;
align-items: center;
}
.splash-link {
text-align: center;
display: inline-block;
width: 100%;
}exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/
这种行为并不一致,有时会输出不同的语句,有时根本不输出。有没有办法绕过配置对象中的这个输出?我做错了吗?
【问题讨论】:
标签: javascript css webpack sass webpack-4