我写了一些npm脚本,在发布到npm之前构建./lib
目录
1.脚本负责将es6
中的所有*.js
./src/components/
个文件转换为es5
语法,然后将文件复制到./lib
(相同结构)。 />
这是脚本:
"cross-env NODE_ENV=production babel ./src/components --out-dir ./lib --ignore spec.js --copy-files"
这是.babelrc
文件:
{
"presets": [
"react",
"stage-1"
],
"env": {
"development": {
"presets": [
"latest",
"react-hmre"
]
},
"production": {
"presets": [
[
"latest",
"es2015"
]
],
"plugins": [
"transform-react-constant-elements",
"transform-react-remove-prop-types",
[
"transform-imports",
{
"react-bootstrap": {
"transform": "react-bootstrap/lib/${member}",
"preventFullImport": true
},
"lodash": {
"transform": "lodash/${member}",
"preventFullImport": true
}
}
]
]
},
"test": {
"presets": [
"latest"
]
}
}
}
我有另一个脚本负责将.less
文件转换为.css
并将其复制到./lib
(相同结构):
"lessc-glob ./src/components/**/*.less lib"
一切都按预期运作良好,但我现在有一个问题。我import
文件中的.js
指的是.less
个文件,但我需要将其更改为.css
个扩展名。
为了清楚起见,
我现在拥有的是:
import css from './styles.less';
转换为:
var _styles = require('./styles.less');
但我希望它转换为:
var _styles = require('./styles.css');
答案 0 :(得分:1)
replace可以安装并用于查找 .less 的实例,并在生成的ES5 .js
文件中用 .css 替换它们第
npm脚本
将replace
脚本添加到package.json
,如下所示:
...
"scripts": {
...
"replace": "replace \".less\" \".css\" ./lib/components/ -r --include=\"*.js\""
},
...
然后可以将对replace
脚本的调用链接到负责转换所有es6 *.js
文件的脚本的末尾。 E.g。
...
"scripts": {
...
"quux": "cross-env NODE_ENV=production babel ./src/components --out-dir ./lib --ignore spec.js --copy-files && npm run replace",
"replace": "replace \".less\" \".css\" ./lib/components/ -r --include=\"*.js\""
...
},
...
请注意 && npm run replace
部分已添加到当前quux
脚本的末尾。
我假设components
文件夹也被复制到lib
文件夹。如果不是,那么./lib/components/
脚本中的replace
部分将需要更改为./lib/
。