Skip to content

Commit f91ff29

Browse files
committed
build: add less support
1 parent 6d67916 commit f91ff29

File tree

10 files changed

+106
-15
lines changed

10 files changed

+106
-15
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ yarn build
2626
- [x] Add `eslint` and `stylelint`;
2727
- [x] Add `husky`;
2828
- [x] Add `Jest`;
29-
- [ ] Support less or scss;
29+
- [x] Support less or scss;
3030
- [ ] Npm tool to create project(just like `create-react-app`)
3131

3232
## License

package.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"commit": "git-cz",
77
"test": "jest",
88
"lint:script": "cross-env NODE_ENV=production eslint . --ext .js,.jsx,.ts,.tsx",
9-
"lint:style": "cross-env NODE_ENV=production stylelint \"src/**/*.css\"",
9+
"lint:style": "cross-env NODE_ENV=production stylelint \"src/**/*.less\"",
1010
"start": "cross-env NODE_ENV=development webpack serve --hot",
1111
"build": "cross-env NODE_ENV=production webpack",
1212
"prepare": "husky install"
@@ -54,6 +54,8 @@
5454
"husky": "^6.0.0",
5555
"jest": "^26.6.3",
5656
"jest-transform-stub": "^2.0.0",
57+
"less": "^4.1.1",
58+
"less-loader": "^9.0.0",
5759
"lint-staged": "^11.0.0",
5860
"mini-css-extract-plugin": "^1.6.0",
5961
"postcss": "^8.2.15",

src/components/loading/index.css

-3
This file was deleted.

src/components/loading/index.less

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.color {
2+
color: @black-70;
3+
}

src/components/loading/index.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import classnames from 'classnames';
22

3-
import styles from './index.css';
3+
import styles from './index.less';
44

55
const Loading = () => (
66
<div className="py-5 d-flex justify-content-center">

src/styles/.gitkeep

Whitespace-only changes.

src/styles/variables.less

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
// Some comment less variables
2+
@black-70: rgba(0, 0, 0, 70%);

types.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
declare module '*.css' {
1+
declare module '*.less' {
22
const classNames: Record<string, string>;
33
export default classNames;
44
}

webpack.config.js

+30-3
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ const config = {
3131
module: {
3232
rules: [
3333
{
34-
test: /.css$/,
34+
test: /.less$/,
3535
exclude: /node_modules/,
3636
use: [
3737
{
38-
loader: "style-loader",
38+
loader: __DEV__ ? "style-loader" : MiniCssExtractPlugin.loader,
3939
},
4040
{
4141
loader: "css-loader",
@@ -50,10 +50,18 @@ const config = {
5050
sourceMap: false,
5151
},
5252
},
53+
{
54+
loader: 'less-loader',
55+
options: {
56+
sourceMap: false,
57+
additionalData:
58+
"@import '@/styles/variables';\n",
59+
},
60+
},
5361
],
5462
},
5563
{
56-
test: /.css$/,
64+
test: /.(css|less)$/,
5765
include: /node_modules/,
5866
use: [
5967
{
@@ -71,6 +79,12 @@ const config = {
7179
sourceMap: false,
7280
},
7381
},
82+
{
83+
loader: 'less-loader',
84+
options: {
85+
sourceMap: false,
86+
},
87+
},
7488
],
7589
},
7690
{
@@ -99,6 +113,19 @@ const config = {
99113
},
100114
],
101115
},
116+
{
117+
test: /\.svg$/,
118+
issuer: /\.less$/,
119+
use: [
120+
{
121+
loader: 'url-loader',
122+
options: {
123+
limit: 4096,
124+
name: 'images/[name].[hash:8].[ext]',
125+
},
126+
},
127+
],
128+
},
102129
],
103130
},
104131
plugins: [new WebpackBar(), new HtmlWebpackPlugin()],

yarn.lock

+65-5
Original file line numberDiff line numberDiff line change
@@ -3363,6 +3363,13 @@ [email protected]:
33633363
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
33643364
integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
33653365

3366+
copy-anything@^2.0.1:
3367+
version "2.0.3"
3368+
resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.3.tgz#842407ba02466b0df844819bbe3baebbe5d45d87"
3369+
integrity sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==
3370+
dependencies:
3371+
is-what "^3.12.0"
3372+
33663373
copy-concurrently@^1.0.0:
33673374
version "1.0.5"
33683375
resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
@@ -4128,7 +4135,7 @@ envinfo@^7.7.3:
41284135
resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475"
41294136
integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==
41304137

4131-
errno@^0.1.3, errno@~0.1.7:
4138+
errno@^0.1.1, errno@^0.1.3, errno@~0.1.7:
41324139
version "0.1.8"
41334140
resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
41344141
integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
@@ -5698,7 +5705,7 @@ husky@^6.0.0:
56985705
resolved "https://registry.yarnpkg.com/husky/-/husky-6.0.0.tgz#810f11869adf51604c32ea577edbc377d7f9319e"
56995706
integrity sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ==
57005707

5701-
[email protected], iconv-lite@^0.4.24:
5708+
[email protected], iconv-lite@^0.4.24, iconv-lite@^0.4.4:
57025709
version "0.4.24"
57035710
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
57045711
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
@@ -5725,6 +5732,11 @@ ignore@^5.0.5, ignore@^5.1.1, ignore@^5.1.4, ignore@^5.1.8:
57255732
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
57265733
integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
57275734

5735+
image-size@~0.5.0:
5736+
version "0.5.5"
5737+
resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
5738+
integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=
5739+
57285740
import-fresh@^3.0.0, import-fresh@^3.2.1:
57295741
version "3.3.0"
57305742
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
@@ -6328,6 +6340,11 @@ is-utf8@^0.2.1:
63286340
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
63296341
integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
63306342

6343+
is-what@^3.12.0:
6344+
version "3.14.1"
6345+
resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1"
6346+
integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==
6347+
63316348
is-windows@^1.0.1, is-windows@^1.0.2:
63326349
version "1.0.2"
63336350
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
@@ -7017,6 +7034,30 @@ latest-version@^5.1.0:
70177034
dependencies:
70187035
package-json "^6.3.0"
70197036

7037+
less-loader@^9.0.0:
7038+
version "9.0.0"
7039+
resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-9.0.0.tgz#71a0b530174bddf89bb11a5019dd725f54df4791"
7040+
integrity sha512-bPen1xeGTZuYFFobcdz9kMUVgSSSDZQJtyhawtCtcz1QboQOwhkI7uCwp5UO+IZpO+LJS1W73YwxsufbBT6SBQ==
7041+
dependencies:
7042+
klona "^2.0.4"
7043+
7044+
less@^4.1.1:
7045+
version "4.1.1"
7046+
resolved "https://registry.yarnpkg.com/less/-/less-4.1.1.tgz#15bf253a9939791dc690888c3ff424f3e6c7edba"
7047+
integrity sha512-w09o8tZFPThBscl5d0Ggp3RcrKIouBoQscnOMgFH3n5V3kN/CXGHNfCkRPtxJk6nKryDXaV9aHLK55RXuH4sAw==
7048+
dependencies:
7049+
copy-anything "^2.0.1"
7050+
parse-node-version "^1.0.1"
7051+
tslib "^1.10.0"
7052+
optionalDependencies:
7053+
errno "^0.1.1"
7054+
graceful-fs "^4.1.2"
7055+
image-size "~0.5.0"
7056+
make-dir "^2.1.0"
7057+
mime "^1.4.1"
7058+
needle "^2.5.2"
7059+
source-map "~0.6.0"
7060+
70207061
leven@^3.1.0:
70217062
version "3.1.0"
70227063
resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
@@ -7260,7 +7301,7 @@ lz-string@^1.4.4:
72607301
resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26"
72617302
integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=
72627303

7263-
make-dir@^2.0.0:
7304+
make-dir@^2.0.0, make-dir@^2.1.0:
72647305
version "2.1.0"
72657306
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
72667307
integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
@@ -7472,7 +7513,7 @@ mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.19,
74727513
dependencies:
74737514
mime-db "1.47.0"
74747515

7475-
7516+
[email protected], mime@^1.4.1:
74767517
version "1.6.0"
74777518
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
74787519
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
@@ -7667,6 +7708,15 @@ natural-compare@^1.4.0:
76677708
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
76687709
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
76697710

7711+
needle@^2.5.2:
7712+
version "2.6.0"
7713+
resolved "https://registry.yarnpkg.com/needle/-/needle-2.6.0.tgz#24dbb55f2509e2324b4a99d61f413982013ccdbe"
7714+
integrity sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==
7715+
dependencies:
7716+
debug "^3.2.6"
7717+
iconv-lite "^0.4.4"
7718+
sax "^1.2.4"
7719+
76707720
76717721
version "0.6.2"
76727722
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
@@ -8176,6 +8226,11 @@ parse-json@^5.0.0:
81768226
json-parse-even-better-errors "^2.3.0"
81778227
lines-and-columns "^1.1.6"
81788228

8229+
parse-node-version@^1.0.1:
8230+
version "1.0.1"
8231+
resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b"
8232+
integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
8233+
81798234
parse-passwd@^1.0.0:
81808235
version "1.0.0"
81818236
resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
@@ -9535,6 +9590,11 @@ sane@^4.0.3:
95359590
minimist "^1.1.1"
95369591
walker "~1.0.5"
95379592

9593+
sax@^1.2.4:
9594+
version "1.2.4"
9595+
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
9596+
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
9597+
95389598
saxes@^5.0.1:
95399599
version "5.0.1"
95409600
resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d"
@@ -10618,7 +10678,7 @@ tsconfig-paths@^3.9.0:
1061810678
minimist "^1.2.0"
1061910679
strip-bom "^3.0.0"
1062010680

10621-
tslib@^1.8.1, tslib@^1.9.0:
10681+
tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0:
1062210682
version "1.14.1"
1062310683
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
1062410684
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==

0 commit comments

Comments
 (0)