【发布时间】:2016-03-26 22:41:19
【问题描述】:
我正在努力让 webpack 在这里做我想做的事。基本上,我正在尝试输入两个 CSS 文件和一个 SCSS 文件,并从中输出一个 CSS 文件。
到目前为止我的代码是:
'use strict';
var webpack = require('webpack');
var webpackDir = __dirname;
let path = require('path');
let nodeModulesPath = path.join(webpackDir, 'node_modules');
//Process the SCSS
var ExtractTextPlugin = require('extract-text-webpack-plugin');
let extractCSS = new ExtractTextPlugin('../css/[name].css',{allChunks: true});
function isDev() {
var isDev = true;
if (process.env.NODE_ENV === 'production') {
isDev = false;
}
return isDev;
}
var definePlugin = new webpack.DefinePlugin({
__DEV__: isDev()
});
module.exports = {
resolve: {
modulesDirectories: [webpackDir + '/node_modules'],
alias: {
rootReducers: path.join(webpackDir, '../../../../../themes/myProject-base/lib/myProject-core/register/myProject-redux-base/base-reducers'),
rootActions: path.join(webpackDir, '../../../../../themes/myProject-base/lib/myProject-core/register/myProject-redux-base/base-actions'),
rootUtils: path.join(webpackDir, '../../../../../themes/myProject-base/lib/myProject-core/register/myProject-redux-base/base-utils'),
lunchMenusReducers: path.join(webpackDir, '/src/lunch-menus-common-js/reducers/lunch-menus-reducers'),
lunchMenusActions: path.join(webpackDir, '/src/lunch-menus-common-js/actions/lunch-menus-actions'),
lunchMenusConfigureStore: path.join(webpackDir, '/src/lunch-menus-common-js/configureStore')
}
},
resolveLoader: {
root: nodeModulesPath
},
entry: {
backend: path.resolve(webpackDir + '/src/components/index.js'),
widgetfrontend: path.join(webpackDir, '../../../includes/widget/public-js/scripts/main.js'),
widgetbackend: path.join(webpackDir, '../../../includes/widget/js/scripts/main.js'),
myProjectLunchMenusAdmin: [
path.join(webpackDir, '../../scss/myProject-lunch-menus-admin.scss'),
path.join(nodeModulesPath + 'react-datepicker/dist/react-datepicker.min.css'),
path.join(nodeModulesPath + 'node_modules/quill/dist/*.css')
]
},
output: {
path: path.resolve(webpackDir + '/../'),
filename: '[name].js',
devtoolLineToLine: true
},
plugins: isDev() !== true ? [
extractCSS,
new webpack.optimize.UglifyJsPlugin({minimize: true}),
definePlugin
] : [
extractCSS,
definePlugin
],
module: {
loaders: [
{
test: /(src|myProject-base|widget)\/.+.jsx?$/,
exclude: /node_modules/,
loader: 'babel-loader',
query: {
presets: [
require.resolve('babel-preset-es2015'),
require.resolve('babel-preset-react'),
require.resolve('babel-preset-stage-0')
]
}
},
{
test: /\.scss$/i,
loader: extractCSS.extract(['css','sass'])
},
{
test: /\.jpe?g$|\.gif$|\.png$|\.svg$|\.woff$|\.ttf$/,
exclude: /node_modules/,
loader: 'file'
}
]
}
}
焦点区域是myProjectLunchMenusAdmin - 因为它不接收 CSS + SCSS 文件并输出一个 CSS 文件。
我得到的错误是:
ERROR in multi myProjectLunchMenusAdmin
Module not found: Error: Cannot resolve 'file' or 'directory' /Users/joneslloyd/Documents/MAMP/myProjectv2/wp-content/plugins/myProject-lunch-menus/admin/js/scripts/node_modules/node_modules/quill/dist/*.css in /Users/joneslloyd/Documents/MAMP/myProjectv2/wp-content/plugins/myProject-lunch-menus/admin/js/scripts
@ multi myProjectLunchMenusAdmin
ERROR in ./~/react-datepicker/dist/react-datepicker.min.css
Module parse failed: /Users/joneslloyd/Documents/MAMP/myProjectv2/wp-content/plugins/myProject-lunch-menus/admin/js/scripts/node_modules/react-datepicker/dist/react-datepicker.min.css Line 1: Unexpected token .
You may need an appropriate loader to handle this file type.
在这个阶段,即使是指针/建议也会非常有用!
【问题讨论】:
标签: css merge sass concatenation webpack