質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

5583閲覧

npm scriptsでautoprefixerを使いたい

umauman

総合スコア57

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2019/04/05 23:47

編集2019/04/06 18:55

前提・実現したいこと

npm scripts初心者です。
ファイル監視でsassをコンパイルして、ベンダープレフィックスを付与したいと思っていますが、うまくいきません。
下記のpackage.jsonファイルを作成して実行すると、sassのコンパイル部分だけはうまくいきます。(watch機能も動作します)
ただベンダープレフィックスが付与されません。(CSSでflexbox等を使っているのですが..)

インストールするパッケージやpackage.jsonの記述等がよくわからず、助けていただけませんか?

"npm run all"で実行しています。

{ "name": "test", "version": "1.0.0", "description": "", "scripts": { "all": "npm run sass && npm run autoprefixer", "sass": "node-sass src/sass/style.scss dist/css/style.css --watch --output-style expanded", "autoprefixer": "postcss dist/css/style.css --use autoprefixer -d build" }, "dependencies": {}, "devDependencies": { "autoprefixer": "^9.5.0", "node-sass": "^4.11.0", "postcss": "^7.0.14", "postcss-cli": "^6.1.2" }, "browserslist": [ "last 2 versions", "not ie < 11", "Android >= 4", "iOS >= 10" ] }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

以下のようなディレクトリ構成で、

project ├ dist │ └ css ├ src │ └ sass │   └ style.scss └ package.json

package.jsonを以下のように、

JSON

1{ 2 "name": "test", 3 "version": "1.0.0", 4 "description": "", 5 "scripts": { 6 "all": "npm run sass && npm run autoprefixer", 7 "sass": "node-sass src/sass/style.scss dist/css/style.css --output-style expanded", 8 "autoprefixer": "postcss dist/css/style.css --use autoprefixer -d build", 9 "watch": "onchange src/sass/style.scss -- npm run all" 10 }, 11 "dependencies": {}, 12 "devDependencies": { 13 "autoprefixer": "^9.5.0", 14 "node-sass": "^4.11.0", 15 "onchange": "^5.2.0", 16 "postcss": "^7.0.14", 17 "postcss-cli": "^6.1.2" 18 }, 19 "browserslist": [ 20 "last 2 versions", 21 "not ie < 11", 22 "Android >= 4", 23 "iOS >= 10" 24 ] 25}

style.scssを以下のようにしました。

scss

1.box { 2 display: flex; 3 flex-direction: column; 4 width: 100vh; 5 height: 100vh; 6 7 .content { 8 flex: 1; 9 } 10}

この状態で、npm installnpm run watchを実行した後、style.scssの内容を以下のように変更し、保存をすると、project ディレクトリ下に build ディレクトリが作成され、その中にstyle.cssファイルが出来ます。

scss

1.box { 2 display: flex; 3 flex-direction: column; 4 width: 100vh; 5 height: 100vh; 6 7 .content { 8 flex: 1; 9 max-width: 250px; 10 } 11}

style.cssファイルの内容を確認すると、以下のようなコードになっており、無事ベンダープレフィックスの付与された CSS が生成されていることが確認出来ます。

CSS

1.box { 2 display: -webkit-box; 3 display: -ms-flexbox; 4 display: flex; 5 -webkit-box-orient: vertical; 6 -webkit-box-direction: normal; 7 -ms-flex-direction: column; 8 flex-direction: column; 9 width: 100vh; 10 height: 100vh; 11} 12 13.box .content { 14 -webkit-box-flex: 1; 15 -ms-flex: 1; 16 flex: 1; 17 max-width: 250px; 18}

追記

JSON

1{ 2 "name": "test", 3 "version": "1.0.0", 4 "description": "", 5 "scripts": { 6 "all": "npm run sass && npm run autoprefixer", 7 "sass": "node-sass src/sass/style.scss dist/css/style.css --output-style expanded", 8 "autoprefixer": "postcss dist/css/style.css --use autoprefixer --replace", 9 "watch": "onchange src/sass/style.scss -- npm run all" 10 }, 11 "dependencies": {}, 12 "devDependencies": { 13 "autoprefixer": "^9.5.0", 14 "node-sass": "^4.11.0", 15 "onchange": "^5.2.0", 16 "postcss": "^7.0.14", 17 "postcss-cli": "^6.1.2" 18 }, 19 "browserslist": [ 20 "last 2 versions", 21 "not ie < 11", 22 "Android >= 4", 23 "iOS >= 10" 24 ] 25}

投稿2019/04/06 05:17

編集2019/04/06 11:11
s8_chu

総合スコア14731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

umauman

2019/04/06 10:50

ご回答、ありがとうございます。 あまり意味を理解しないまま、package.jsonを記述していましたが dist/css/style.cssを上書きしたいため、"autoprefixer"の" -d build"の部分は削除し、 下記に変更しました。 "autoprefixer": "postcss dist/css/style.css --use autoprefixer", node_modulesを一掃した上でご提示いただいた内容を実行したところ プレフィックスが付くようになりました! ただ、今度は監視機能が動作しなくなってしまいました。 scssファイルを変更してもcssファイルが更新されず、 再びnpm run allするとはじめて更新される状況です。 nodemonも試してみましたが、こちらは記述方法がわからず、 プレフィックスが付与されませんでした。 下記のようにしてみました。(恐らく間違い...) "scripts": { "watch": "nodemon --ext scss --watch src/sass/style.scss --exec 'npm run all'" }, インストールしたnodemon ↓↓↓ "nodemon": "^1.18.10", いただいた記述を拝見するとwatchしそうな雰囲気なので 上手く反映できていないということでしょうか..
s8_chu

2019/04/06 11:11 編集

postcss の replace オプションを使用すると良いと思います。 `package.json`を質問文に追記しました。
umauman

2019/04/06 11:38

何度も本当にありがとうございます。 追記いただいたjsonを使用してnode_modules一式を削除の上、 最初からインストール&実行をしてみましたが 依然、watch機能が働かず...プレフィックスはちゃんと付与されます。 再びnpm run allをするとscssファイルの変更が反映される状況です。
s8_chu

2019/04/06 11:42

こちらの環境では watch 機能は動作しているようです。 どのように動作しないのか、実行したコマンドを含めて詳しく教えていただけませんか?
umauman

2019/04/06 12:13

どのように提示して良いかわからず、質問欄にコマンドプロンプトの内容を追記しました。 警告が色々出てしまっているのでそれが原因でしょうか... "npm run all"をした後に"src/sass/style.scss"を編集してみてもコマンドプロンプトは 何も反応しない状況です。 このような感じで伝わるのかが不安ですが、すみません...
s8_chu

2019/04/06 16:49

実行するコマンドは`npm run all`ではなく、`npm run watch`です。
umauman

2019/04/06 18:57

大変失礼しました。`npm run watch`で動作しました! 根気よくお付き合いいただき本当にありがとうございました。 (追記部分は先の部分と齟齬があるので削除しました)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問