postcss-cli:使用本地与全局安装的 postcss 模块
postcss-cli: using locally vs globally installed postcss modules
如何在本地安装 postcss
模块,并通过全局安装的 postcss-cli
使用它们?
例如:
postcss -u autoprefixer -o style.css index.css
如果我在全局安装了 postcss-cli
和 autoprefixer
,或者两者都在本地安装,则此命令有效。但它不起作用,如果我在全球安装 postcss-cli
,在本地安装 autoprefixer
。
这个问题并不特定于 autoprefixer,因为 autoprefixer 将是一个模块,无论如何我都希望在全局安装什么。任何建议都会有所帮助。
这是我得到的错误,如果 postcss-cli
是全局安装的,而 autoprefixer
是本地安装的:
> postcss -u autoprefixer -o style.css index.css -w
module.js:327
throw err;
^
Error: Cannot find module 'autoprefixer'
at Function.Module._resolveFilename (module.js:325:15)
at Function.Module._load (module.js:276:25)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at /home/user/.nvm/versions/node/v4.4.2/lib/node_modules/postcss-cli/index.js:104:14
at Array.map (native)
at Object.<anonymous> (/home/user/.nvm/versions/node/v4.4.2/lib/node_modules/postcss-cli/index.js:97:24)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
npm ERR! Linux 3.19.0-58-generic
npm ERR! argv "/home/user/.nvm/versions/node/v4.4.2/bin/node" "/home/user/.nvm/versions/node/v4.4.2/bin/npm" "run" "css"
npm ERR! node v4.4.2
npm ERR! npm v2.15.0
npm ERR! code ELIFECYCLE
npm ERR! Node.js@1.0.0 css: `postcss -u autoprefixer -o style.css index.css -w`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the Node.js@1.0.0 css script 'postcss -u autoprefixer -o style.css index.css -w'.
npm ERR! This is most likely a problem with the Node.js package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! postcss -u autoprefixer -o style.css index.css -w
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs Node.js
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!
npm ERR! npm owner ls Node.js
npm ERR! There is likely additional logging output above.
如果您使用的是 postcss-cli,您可以像这样创建一个配置文件:
{
"use": [
"postcss-import",
"postcss-cssnext",
"lost",
"rucksack-css",
"postcss-autoreset",
"postcss-font-magician"
],
"input": "src/app.css",
"output": "css/main.css",
"local-plugins": true,
"autoprefixer": {
"browsers": "last 2 versions"
}
}
注意 "local-plugins": true,
行。来自文档:
Look up plugins starting from node_modules located in the current working directory. Without this option, postcss-cli will look for the plugins in the node_modules in which it is installed - specifically if it is installed globally it will only look for plugins that are globally installed.
如果您不想使用配置文件,您可以使用选项 --local-plugins
。
总是在本地安装是个好主意。您始终可以在 package.json
中创建 NPM 脚本,以便 运行 postcss-cli
更容易,如下所示:
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "node_modules/postcss-cli/bin/postcss -c config.json",
"watch": "node_modules/postcss-cli/bin/postcss -c config.json -w",
"minify": "node_modules/postcss-cli/bin/postcss -c config-minify.json"
},
现在您只需使用:
npm run build
如何在本地安装 postcss
模块,并通过全局安装的 postcss-cli
使用它们?
例如:
postcss -u autoprefixer -o style.css index.css
如果我在全局安装了 postcss-cli
和 autoprefixer
,或者两者都在本地安装,则此命令有效。但它不起作用,如果我在全球安装 postcss-cli
,在本地安装 autoprefixer
。
这个问题并不特定于 autoprefixer,因为 autoprefixer 将是一个模块,无论如何我都希望在全局安装什么。任何建议都会有所帮助。
这是我得到的错误,如果 postcss-cli
是全局安装的,而 autoprefixer
是本地安装的:
> postcss -u autoprefixer -o style.css index.css -w
module.js:327
throw err;
^
Error: Cannot find module 'autoprefixer'
at Function.Module._resolveFilename (module.js:325:15)
at Function.Module._load (module.js:276:25)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at /home/user/.nvm/versions/node/v4.4.2/lib/node_modules/postcss-cli/index.js:104:14
at Array.map (native)
at Object.<anonymous> (/home/user/.nvm/versions/node/v4.4.2/lib/node_modules/postcss-cli/index.js:97:24)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
npm ERR! Linux 3.19.0-58-generic
npm ERR! argv "/home/user/.nvm/versions/node/v4.4.2/bin/node" "/home/user/.nvm/versions/node/v4.4.2/bin/npm" "run" "css"
npm ERR! node v4.4.2
npm ERR! npm v2.15.0
npm ERR! code ELIFECYCLE
npm ERR! Node.js@1.0.0 css: `postcss -u autoprefixer -o style.css index.css -w`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the Node.js@1.0.0 css script 'postcss -u autoprefixer -o style.css index.css -w'.
npm ERR! This is most likely a problem with the Node.js package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! postcss -u autoprefixer -o style.css index.css -w
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs Node.js
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!
npm ERR! npm owner ls Node.js
npm ERR! There is likely additional logging output above.
如果您使用的是 postcss-cli,您可以像这样创建一个配置文件:
{
"use": [
"postcss-import",
"postcss-cssnext",
"lost",
"rucksack-css",
"postcss-autoreset",
"postcss-font-magician"
],
"input": "src/app.css",
"output": "css/main.css",
"local-plugins": true,
"autoprefixer": {
"browsers": "last 2 versions"
}
}
注意 "local-plugins": true,
行。来自文档:
Look up plugins starting from node_modules located in the current working directory. Without this option, postcss-cli will look for the plugins in the node_modules in which it is installed - specifically if it is installed globally it will only look for plugins that are globally installed.
如果您不想使用配置文件,您可以使用选项 --local-plugins
。
总是在本地安装是个好主意。您始终可以在 package.json
中创建 NPM 脚本,以便 运行 postcss-cli
更容易,如下所示:
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "node_modules/postcss-cli/bin/postcss -c config.json",
"watch": "node_modules/postcss-cli/bin/postcss -c config.json -w",
"minify": "node_modules/postcss-cli/bin/postcss -c config-minify.json"
},
现在您只需使用:
npm run build