Skip to content

Commit 41698ab

Browse files
committed
Made task perform installation and config
Install dependencies Write package.json scripts Create files
1 parent 8c4c9ef commit 41698ab

4 files changed

Lines changed: 77 additions & 10 deletions

File tree

.eslintrc.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{
2-
"extends": "eslint:recommended",
3-
"parserOptions": {
4-
"ecmaVersion": 6
5-
},
6-
"env": {
7-
"node": true
8-
}
9-
}
2+
"extends": "eslint:recommended",
3+
"parserOptions": {
4+
"ecmaVersion": 6
5+
},
6+
"env": {
7+
"node": true
8+
}
9+
}

index.js

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,39 @@
1-
function task() {}
1+
const { packageJson, install, copyFiles, makeDirs } = require("mrm-core");
2+
const fs = require("fs");
3+
const path = require("path");
24

3-
module.exports = task;
5+
module.exports = webpackTask;
6+
7+
function webpackTask() {
8+
installDependencies();
9+
writeFiles();
10+
writePackageJsonScripts();
11+
}
12+
13+
function installDependencies() {
14+
const webpackPackages = ["webpack", "webpack-cli", "webpack-dev-server"];
15+
const loaderPackages = ["babel-loader", "style-loader", "css-loader"];
16+
const loaderDependencies = ["@babel/core", "@babel/preset-env"];
17+
install([...webpackPackages, ...loaderPackages, ...loaderDependencies], {
18+
yarn: true,
19+
});
20+
}
21+
22+
function writeFiles() {
23+
copyFiles(path.join(__dirname, "templates"), "webpack.config.js");
24+
copyFiles(path.join(__dirname, "templates"), "index.html");
25+
makeDirs("src");
26+
const indexJsPath = path.join("src", "index.js");
27+
if (!fs.existsSync(indexJsPath)) {
28+
fs.writeFileSync(indexJsPath, "");
29+
console.info(`Create ${indexJsPath}`);
30+
}
31+
}
32+
33+
function writePackageJsonScripts() {
34+
packageJson()
35+
.setScript("start:dev", "webpack-dev-server")
36+
.setScript("build:dev", "webpack")
37+
.setScript("build", "webpack --mode production")
38+
.save();
39+
}

templates/index.html

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>Document</title>
7+
</head>
8+
<body>
9+
<script src="main.js"></script>
10+
</body>
11+
</html>

templates/webpack.config.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
module.exports = {
2+
module: {
3+
rules: [
4+
{
5+
test: /\.m?js$/,
6+
exclude: /(node_modules|bower_components)/,
7+
use: {
8+
loader: "babel-loader",
9+
options: {
10+
presets: ["@babel/preset-env"],
11+
},
12+
},
13+
},
14+
{
15+
test: /\.css$/,
16+
use: ["style-loader", "css-loader"],
17+
},
18+
],
19+
},
20+
};

0 commit comments

Comments
 (0)