This PR implements much of the static assets rework ADR [1], including: * `npm run build[-dev]`, and its subcommands, * `npm run webpack[-dev]` and * `npm run compile-sass[-dev]`. This is backwards-compatible. `paver update_assets` should not be affected. The new command warns that it is "experimental" for a few reasons: * `npm run build` will fail in the webpack phase unless you first run `xmodule_assets`. This will be changed soon [2]. * We have tested the new build, but not quite so thoroughly that we'd recommend it as the production default yet. Once the xmodule_assets work lands, we'll share this on the forums so early adopters can try it out. * The commands lack some top-level documentation. Once they stabilize more, we'll add a section to the README that explains how and when to use `npm run build` and its subcommands and its env vars. * `npm run watch` is not yet implemented. References: 1. https://github.com/openedx/edx-platform/blob/master/docs/decisions/0017-reimplement-asset-processing.rst 2. https://github.com/openedx/edx-platform/pull/32685 Part of: https://github.com/openedx/edx-platform/issues/31604
65 lines
2.0 KiB
JavaScript
65 lines
2.0 KiB
JavaScript
/* eslint-env node */
|
|
|
|
'use strict';
|
|
|
|
var Merge = require('webpack-merge');
|
|
var path = require('path');
|
|
var webpack = require('webpack');
|
|
var _ = require('underscore');
|
|
|
|
var commonConfig = require('./webpack.common.config.js');
|
|
|
|
module.exports = _.values(Merge.smart(commonConfig, {
|
|
web: {
|
|
output: {
|
|
filename: '[name].js'
|
|
},
|
|
devtool: 'source-map',
|
|
plugins: [
|
|
new webpack.LoaderOptionsPlugin({
|
|
debug: true
|
|
}),
|
|
new webpack.DefinePlugin({
|
|
'process.env.NODE_ENV': JSON.stringify('development'),
|
|
'process.env.JS_ENV_EXTRA_CONFIG': process.env.JS_ENV_EXTRA_CONFIG || "{}"
|
|
})
|
|
],
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /.scss$/,
|
|
include: [
|
|
/paragon/,
|
|
/font-awesome/
|
|
],
|
|
use: [
|
|
'style-loader',
|
|
{
|
|
loader: 'css-loader',
|
|
options: {
|
|
sourceMap: true,
|
|
modules: true,
|
|
localIdentName: '[name]__[local]'
|
|
}
|
|
},
|
|
{
|
|
loader: 'sass-loader',
|
|
options: {
|
|
data: '$base-rem-size: 0.625; @import "paragon-reset";',
|
|
includePaths: [
|
|
path.join(__dirname, './node_modules/@edx/paragon/src/utils'),
|
|
path.join(__dirname, './node_modules/')
|
|
],
|
|
sourceMap: true
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
watchOptions: {
|
|
ignored: [/node_modules/, /\.git/]
|
|
}
|
|
}
|
|
}));
|