Ich möchte LESS-Präprozessor in meiner Create-React-App verwenden.
React Code
ReactDOM.render(
<form>
<input type="email" data-info="Enter Email" pattern="/\[email protected]\S+\.\S+/" required title="Please enter value" required="required"/>
<input type="submit"/>
</form>
,document.getElementById('root'))
index.less
body{
background: red;
}
So mache ich es
Sie sollten das npm-Paket node-sass-chokidar verwenden:
npm install node-sass-chokidar --save-dev
Fügen Sie dann zu Ihren npm-Skripts in package.json Folgendes hinzu:
"build-css": "node-sass-chokidar src/ -o src/",
"watch-css": "npm run build-css && node-sass-chokidar src/ -o src/ --watch --recursive"
Der Watcher findet jede Sass-Datei in src-Unterverzeichnissen und erstellt daneben eine entsprechende CSS-Datei.
Denken Sie daran, alle CSS-Dateien aus der Quellcodeverwaltung zu entfernen und src/**/*. Css zu Ihrem .gitignore hinzuzufügen.
Schließlich möchten Sie watch-css automatisch mit npm start und build-css als Teil von npm run build ausführen. Installieren Sie dazu das folgende npm-Paket, um zwei Skripts nacheinander ausführen zu können:
npm install --save-dev npm-run-all
Ändern Sie dann den npm-Start und erstellen Sie Skripts in der package.json-Datei wie folgt:
"scripts": {
"build-css": "node-sass-chokidar src/ -o src/",
"watch-css": "npm run build-css && node-sass-chokidar src/ -o src/ --watch --recursive"
"start-js": "react-scripts start",
"start": "npm-run-all -p watch-css start-js",
"build": "npm run build-css && react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject"
}
Weitere Informationen finden Sie unter diesem Link: https://github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/template/README.md#adding-a-css-preprocessor-sass -less-etc
Der einfachste und schmerzloseste Weg, um weniger Unterstützung mit der reacts-App hinzuzufügen, ist die Verwendung von custom-react-scripts
mit create-react-app
für die Unterstützung von LESS/SASS/decorators:
Installieren Sie: npm install -g create-react-app custom-react-scripts
App erstellen: create-react-app <app_name> —scripts-version custom-react-scripts
Beispiel weniger Datei:
.myDiv{ background: gray; }
und dann in deiner Komponente:
import lessStyles from '<less file path>';
<div style={lessStyles.myDiv}>
...
</div>
oder die normale Weise:
import '<less file path>';
<div className="myDiv">
...
</div>
Als Referenz:
Ich hatte ein ähnliches Problem ..__ Fügen Sie einfach die folgenden Zeilen in den Abschnitt mit den Webpack-Konfigurationsregeln ein ( entnommen aus den offiziellen less loader-Beispielen ):
{
test: /\.less$/,
use: [{
loader: 'style-loader' // creates style nodes from JS strings
}, {
loader: 'css-loader' // translates CSS into CommonJS
}, {
loader: 'less-loader' // compiles Less to CSS
}]
},
Natürlich müssen Sie der package.json entsprechende Pakete hinzufügen
Und dann importieren Sie einfach die benötigten Stile in Ihren Code
import './style.less'
Mit einem solchen Ansatz werden Sie keinen zusätzlichen Schritt zum Erstellen zusätzlicher CSS-Dateien einführen.
Mit der create-react-app 2 können Sie dies mit "Create React App Configuration Override" (craco) und craco-less konfigurieren:
craco einrichten:
npm install @craco/craco
in package.json:
"scripts": {
"start": "craco start",
"build": "craco build",
"test": "craco test",
"eject": "craco eject"
},
craco für weniger einrichten:
npm install craco-less
neue Datei erstellen: craco.config.js
module.exports = {
plugins: [
{
plugin: require('craco-less'),
},
],
};