Valmistelut
Asenna Node.js
Asenna editoriisi Prettier
Laita asetuksista koodimuotoilu päälle aina kun tiedosto tallennetaan
Ohjeet Atom-editoriin
Asennus
File > Settings > Install > “autosave” & “prettier”
Asetukset
File > Settings > Packages > “autosave” > Settings > ☑️ Enabled
File > Settings > Packages > “prettier” > Settings > ☑️ Format Files on Save
Tallenna esimerkkiprojekti ja suorita
npm install
, tai tee vaiheet 4-7Tee uusi projekti
mkdir npm-package-expert cd npm-package-expert npm init -y
Asenna projektin riippuvuudeksi Babel, Env preset ja Stage 3 preset, sekä Koa -palvelin-framework (
--save-dev
lisää asennettavat riippuvuudetpackage.json
-tiedostoon)npm install --save-dev @babel/cli @babel/node @babel/core @babel/preset-env @babel/preset-stage-3 koa koa-static
Korvaa
package.json
-tiedostonmain
- jascripts
-kentät näillä määrityksillä, ja lisääprivate
-määritys{ "main": "server", "scripts": { "build": "babel src --out-dir lib --source-maps", "dev": "npm run build -- --watch", "start": "babel-node ." }, "private": true }
scripts
-kenttään määritetään muun muassa paketin julkaisuun liittyviä skriptejä, sekä omavalintaisia komentojaYllä mainitut skriptit ovat omavalintaisia ja niitä voi kutsua skriptin nimellä (
npm run <skriptin nimi>
), esimerkiksi:npm run build
Poikkeuksena
start
, jota kutsutaannpm start
Lisää projektikansioon seuraavat tiedostot, kukin oikeaan hakemistoon
[
{
"name": "babel-cli",
"version": "6.24.1",
"releases": 63,
"dependencies": 15,
"dependents": 1726,
"downloadsLastMonth": 1988789,
"openIssues": 294,
"openPullRequests": 109,
"quality": 87,
"popularity": 75,
"maintenance": 99
},
{
"name": "lodash",
"version": "4.17.4",
"releases": 100,
"dependencies": 0,
"dependents": 46210,
"downloadsLastMonth": 44562576,
"openIssues": 0,
"openPullRequests": 0,
"quality": 76,
"popularity": 97,
"maintenance": 100
},
{
"name": "react",
"version": "15.5.4",
"releases": 119,
"dependencies": 4,
"dependents": 12679,
"downloadsLastMonth": 4446041,
"openIssues": 608,
"openPullRequests": 118,
"quality": 94,
"popularity": 90,
"maintenance": 95
},
{
"name": "webpack",
"version": "2.6.1",
"releases": 451,
"dependencies": 21,
"dependents": 4055,
"downloadsLastMonth": 6718003,
"openIssues": 691,
"openPullRequests": 45,
"quality": 93,
"popularity": 88,
"maintenance": 78
},
{
"name": "@angular/common",
"version": "4.1.3",
"releases": 82,
"dependencies": 0,
"dependents": 2296,
"downloadsLastMonth": 1369818,
"openIssues": 1423,
"openPullRequests": 221,
"quality": 84,
"popularity": 76,
"maintenance": 100
},
{
"name": "rimraf",
"version": "2.6.1",
"releases": 44,
"dependencies": 1,
"dependents": 3996,
"downloadsLastMonth": 20235792,
"openIssues": 21,
"openPullRequests": 6,
"quality": 96,
"popularity": 80,
"maintenance": 86
},
{
"name": "yargs",
"version": "8.0.1",
"releases": 138,
"dependencies": 13,
"dependents": 5849,
"downloadsLastMonth": 28522602,
"openIssues": 108,
"openPullRequests": 3,
"quality": 100,
"popularity": 86,
"maintenance": 99
},
{
"name": "express",
"version": "4.15.3",
"releases": 252,
"dependencies": 28,
"dependents": 17385,
"downloadsLastMonth": 12895865,
"openIssues": 103,
"openPullRequests": 45,
"quality": 99,
"popularity": 95,
"maintenance": 97
},
{
"name": "koa",
"version": "2.2.0",
"releases": 64,
"dependencies": 24,
"dependents": 1278,
"downloadsLastMonth": 289573,
"openIssues": 19,
"openPullRequests": 9,
"quality": 93,
"popularity": 62,
"maintenance": 100
},
{
"name": "bootstrap",
"version": "3.3.7",
"releases": 16,
"dependencies": 0,
"dependents": 1912,
"downloadsLastMonth": 1290099,
"openIssues": 227,
"openPullRequests": 62,
"quality": 94,
"popularity": 76,
"maintenance": 98
},
{
"name": "moment",
"version": "2.18.1",
"releases": 49,
"dependencies": 0,
"dependents": 13206,
"downloadsLastMonth": 9319919,
"openIssues": 192,
"openPullRequests": 58,
"quality": 100,
"popularity": 92,
"maintenance": 98
},
{
"name": "chokidar",
"version": "1.7.0",
"releases": 71,
"dependencies": 9,
"dependents": 1934,
"downloadsLastMonth": 9851092,
"openIssues": 62,
"openPullRequests": 5,
"quality": 93,
"popularity": 77,
"maintenance": 97
}
]
const button = (onClick, children) =>
`<button onClick="${onClick.replace(/"/g, '"')}">
${children}
</button>`;
const h1 = children => `<h1>${children}</h1>`;
class App {
constructor(root) {
this.root = root;
this.state = { counter: 0 };
this.setState();
}
setState(nextState) {
this.state = {...this.state, ...nextState};
this.root.innerHTML = this.render();
}
increase() {
this.setState({ counter: this.state.counter + 1 });
}
decrease() {
this.setState({ counter: this.state.counter - 1 });
}
render() {
return `
${h1('Counter')}
<div>${this.state.counter}</div>
${button('app.decrease()', '-')}
${button('app.increase()', '+')}
`;
}
}
const app = new App(document.getElementById('root'));
{
"presets": [
[
"@babel/preset-env", {
"targets": {
"browsers": ["last 2 versions", "safari >= 7"],
"node": "current"
}
}
],
"@babel/preset-stage-3"
]
}
/lib/
/node_modules/
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>npm Package Expert</title>
</head>
<body>
<div id="root"></div>
<script type="text/javascript" src="/lib/index.js"></script>
</body>
</html>
import serve from 'koa-static';
import Koa from 'koa';
const app = new Koa();
app.use(serve('.'));
app.listen(3000);
console.log('listening on port 3000');
Last updated