最近は情シス的な業務やサイト制作でもサーバー廻りを担当することが多くなりました。
そのためフロント部分をキャッチアップする目的をかねて、自分のポートフォリオサイトを作成しています。
開発環境を備忘録としてまとめます。
以下に開発環境をまとめます。
npm-scripts
Sass
PostCSS
node-sass
をインストール:$ npm install -D node-sass
postcss-cli
をインストール:$ npm install -D postcss-cli
autoprefixer
をインストール:$ npm install -D autoprefixer
cssnano
をインストール:$ npm install -D cssnano
watch
をインストール:$ npm install -D watch
npm-run-all
をインストール:$ npm install -D npm-run-all
postcss-cli
は、v7系は単体で動作します。v8系はpostcss
と一緒にインストールする必要があります。
node-sass
でscss
ファイルをコンパイル
"css:sass": "node-sass src/sass/style.scss -o dist/css/ --output-style expanded"
autoprefixer
でベンダープレフィックスを付与
"css:prefixer": "postcss --no-map dist/css/style.css --use autoprefixer --replace"
package.json
のbrowserslist
プロパティーに対象ブラウザを設定
cssnano
でCSSをminify
"css:nano": "postcss public/css/style.css --use cssnano --replace"
no-map
は付与しない)"css:build": "run-s css:sass css:prefixer css:nano"
watch
でscss
を監視して変更があった場合にcss:build
を実行。
"css:build": "run-s css:sass css:prefixer css:nano"
package.jsonのcss関連のnpm scripts
は以下のとおり。
"scripts": {
"css:sass": "node-sass src/sass/style.scss -o public/css/ --output-style expanded",
"css:prefixer": "postcss --no-map public/css/style.css --use autoprefixer --replace",
"css:nano": "postcss public/css/style.css --use cssnano --replace",
"css:build": "run-s css:sass css:prefixer css:nano",
"css:watch": "watch 'npm run css:build' ./src/sass"
}
prettier
をインストール:$ npm install -D prettier
stylelint
をインストール:$ npm install -D stylelint
stylelint-prettier
をインストール:$ npm install -D stylelint-prettier
stylelint-config-prettier
をインストール: $ npm install --save-dev stylelint-config-prettier
stylelint-config-prettier
はprettier
と衝突するルールを全て削除。
.stylelintrc
を作成して以下を記載。
{
"plugins": ["stylelint-prettier"],
"rules": {
"prettier/prettier": true
},
"extends": ["stylelint-prettier/recommended"]
}
"scripts": {
"css:sass": "node-sass src/sass/style.scss -o public/css/ --output-style expanded",
"css:prefixer": "postcss --no-map public/css/style.css --use autoprefixer --replace",
"css:nano": "postcss public/css/style.css --use cssnano --replace",
+ "css:lint": "stylelint 'src/sass/*.scss' --fix",
"css:build": "run-s css:sass css:prefixer css:nano",
"css:watch": "watch 'npm run css:build' ./src/sass",
}
+
がCSS lint実行のために追加したnpm scripts
husky
をインストール: $ npm install husky --save-dev
"husky": {
"hooks": {
"pre-commit": "npm run css:lint"
}
}
Babel
でES5にトランスパイルWebpack
でバンドルPrettier
とESLint
の組み合わせbabel-loader @babel/core @babel/preset-env
をインストール
$ npm install babel-loader @babel/core @babel/preset-env
webpack/webpack-cli
をインストール
$ npm install -D webpack webpack-cli
webpack.config.js
を作成して設定module.exports = {
mode: 'development', // or production
entry: {
index: './src/js/index.js',
foo: './src/js/foo.js',
bar: './src/js/bar.js
},
output: {
filename: '[name].js',
path: __dirname + '/public/js'
},
optimization: {
minimize: true,
},
devtool: "source-map",
module: {
rules: [
{
test: /\.js$/,
use: [
{
loader: 'babel-loader',
options: {
presets: [["@babel/preset-env", { "targets": "defaults" }]]
}
}
]
}
]
}
};
"scripts": {
"docs": "node ./src/js/docs/app.js --gfm",
"css:sass": "node-sass src/sass/style.scss -o public/css/ --output-style expanded",
"css:prefixer": "postcss --no-map public/css/style.css --use autoprefixer --replace",
"css:nano": "postcss public/css/style.css --use cssnano --replace",
"css:lint": "stylelint 'src/sass/*.scss' --fix",
"css:build": "run-s css:sass css:prefixer css:nano",
"css:watch": "watch 'npm run css:build' ./src/sass",
+ "js:build": "webpack",
+ "js:watch": "watch 'npm run js:build' ./src/js",
+ "watch": "run-p css:watch js:watch",
}
+
がJavaScriptビルド関連で追加したnpm scripts
npm run watch
でscss&jsファイルを監視してそれぞれビルドref. Prettierの導入方法 フロントエンド開発で必須のコード整形ツール
prettier
をインストール:$ npm install -D prettier
prettier-eslint
をインストール$ npm install -D prettier-eslint prettier-eslint-cli eslint-config-google
.eslintrc.json
を作成して初期設定{
"extends": ["google"],
"parserOptions": {
"ecmaVersion": 2018
}
}
npm-scripts
に以下を記載。
"scripts": {
"docs": "node ./src/js/docs/app.js --gfm",
"css:sass": "node-sass src/sass/style.scss -o public/css/ --output-style expanded",
"css:prefixer": "postcss --no-map public/css/style.css --use autoprefixer --replace",
"css:nano": "postcss public/css/style.css --use cssnano --replace",
"css:lint": "stylelint 'src/sass/*.scss' --fix",
"css:build": "run-s css:sass css:prefixer css:nano",
"css:watch": "watch 'npm run css:build' ./src/sass",
"js:build": "webpack",
"js:watch": "watch 'npm run js:build' ./src/js",
+ "js:lint": "prettier-eslint --write $PWD/'src/**/*.js'",
"watch": "run-p css:watch js:watch"
},
+
がJavaScript lint関連で追加したnpm scripts
。
$PWD/
を付与しないとgitpodではエラーが発生。
ref. https://github.com/prettier/prettier-eslint-cli/issues/208
package.jsonに以下を追加
"husky": {
"hooks": {
"pre-commit": "npm run js:lint && npm run css:lint"
}
},
AWS EC2 Ubuntu18.04
にデプロイします。
$ cat /etc/os-release
$ sudo apt update
$ sudo apt upgrade
$ apt search {{keywork}} | grep {{keyword}} | less
{{keywork}}
の例:apache2
やphp
$ sudo apt install apache2
20200829時点ではphp7.2
が使用デフォルトで使用可能だった。
$ sudo apt install php7.2
一緒にインストールされたモジュールを確認。
$ php -m
// インストール済モジュール一覧が表示
$ php -m
でphp-mbstring
がインストールされていなかったのでインストール。
$ sudo apt install php-mbstring
mg.hiroshi-sawai.com
Composer
で導入
ドメイン認証はDNSにレコードを追加する。
追加する設定値はmailgunコントロールパネルのDomainで確認。
Composer
をインストールMailgun PHP client
をインストール$ cd /path/to/project
$ curl -sS https://getcomposer.org/installer | php
$ cd /path/to/project
$ ./composer.phar require mailgun/mailgun-php kriswallsmith/buzz nyholm/psr7
// composer.pharでは駄目(パスが通っていないため)
AWS EC2 Ubuntu18.04
を前提として記載。
sh-keygen -m PEM -t rsa -C "info@example.com"
~/.ssh/authorized_keys
に追記$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ mkdir -p /var/www/html
$ git clone git@github.com:xxxxx/example.git
settings
> secret
にSSH接続情報を登録(変数名は任意).github/workflows/deploy.yml
)で使用
.github/workflows/deploy.ymlt
を作成SSHの鍵作成はCircleCIの以下のドキュメントを参照
ref. https://circleci.com/docs/ja/2.0/add-ssh-key/
手順
ターミナルから、ssh-keygen -m PEM -t rsa -C “your_email@example.com” コマンドを入力して鍵を生成します。 詳細については、Secure Shell (SSH) のドキュメントを参照してください。
メモ: CircleCI が SSH 鍵を復号化できるよう、鍵には常に空のパスフレーズを設定してください。 また、CircleCI は OpenSSH のデフォルトのファイル形式をサポートしていません。OpenSSH を使用して鍵を生成する場合は、ssh-keygen -m pem コマンドを使用します。
メモ: 最近 ssh-keygen は、デフォルトで PEM 形式の鍵を生成しないように更新されました。 非公開鍵が —–BEGIN RSA PRIVATE KEY—– で始まらない場合、ssh-keygen -m PEM -t rsa -C “your_email@example.com” コマンドで鍵を生成すると、強制的に PEM 形式で生成できます。
name: Deploy to EC2
on:
push:
branches: [ master ]
jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest
steps:
- name: deploy to ec2
env:
EC2_SECRET_KEY: ${{ secrets.EC2_SECRET_KEY }}
EC2_USER: ${{ secrets.EC2_USER }}
EC2_HOST: ${{ secrets.EC2_HOST }}
run: |
echo "$EC2_SECRET_KEY" > secret_key
chmod 600 secret_key
ssh -oStrictHostKeyChecking=no ${EC2_USER}@${EC2_HOST} -i secret_key "cd /var/www/html/hiroshi-sawai.com/current && git fetch origin master && git reset --hard origin/master"
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。